diff --git a/src/ui/components/PageHeader.tsx b/src/ui/components/PageHeader.tsx index 0acff8f..e64ceb5 100644 --- a/src/ui/components/PageHeader.tsx +++ b/src/ui/components/PageHeader.tsx @@ -6,6 +6,7 @@ interface PageHeaderProps { title: ReactNode subtitle?: ReactNode actions?: ReactNode + backButton?: ReactNode children?: ReactNode className?: string sticky?: boolean @@ -16,6 +17,7 @@ export function PageHeader({ title, subtitle, actions, + backButton, children, className, sticky = true, @@ -32,18 +34,21 @@ export function PageHeader({ style={sticky ? { top: topOffset } : undefined} >
-
- {subtitle && ( -
- - {subtitle} -
- )} -

- - {title} - -

+
+ {backButton} +
+ {subtitle && ( +
+ + {subtitle} +
+ )} +

+ + {title} + +

+
{actions &&
{actions}
}
diff --git a/src/ui/pages/Characters.tsx b/src/ui/pages/Characters.tsx index 24a9447..26e60fb 100644 --- a/src/ui/pages/Characters.tsx +++ b/src/ui/pages/Characters.tsx @@ -61,7 +61,7 @@ export default function Characters() { } return ( -
+
([]) const [outfits, setOutfits] = useState([]) const [loading, setLoading] = useState(true) - const [selectedCategories, setSelectedCategories] = useState([]) + const [selectedCategory, setSelectedCategory] = useState(null) const [extractorOpen, setExtractorOpen] = useState(false) const [createOutfitOpen, setCreateOutfitOpen] = useState(false) const [viewMode, setViewMode] = useState<'equipments' | 'outfits'>('equipments') @@ -49,7 +49,7 @@ export default function Equipments() { } else { fetchOutfits() } - }, [viewMode, selectedCategories]) + }, [viewMode, selectedCategory]) const fetchItems = async () => { setLoading(true) @@ -58,8 +58,8 @@ export default function Equipments() { limit: '100', } - if (selectedCategories.length > 0) { - query.category = selectedCategories + if (selectedCategory) { + query.category = [selectedCategory] } const res = await client.equipments.$get({ @@ -106,9 +106,7 @@ export default function Equipments() { } const toggleCategory = (category: string) => { - setSelectedCategories((prev) => - prev.includes(category) ? prev.filter((c) => c !== category) : [...prev, category], - ) + setSelectedCategory((prev) => (prev === category ? null : category)) } return ( @@ -157,7 +155,7 @@ export default function Equipments() {
{EQUIPMENT_CATEGORIES.map((cat) => { - const isSelected = selectedCategories.includes(cat.main_category) + const isSelected = selectedCategory === cat.main_category return ( - {/* Header */} -
-
+
+ navigate('/characters')} - className="rounded-full hover:bg-stone-200" + className="rounded-full hover:bg-stone-200 text-stone-600" > - + -
-

- Fitting Room -

-

- Manage looks for{' '} - - {character.name} - -

-
-
- -
+ } + actions={ + + } + className="mb-6 shrink-0" + />
{/* Left: Character Preview */}