diff --git a/src/components/categories/categories.tsx b/src/components/categories/categories.tsx index fa87ef0..49ec3e2 100644 --- a/src/components/categories/categories.tsx +++ b/src/components/categories/categories.tsx @@ -1,4 +1,3 @@ -import { useMemo } from 'react'; import { BiSolidTree } from 'react-icons/bi'; import { FaCity } from 'react-icons/fa'; @@ -6,50 +5,31 @@ import { Container } from '@/components/container'; import { Category } from '@/components/category'; interface CategoriesProps { - sounds: { - [id: string]: { - title: string; - sounds: Array<{ - label: string; - src: string; - }>; - }; - }; + categories: Array<{ + id: string; + title: string; + sounds: Array<{ + label: string; + src: string; + }>; + }>; } -export function Categories({ sounds }: CategoriesProps) { - const categories = useMemo(() => { - const idToIcon: { [id: string]: React.ReactNode } = { - nature: , - urban: , - }; - - const ids = Object.keys(sounds); - const categories: Array<{ - icon: React.ReactNode; - title: string; - id: string; - sounds: Array<{ label: string; src: string }>; - }> = []; - - ids.forEach(id => { - const category = sounds[id]; - - categories.push({ - icon: idToIcon[id] || '-', - id: id, - ...category, - }); - }); - - return categories; - }, [sounds]); +export function Categories({ categories }: CategoriesProps) { + const idToIcon: { [id: string]: React.ReactNode } = { + nature: , + urban: , + }; return (
{categories.map(category => ( - + ))}
diff --git a/src/data/sounds.json b/src/data/sounds.json deleted file mode 100644 index 43372e8..0000000 --- a/src/data/sounds.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "sounds": { - "nature": { - "title": "Nature", - "sounds": [ - { - "label": "Rain", - "src": "/sounds/rain.mp3" - }, - { - "label": "Birds", - "src": "/sounds/birds.mp3" - }, - { - "label": "River", - "src": "/sounds/river.mp3" - }, - { - "label": "Thunder", - "src": "/sounds/thunder.mp3" - }, - { - "label": "Crickets", - "src": "/sounds/crickets.mp3" - }, - { - "label": "Waves", - "src": "/sounds/waves.mp3" - }, - { - "label": "Seagulls", - "src": "/sounds/seagulls.mp3" - }, - { - "label": "Campfire", - "src": "/sounds/campfire.mp3" - } - ] - }, - "urban": { - "title": "Urban", - "sounds": [ - { - "label": "Airport", - "src": "/sounds/airport.mp3" - }, - { - "label": "Cafe", - "src": "/sounds/cafe.mp3" - }, - { - "label": "Rain on Window", - "src": "/sounds/rain-on-window.mp3" - } - ] - } - } -} diff --git a/src/data/sounds.ts b/src/data/sounds.ts new file mode 100644 index 0000000..ffd8e72 --- /dev/null +++ b/src/data/sounds.ts @@ -0,0 +1,66 @@ +export const sounds: { + categories: Array<{ + id: string; + title: string; + sounds: Array<{ label: string; src: string }>; + }>; +} = { + categories: [ + { + id: 'nature', + sounds: [ + { + label: 'Rain', + src: '/sounds/rain.mp3', + }, + { + label: 'Birds', + src: '/sounds/birds.mp3', + }, + { + label: 'River', + src: '/sounds/river.mp3', + }, + { + label: 'Thunder', + src: '/sounds/thunder.mp3', + }, + { + label: 'Crickets', + src: '/sounds/crickets.mp3', + }, + { + label: 'Waves', + src: '/sounds/waves.mp3', + }, + { + label: 'Seagulls', + src: '/sounds/seagulls.mp3', + }, + { + label: 'Campfire', + src: '/sounds/campfire.mp3', + }, + ], + title: 'Nature', + }, + { + id: 'urban', + sounds: [ + { + label: 'Airport', + src: '/sounds/airport.mp3', + }, + { + label: 'Cafe', + src: '/sounds/cafe.mp3', + }, + { + label: 'Rain on Window', + src: '/sounds/rain-on-window.mp3', + }, + ], + title: 'Urban', + }, + ], +}; diff --git a/src/pages/index.astro b/src/pages/index.astro index 81499b7..82e2d57 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -4,13 +4,14 @@ import Layout from '@/layouts/layout.astro'; import { Hero } from '@/components/hero'; import { Categories } from '@/components/categories'; -import sounds from '@/data/sounds.json'; +// import sounds from '@/data/sounds.json'; +import { sounds } from '@/data/sounds'; ---
- +