diff --git a/src/data/sounds.ts b/src/data/sounds.ts
new file mode 100644
index 0000000..5a194ec
--- /dev/null
+++ b/src/data/sounds.ts
@@ -0,0 +1,14 @@
+import { nature } from './sounds/nature';
+import { rain } from './sounds/rain';
+import { animals } from './sounds/animals';
+import { urban } from './sounds/urban';
+import { things } from './sounds/things';
+import { noise } from './sounds/noise';
+
+import type { Categories } from './types';
+
+export const sounds: {
+ categories: Categories;
+} = {
+ categories: [nature, rain, animals, urban, things, noise],
+};
diff --git a/src/data/sounds.tsx b/src/data/sounds.tsx
deleted file mode 100644
index 252b735..0000000
--- a/src/data/sounds.tsx
+++ /dev/null
@@ -1,337 +0,0 @@
-import {
- GiCricket,
- GiSeagull,
- GiWindow,
- GiWaterfall,
- GiWolfHead,
- GiOwl,
- GiWindchimes,
- GiSoundWaves,
-} from 'react-icons/gi/index';
-import {
- BsFire,
- BsSoundwave,
- BsFillCloudRainFill,
- BsFillCloudRainHeavyFill,
- BsUmbrellaFill,
- BsFillKeyboardFill,
-} from 'react-icons/bs/index';
-import {
- BiSolidTree,
- BiWater,
- BiSolidCoffeeAlt,
- BiSolidTrain,
- BiSolidPlaneAlt,
-} from 'react-icons/bi/index';
-import {
- FaWater,
- FaWind,
- FaLeaf,
- FaDog,
- FaFrog,
- FaCity,
- FaRoad,
- FaKeyboard,
- FaClock,
- FaRegSnowflake,
-} from 'react-icons/fa/index';
-import {
- PiBirdFill,
- PiTentFill,
- PiRoadHorizonFill,
- PiSirenBold,
-} from 'react-icons/pi/index';
-import { MdOutlineThunderstorm, MdSmartToy } from 'react-icons/md/index';
-import { TbScubaMask, TbBowlFilled } from 'react-icons/tb/index';
-import { RiFilePaper2Fill } from 'react-icons/ri/index';
-
-import type { Categories } from './types';
-
-export const sounds: {
- categories: Categories;
-} = {
- categories: [
- {
- icon: ,
- id: 'nature',
- sounds: [
- {
- icon: ,
- id: 'river',
- label: 'River',
- src: '/sounds/nature/river.mp3',
- },
- {
- icon: ,
- id: 'waves',
- label: 'Waves',
- src: '/sounds/nature/waves.mp3',
- },
- {
- icon: ,
- id: 'campfire',
- label: 'Campfire',
- src: '/sounds/nature/campfire.mp3',
- },
- {
- icon: ,
- id: 'wind',
- label: 'Wind',
- src: '/sounds/nature/wind.mp3',
- },
- {
- icon: ,
- id: 'howling-wind',
- label: 'Howling Wind',
- src: '/sounds/nature/howling-wind.mp3',
- },
- {
- icon: ,
- id: 'wind-in-trees',
- label: 'Wind in Trees',
- src: '/sounds/nature/wind-in-trees.mp3',
- },
- {
- icon: ,
- id: 'waterfall',
- label: 'Waterfall',
- src: '/sounds/nature/waterfall.mp3',
- },
- {
- icon: ,
- id: 'underwater',
- label: 'Underwater',
- src: '/sounds/nature/underwater.mp3',
- },
- {
- icon: ,
- id: 'walk-in-snow',
- label: 'Walk in Snow',
- src: '/sounds/nature/walk-in-snow.mp3',
- },
- {
- icon: ,
- id: 'walk-on-leaves',
- label: 'Walk on Leaves',
- src: '/sounds/nature/walk-on-leaves.mp3',
- },
- ],
- title: 'Nature',
- },
- {
- icon: ,
- id: 'rain',
- sounds: [
- {
- icon: ,
- id: 'light-rain',
- label: 'Light Rain',
- src: '/sounds/rain/light-rain.mp3',
- },
- {
- icon: ,
- id: 'heavy-rain',
- label: 'Heavy Rain',
- src: '/sounds/rain/heavy-rain.mp3',
- },
- {
- icon: ,
- id: 'thunder',
- label: 'Thunder',
- src: '/sounds/rain/thunder.mp3',
- },
- {
- icon: ,
- id: 'rain-on-window',
- label: 'Rain on Window',
- src: '/sounds/rain/rain-on-window.mp3',
- },
- {
- icon: ,
- id: 'rain-on-umbrella',
- label: 'Rain on Umbrella',
- src: '/sounds/rain/rain-on-umbrella.mp3',
- },
- {
- icon: ,
- id: 'rain-on-tent',
- label: 'Rain on Tent',
- src: '/sounds/rain/rain-on-tent.mp3',
- },
- {
- icon: ,
- id: 'rain-on-leaves',
- label: 'Rain on Leaves',
- src: '/sounds/rain/rain-on-leaves.mp3',
- },
- ],
- title: 'Rain',
- },
- {
- icon: ,
- id: 'animals',
- sounds: [
- {
- icon: ,
- id: 'birds',
- label: 'Birds',
- src: '/sounds/animals/birds.mp3',
- },
- {
- icon: ,
- id: 'seagulls',
- label: 'Seagulls',
- src: '/sounds/animals/seagulls.mp3',
- },
- {
- icon: ,
- id: 'crickets',
- label: 'Crickets',
- src: '/sounds/animals/crickets.mp3',
- },
- {
- icon: ,
- id: 'wolf',
- label: 'Wolf',
- src: '/sounds/animals/wolf.mp3',
- },
- {
- icon: ,
- id: 'owl',
- label: 'Owl',
- src: '/sounds/animals/owl.mp3',
- },
- {
- icon: ,
- id: 'frog',
- label: 'Frog',
- src: '/sounds/animals/frog.mp3',
- },
- ],
- title: 'Animals',
- },
- {
- icon: ,
- id: 'urban',
- sounds: [
- {
- icon: ,
- id: 'cafe',
- label: 'Cafe',
- src: '/sounds/urban/cafe.mp3',
- },
- {
- icon: ,
- id: 'highway',
- label: 'Highway',
- src: '/sounds/urban/highway.mp3',
- },
- {
- icon: ,
- id: 'road',
- label: 'Road',
- src: '/sounds/urban/road.mp3',
- },
- {
- icon: ,
- id: 'ambulance-siren',
- label: 'Ambulance Siren',
- src: '/sounds/urban/ambulance-siren.mp3',
- },
- {
- icon: ,
- id: 'train',
- label: 'Train',
- src: '/sounds/urban/train.mp3',
- },
- {
- icon: ,
- id: 'inside-a-train',
- label: 'Inside a Train',
- src: '/sounds/urban/inside-a-train.mp3',
- },
- {
- icon: ,
- id: 'airport',
- label: 'Airport',
- src: '/sounds/urban/airport.mp3',
- },
- {
- icon: ,
- id: 'airplane',
- label: 'Airplane',
- src: '/sounds/urban/airplane.mp3',
- },
- ],
- title: 'Urban',
- },
- {
- icon: ,
- id: 'things',
- sounds: [
- {
- icon: ,
- id: 'keyboard',
- label: 'Keyboard',
- src: '/sounds/things/keyboard.mp3',
- },
- {
- icon: ,
- id: 'typewriter',
- label: 'Typewriter',
- src: '/sounds/things/typewriter.mp3',
- },
- {
- icon: ,
- id: 'paper',
- label: 'Paper',
- src: '/sounds/things/paper.mp3',
- },
- {
- icon: ,
- id: 'clock',
- label: 'Clock',
- src: '/sounds/things/clock.mp3',
- },
- {
- icon: ,
- id: 'wind-chimes',
- label: 'Wind Chimes',
- src: '/sounds/things/wind-chimes.mp3',
- },
- {
- icon: ,
- id: 'singing-bowl',
- label: 'Singing Bowl',
- src: '/sounds/things/singing-bowl.mp3',
- },
- ],
- title: 'Things',
- },
- {
- icon: ,
- id: 'noise',
- sounds: [
- {
- icon: ,
- id: 'white-noise',
- label: 'White Noise',
- src: '/sounds/noise/white-noise.wav',
- },
- {
- icon: ,
- id: 'pink-noise',
- label: 'Pink Noise',
- src: '/sounds/noise/pink-noise.wav',
- },
- {
- icon: ,
- id: 'brown-noise',
- label: 'Brown Noise',
- src: '/sounds/noise/brown-noise.wav',
- },
- ],
- title: 'Noise',
- },
- ],
-};
diff --git a/src/data/sounds/animals.tsx b/src/data/sounds/animals.tsx
new file mode 100644
index 0000000..aa58216
--- /dev/null
+++ b/src/data/sounds/animals.tsx
@@ -0,0 +1,49 @@
+import { GiCricket, GiSeagull, GiWolfHead, GiOwl } from 'react-icons/gi/index';
+import { FaDog, FaFrog } from 'react-icons/fa/index';
+import { PiBirdFill } from 'react-icons/pi/index';
+
+import type { Category } from '../types';
+
+export const animals: Category = {
+ icon: ,
+ id: 'animals',
+ sounds: [
+ {
+ icon: ,
+ id: 'birds',
+ label: 'Birds',
+ src: '/sounds/animals/birds.mp3',
+ },
+ {
+ icon: ,
+ id: 'seagulls',
+ label: 'Seagulls',
+ src: '/sounds/animals/seagulls.mp3',
+ },
+ {
+ icon: ,
+ id: 'crickets',
+ label: 'Crickets',
+ src: '/sounds/animals/crickets.mp3',
+ },
+ {
+ icon: ,
+ id: 'wolf',
+ label: 'Wolf',
+ src: '/sounds/animals/wolf.mp3',
+ },
+ {
+ icon: ,
+ id: 'owl',
+ label: 'Owl',
+ src: '/sounds/animals/owl.mp3',
+ },
+ {
+ icon: ,
+ id: 'frog',
+ label: 'Frog',
+ src: '/sounds/animals/frog.mp3',
+ },
+ ],
+ title: 'Animals',
+};
diff --git a/src/data/sounds/nature.tsx b/src/data/sounds/nature.tsx
new file mode 100644
index 0000000..58dafd6
--- /dev/null
+++ b/src/data/sounds/nature.tsx
@@ -0,0 +1,75 @@
+import { GiWaterfall } from 'react-icons/gi/index';
+import { BsFire } from 'react-icons/bs/index';
+import { BiSolidTree, BiWater } from 'react-icons/bi/index';
+import { FaWater, FaWind, FaLeaf, FaRegSnowflake } from 'react-icons/fa/index';
+import { TbScubaMask } from 'react-icons/tb/index';
+
+import type { Category } from '../types';
+
+export const nature: Category = {
+ icon: ,
+ id: 'nature',
+ sounds: [
+ {
+ icon: ,
+ id: 'river',
+ label: 'River',
+ src: '/sounds/nature/river.mp3',
+ },
+ {
+ icon: ,
+ id: 'waves',
+ label: 'Waves',
+ src: '/sounds/nature/waves.mp3',
+ },
+ {
+ icon: ,
+ id: 'campfire',
+ label: 'Campfire',
+ src: '/sounds/nature/campfire.mp3',
+ },
+ {
+ icon: ,
+ id: 'wind',
+ label: 'Wind',
+ src: '/sounds/nature/wind.mp3',
+ },
+ {
+ icon: ,
+ id: 'howling-wind',
+ label: 'Howling Wind',
+ src: '/sounds/nature/howling-wind.mp3',
+ },
+ {
+ icon: ,
+ id: 'wind-in-trees',
+ label: 'Wind in Trees',
+ src: '/sounds/nature/wind-in-trees.mp3',
+ },
+ {
+ icon: ,
+ id: 'waterfall',
+ label: 'Waterfall',
+ src: '/sounds/nature/waterfall.mp3',
+ },
+ {
+ icon: ,
+ id: 'underwater',
+ label: 'Underwater',
+ src: '/sounds/nature/underwater.mp3',
+ },
+ {
+ icon: ,
+ id: 'walk-in-snow',
+ label: 'Walk in Snow',
+ src: '/sounds/nature/walk-in-snow.mp3',
+ },
+ {
+ icon: ,
+ id: 'walk-on-leaves',
+ label: 'Walk on Leaves',
+ src: '/sounds/nature/walk-on-leaves.mp3',
+ },
+ ],
+ title: 'Nature',
+};
diff --git a/src/data/sounds/noise.tsx b/src/data/sounds/noise.tsx
new file mode 100644
index 0000000..5042001
--- /dev/null
+++ b/src/data/sounds/noise.tsx
@@ -0,0 +1,30 @@
+import { GiSoundWaves } from 'react-icons/gi/index';
+import { BsSoundwave } from 'react-icons/bs/index';
+
+import type { Category } from '../types';
+
+export const noise: Category = {
+ icon: ,
+ id: 'noise',
+ sounds: [
+ {
+ icon: ,
+ id: 'white-noise',
+ label: 'White Noise',
+ src: '/sounds/noise/white-noise.wav',
+ },
+ {
+ icon: ,
+ id: 'pink-noise',
+ label: 'Pink Noise',
+ src: '/sounds/noise/pink-noise.wav',
+ },
+ {
+ icon: ,
+ id: 'brown-noise',
+ label: 'Brown Noise',
+ src: '/sounds/noise/brown-noise.wav',
+ },
+ ],
+ title: 'Noise',
+};
diff --git a/src/data/sounds/rain.tsx b/src/data/sounds/rain.tsx
new file mode 100644
index 0000000..0fc4691
--- /dev/null
+++ b/src/data/sounds/rain.tsx
@@ -0,0 +1,61 @@
+import {
+ BsFillCloudRainFill,
+ BsFillCloudRainHeavyFill,
+ BsUmbrellaFill,
+} from 'react-icons/bs/index';
+import { GiWindow } from 'react-icons/gi/index';
+import { FaLeaf } from 'react-icons/fa/index';
+import { PiTentFill } from 'react-icons/pi/index';
+import { MdOutlineThunderstorm } from 'react-icons/md/index';
+
+import type { Category } from '../types';
+
+export const rain: Category = {
+ icon: ,
+ id: 'rain',
+ sounds: [
+ {
+ icon: ,
+ id: 'light-rain',
+ label: 'Light Rain',
+ src: '/sounds/rain/light-rain.mp3',
+ },
+ {
+ icon: ,
+ id: 'heavy-rain',
+ label: 'Heavy Rain',
+ src: '/sounds/rain/heavy-rain.mp3',
+ },
+ {
+ icon: ,
+ id: 'thunder',
+ label: 'Thunder',
+ src: '/sounds/rain/thunder.mp3',
+ },
+ {
+ icon: ,
+ id: 'rain-on-window',
+ label: 'Rain on Window',
+ src: '/sounds/rain/rain-on-window.mp3',
+ },
+ {
+ icon: ,
+ id: 'rain-on-umbrella',
+ label: 'Rain on Umbrella',
+ src: '/sounds/rain/rain-on-umbrella.mp3',
+ },
+ {
+ icon: ,
+ id: 'rain-on-tent',
+ label: 'Rain on Tent',
+ src: '/sounds/rain/rain-on-tent.mp3',
+ },
+ {
+ icon: ,
+ id: 'rain-on-leaves',
+ label: 'Rain on Leaves',
+ src: '/sounds/rain/rain-on-leaves.mp3',
+ },
+ ],
+ title: 'Rain',
+};
diff --git a/src/data/sounds/things.tsx b/src/data/sounds/things.tsx
new file mode 100644
index 0000000..1bfb2b5
--- /dev/null
+++ b/src/data/sounds/things.tsx
@@ -0,0 +1,52 @@
+import { GiWindchimes } from 'react-icons/gi/index';
+import { BsFillKeyboardFill } from 'react-icons/bs/index';
+import { FaKeyboard, FaClock } from 'react-icons/fa/index';
+import { MdSmartToy } from 'react-icons/md/index';
+import { TbBowlFilled } from 'react-icons/tb/index';
+import { RiFilePaper2Fill } from 'react-icons/ri/index';
+
+import type { Category } from '../types';
+
+export const things: Category = {
+ icon: ,
+ id: 'things',
+ sounds: [
+ {
+ icon: ,
+ id: 'keyboard',
+ label: 'Keyboard',
+ src: '/sounds/things/keyboard.mp3',
+ },
+ {
+ icon: ,
+ id: 'typewriter',
+ label: 'Typewriter',
+ src: '/sounds/things/typewriter.mp3',
+ },
+ {
+ icon: ,
+ id: 'paper',
+ label: 'Paper',
+ src: '/sounds/things/paper.mp3',
+ },
+ {
+ icon: ,
+ id: 'clock',
+ label: 'Clock',
+ src: '/sounds/things/clock.mp3',
+ },
+ {
+ icon: ,
+ id: 'wind-chimes',
+ label: 'Wind Chimes',
+ src: '/sounds/things/wind-chimes.mp3',
+ },
+ {
+ icon: ,
+ id: 'singing-bowl',
+ label: 'Singing Bowl',
+ src: '/sounds/things/singing-bowl.mp3',
+ },
+ ],
+ title: 'Things',
+};
diff --git a/src/data/sounds/urban.tsx b/src/data/sounds/urban.tsx
new file mode 100644
index 0000000..b210e9d
--- /dev/null
+++ b/src/data/sounds/urban.tsx
@@ -0,0 +1,65 @@
+import {
+ BiSolidCoffeeAlt,
+ BiSolidTrain,
+ BiSolidPlaneAlt,
+} from 'react-icons/bi/index';
+import { FaCity, FaRoad } from 'react-icons/fa/index';
+import { PiRoadHorizonFill, PiSirenBold } from 'react-icons/pi/index';
+
+import type { Category } from '../types';
+
+export const urban: Category = {
+ icon: ,
+ id: 'urban',
+ sounds: [
+ {
+ icon: ,
+ id: 'cafe',
+ label: 'Cafe',
+ src: '/sounds/urban/cafe.mp3',
+ },
+ {
+ icon: ,
+ id: 'highway',
+ label: 'Highway',
+ src: '/sounds/urban/highway.mp3',
+ },
+ {
+ icon: ,
+ id: 'road',
+ label: 'Road',
+ src: '/sounds/urban/road.mp3',
+ },
+ {
+ icon: ,
+ id: 'ambulance-siren',
+ label: 'Ambulance Siren',
+ src: '/sounds/urban/ambulance-siren.mp3',
+ },
+ {
+ icon: ,
+ id: 'train',
+ label: 'Train',
+ src: '/sounds/urban/train.mp3',
+ },
+ {
+ icon: ,
+ id: 'inside-a-train',
+ label: 'Inside a Train',
+ src: '/sounds/urban/inside-a-train.mp3',
+ },
+ {
+ icon: ,
+ id: 'airport',
+ label: 'Airport',
+ src: '/sounds/urban/airport.mp3',
+ },
+ {
+ icon: ,
+ id: 'airplane',
+ label: 'Airplane',
+ src: '/sounds/urban/airplane.mp3',
+ },
+ ],
+ title: 'Urban',
+};