You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.7 KiB
65 lines
1.7 KiB
/** |
|
* Plushie Catalog - lukastitch.corneruniverse.com |
|
* |
|
* AI CODING TOOL INSTRUCTIONS: |
|
* This file contains the list of plushies displayed in the gallery. |
|
* |
|
* Common user requests and how to handle them: |
|
* - "add a plushie" -> add a new object to the plushies array |
|
* - "remove a plushie" -> remove the object with matching name/id |
|
* - "mark as sold" -> set available: false |
|
* - "mark as available" -> set available: true |
|
* - "change plushie description" -> update the description field |
|
* - "update etsy link" -> update the etsyLink field |
|
*/ |
|
|
|
export interface Plushie { |
|
id: string; |
|
name: string; |
|
image: string; |
|
description: string; |
|
size: string; |
|
available: boolean; |
|
etsyLink: string | null; |
|
tags?: string[]; // Optional: helps with search |
|
} |
|
|
|
export const plushies: Plushie[] = [ |
|
// Example entry - replace with real plushies: |
|
// { |
|
// id: 'cozy-bear', |
|
// name: 'Cozy Bear', |
|
// image: '/images/plushies/cozy-bear.jpg', |
|
// description: 'A huggable friend for cold nights.', |
|
// size: '12 inches', |
|
// available: false, |
|
// etsyLink: null, |
|
// tags: ['bear', 'cozy', 'huggable'] |
|
// } |
|
]; |
|
|
|
/** |
|
* Find a plushie by name (case-insensitive partial match) |
|
*/ |
|
export function findPlushie(searchName: string): Plushie | undefined { |
|
const normalized = searchName.toLowerCase().trim(); |
|
return plushies.find( |
|
(p) => |
|
p.name.toLowerCase().includes(normalized) || |
|
p.id.toLowerCase().includes(normalized), |
|
); |
|
} |
|
|
|
/** |
|
* Get available plushies only |
|
*/ |
|
export function getAvailablePlushies(): Plushie[] { |
|
return plushies.filter((p) => p.available); |
|
} |
|
|
|
/** |
|
* Get sold plushies only |
|
*/ |
|
export function getSoldPlushies(): Plushie[] { |
|
return plushies.filter((p) => !p.available); |
|
}
|
|
|