diff --git a/src/components/about.astro b/src/components/about.astro index 7e354fa..72fd439 100644 --- a/src/components/about.astro +++ b/src/components/about.astro @@ -18,10 +18,6 @@ const paragraphs = [ body: 'The beauty of Moodist lies in its simplicity and customization. No complex menus or confusing options – just choose your desired sounds, adjust the volume balance, and hit play. Want to blend the gentle chirping of birds with the soothing sound of rain? No problem! Layer as many sounds as you like to create your personalized soundscape oasis.', title: 'Create Your Soundscape', }, - { - body: 'Moodist offers more than ambient sounds with its suite of productivity tools to keep you organized and focused. Use the built-in pomodoro timer for structured work intervals, jot down ideas in the notepad, and track tasks with the to-do list (coming soon). These tools integrate seamlessly with the ambient soundscapes, creating a personalized environment that fosters focus and relaxation.', - title: 'A Productivity Toolbox', - }, { body: "Whether you're looking to unwind after a long day, enhance your focus during work, or lull yourself into a peaceful sleep, Moodist has the perfect soundscape waiting for you. The best part? It's completely free and open-source, so you can enjoy its benefits without any strings attached. Start using Moodist today and discover your new haven of tranquility and focus!", title: 'Sounds for Every Moment', diff --git a/src/components/menu/items/breathing-exercise.tsx b/src/components/menu/items/breathing-exercise.tsx deleted file mode 100644 index ada0b45..0000000 --- a/src/components/menu/items/breathing-exercise.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { IoMdFlower } from 'react-icons/io/index'; - -import { Item } from '../item'; - -export function BreathingExercise() { - return ( - } - label="Breathing Exercise" - /> - ); -} diff --git a/src/components/menu/items/countdown-timer.tsx b/src/components/menu/items/countdown-timer.tsx deleted file mode 100644 index 51e3714..0000000 --- a/src/components/menu/items/countdown-timer.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { MdOutlineTimer } from 'react-icons/md/index'; - -import { Item } from '../item'; - -export function CountdownTimer() { - return ( - } - label="Countdown Timer" - /> - ); -} diff --git a/src/components/menu/items/index.ts b/src/components/menu/items/index.ts index 08aa347..dda2e17 100644 --- a/src/components/menu/items/index.ts +++ b/src/components/menu/items/index.ts @@ -1,11 +1,7 @@ export { Shuffle as ShuffleItem } from './shuffle'; export { Share as ShareItem } from './share'; export { Donate as DonateItem } from './donate'; -export { Notepad as NotepadItem } from './notepad'; export { Source as SourceItem } from './source'; -export { Pomodoro as PomodoroItem } from './pomodoro'; export { Presets as PresetsItem } from './presets'; export { Shortcuts as ShortcutsItem } from './shortcuts'; export { SleepTimer as SleepTimerItem } from './sleep-timer'; -export { CountdownTimer as CountdownTimerItem } from './countdown-timer'; -export { BreathingExercise as BreathingExerciseItem } from './breathing-exercise'; diff --git a/src/components/menu/items/notepad.tsx b/src/components/menu/items/notepad.tsx deleted file mode 100644 index c7a5b9f..0000000 --- a/src/components/menu/items/notepad.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { MdNotes } from 'react-icons/md/index'; - -import { Item } from '../item'; - -import { useNoteStore } from '@/stores/note'; - -export function Notepad() { - const note = useNoteStore(state => state.note); - - return ( - } - label="Notepad" - /> - ); -} diff --git a/src/components/menu/items/pomodoro.tsx b/src/components/menu/items/pomodoro.tsx deleted file mode 100644 index 5939920..0000000 --- a/src/components/menu/items/pomodoro.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { MdOutlineAvTimer } from 'react-icons/md/index'; - -import { Item } from '../item'; - -export function Pomodoro() { - return ( - } label="Pomodoro" /> - ); -} diff --git a/src/components/menu/menu.tsx b/src/components/menu/menu.tsx index 5cf512c..f68caa1 100644 --- a/src/components/menu/menu.tsx +++ b/src/components/menu/menu.tsx @@ -8,14 +8,10 @@ import { ShuffleItem, ShareItem, DonateItem, - NotepadItem, SourceItem, - PomodoroItem, - CountdownTimerItem, PresetsItem, ShortcutsItem, SleepTimerItem, - BreathingExerciseItem, } from './items'; import { Divider } from './divider'; import { ShareLinkModal } from '@/components/modals/share-link'; @@ -104,12 +100,6 @@ export function Menu() { open('sleepTimer')} /> - - - - - - open('shortcuts')} /> diff --git a/src/components/modals/shortcuts/shortcuts.tsx b/src/components/modals/shortcuts/shortcuts.tsx index d5733b7..290e968 100644 --- a/src/components/modals/shortcuts/shortcuts.tsx +++ b/src/components/modals/shortcuts/shortcuts.tsx @@ -21,18 +21,6 @@ export function ShortcutsModal({ onClose, show }: ShortcutsModalProps) { keys: ['Shift', 'S'], label: 'Share Sounds', }, - { - keys: ['Shift', 'N'], - label: 'Notepad', - }, - { - keys: ['Shift', 'P'], - label: 'Pomodoro Timer', - }, - { - keys: ['Shift', 'B'], - label: 'Breathing Exercise', - }, { keys: ['Shift', 'T'], label: 'Sleep Timer', diff --git a/src/components/tools/about.astro b/src/components/tools/about.astro deleted file mode 100644 index 04fb39c..0000000 --- a/src/components/tools/about.astro +++ /dev/null @@ -1,33 +0,0 @@ ---- -import { Container } from '../container'; - -interface Props { - text: string; -} - -const { text } = Astro.props; ---- - -
- -

About this tool

-

{text}

-
-
- - diff --git a/src/components/tools/breathing/breathing.module.css b/src/components/tools/breathing/breathing.module.css deleted file mode 100644 index 05b9baa..0000000 --- a/src/components/tools/breathing/breathing.module.css +++ /dev/null @@ -1,47 +0,0 @@ -.exercise { - position: relative; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - padding: 75px 0; - margin-top: 12px; - background-color: var(--color-neutral-50); - border: 1px solid var(--color-neutral-200); - border-radius: 8px; - - & .phase { - font-family: var(--font-display); - font-size: var(--font-lg); - font-weight: 600; - } - - & .circle { - position: absolute; - top: 50%; - left: 50%; - z-index: -1; - height: 55%; - aspect-ratio: 1 / 1; - background-image: radial-gradient( - var(--color-neutral-50), - var(--color-neutral-100) - ); - border: 1px solid var(--color-neutral-200); - border-radius: 50%; - transform: translate(-50%, -50%); - } -} - -.selectBox { - width: 100%; - min-width: 0; - height: 45px; - padding: 0 12px; - margin-top: 8px; - font-size: var(--font-sm); - color: var(--color-foreground); - background-color: var(--color-neutral-100); - border: 1px solid var(--color-neutral-200); - border-radius: 8px; -} diff --git a/src/components/tools/breathing/breathing.tsx b/src/components/tools/breathing/breathing.tsx deleted file mode 100644 index 4480bc1..0000000 --- a/src/components/tools/breathing/breathing.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { useState, useEffect } from 'react'; -import { motion } from 'framer-motion'; - -import { Container } from '@/components/container'; - -import styles from './breathing.module.css'; - -type Exercise = 'Box Breathing' | 'Resonant Breathing' | '4-7-8 Breathing'; -type Phase = 'inhale' | 'exhale' | 'holdInhale' | 'holdExhale'; - -export function Breathing() { - const [selectedExercise, setSelectedExercise] = - useState('4-7-8 Breathing'); - - const getAnimationPhases = ( - exercise: Exercise, - ): Array<'inhale' | 'holdInhale' | 'exhale' | 'holdExhale'> => { - switch (exercise) { - case 'Box Breathing': - return ['inhale', 'holdInhale', 'exhale', 'holdExhale']; - case 'Resonant Breathing': - return ['inhale', 'exhale']; - case '4-7-8 Breathing': - return ['inhale', 'holdInhale', 'exhale']; - default: - return ['inhale', 'holdInhale', 'exhale', 'holdExhale']; - } - }; - - const getAnimationDurations = (exercise: Exercise) => { - switch (exercise) { - case 'Box Breathing': - return { exhale: 4, holdExhale: 4, holdInhale: 4, inhale: 4 }; - case 'Resonant Breathing': - return { exhale: 5, inhale: 5 }; - case '4-7-8 Breathing': - return { exhale: 8, holdInhale: 7, inhale: 4 }; - default: - return { exhale: 4, holdExhale: 4, holdInhale: 4, inhale: 4 }; - } - }; - - const getLabel = (phase: Phase) => { - switch (phase) { - case 'inhale': - return 'Inhale'; - case 'exhale': - return 'Exhale'; - default: - return 'Hold'; - } - }; - - const [phase, setPhase] = useState('inhale'); - const [durations, setDurations] = useState( - getAnimationDurations(selectedExercise), - ); - - const animationVariants = { - exhale: { - transform: 'translate(-50%, -50%) scale(1)', - transition: { duration: durations.exhale }, - }, - holdExhale: { - transform: 'translate(-50%, -50%) scale(1)', - transition: { duration: durations.holdExhale || 4 }, - }, - holdInhale: { - transform: 'translate(-50%, -50%) scale(1.5)', - transition: { duration: durations.holdInhale || 4 }, - }, - inhale: { - transform: 'translate(-50%, -50%) scale(1.5)', - transition: { duration: durations.inhale }, - }, - }; - - useEffect(() => { - setDurations(getAnimationDurations(selectedExercise)); - }, [selectedExercise]); - - useEffect(() => { - const phases = getAnimationPhases(selectedExercise); - - let phaseIndex = 0; - - setPhase(phases[phaseIndex]); - - const interval = setInterval( - () => { - phaseIndex = (phaseIndex + 1) % phases.length; - - setPhase(phases[phaseIndex]); - }, - (durations[phases[phaseIndex]] || 4) * 1000, - ); - - return () => clearInterval(interval); - }, [selectedExercise, durations]); - - return ( - -
- -

{getLabel(phase)}

-
- - -
- ); -} diff --git a/src/components/tools/breathing/index.ts b/src/components/tools/breathing/index.ts deleted file mode 100644 index 7049d47..0000000 --- a/src/components/tools/breathing/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Breathing } from './breathing'; diff --git a/src/components/tools/generics/button/button.module.css b/src/components/tools/generics/button/button.module.css deleted file mode 100644 index a96e112..0000000 --- a/src/components/tools/generics/button/button.module.css +++ /dev/null @@ -1,34 +0,0 @@ -.button { - display: flex; - align-items: center; - justify-content: center; - width: 30px; - height: 30px; - font-size: var(--font-sm); - color: var(--color-foreground); - cursor: pointer; - background-color: var(--color-neutral-100); - border: 1px solid var(--color-neutral-200); - border-radius: 4px; - outline: none; - transition: 0.2s; - - &:focus-visible { - outline: 2px solid var(--color-neutral-400); - outline-offset: 2px; - } - - &:hover, - &:focus-visible { - background-color: var(--color-neutral-200); - } - - &.smallIcon { - font-size: var(--font-xsm); - } - - &:disabled { - cursor: not-allowed; - opacity: 0.4; - } -} diff --git a/src/components/tools/generics/button/button.tsx b/src/components/tools/generics/button/button.tsx deleted file mode 100644 index 5828ad6..0000000 --- a/src/components/tools/generics/button/button.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Tooltip } from '@/components/tooltip'; - -import { cn } from '@/helpers/styles'; - -import styles from './button.module.css'; - -interface ButtonProps { - disabled?: boolean; - icon: React.ReactElement; - onClick: () => void; - smallIcon?: boolean; - tooltip: string; -} - -export function Button({ - disabled = false, - icon, - onClick, - smallIcon, - tooltip, -}: ButtonProps) { - return ( - - - - ); -} diff --git a/src/components/tools/generics/button/index.ts b/src/components/tools/generics/button/index.ts deleted file mode 100644 index a039b75..0000000 --- a/src/components/tools/generics/button/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Button } from './button'; diff --git a/src/components/tools/hero.astro b/src/components/tools/hero.astro deleted file mode 100644 index 6d7bd7c..0000000 --- a/src/components/tools/hero.astro +++ /dev/null @@ -1,55 +0,0 @@ ---- -import { Container } from '../container'; - -interface Props { - desc: string; - title: string; -} - -const { desc, title } = Astro.props; ---- - -
- - -

{title}

-

{desc}

-

Part of Moodist

-
-
- - diff --git a/src/components/tools/notepad/button/button.module.css b/src/components/tools/notepad/button/button.module.css deleted file mode 100644 index 4a4e756..0000000 --- a/src/components/tools/notepad/button/button.module.css +++ /dev/null @@ -1,45 +0,0 @@ -.button { - display: flex; - align-items: center; - justify-content: center; - width: 30px; - height: 30px; - font-size: var(--font-sm); - color: var(--color-foreground); - cursor: pointer; - background-color: var(--color-neutral-100); - border: 1px solid var(--color-neutral-200); - border-radius: 4px; - outline: none; - transition: 0.2s; - transition-property: border-color, color, background-color; - - &:focus-visible { - outline: 2px solid var(--color-neutral-400); - outline-offset: 2px; - } - - &.critical { - color: #f43f5e; - border-color: #f43f5e; - - &:hover { - background-color: rgb(244 63 94 / 10%); - } - } - - &.recommended { - font-size: var(--font-xsm); - color: #22c55e; - border-color: #22c55e; - - &:hover { - background-color: rgb(34 197 94 / 10%); - } - } - - &:hover, - &:focus-visible { - background-color: var(--color-neutral-200); - } -} diff --git a/src/components/tools/notepad/button/button.tsx b/src/components/tools/notepad/button/button.tsx deleted file mode 100644 index d3da910..0000000 --- a/src/components/tools/notepad/button/button.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Tooltip } from '@/components/tooltip'; - -import { cn } from '@/helpers/styles'; - -import styles from './button.module.css'; - -interface ButtonProps { - critical?: boolean; - icon: React.ReactElement; - onClick: () => void; - recommended?: boolean; - tooltip: string; -} - -export function Button({ - critical, - icon, - onClick, - recommended, - tooltip, -}: ButtonProps) { - return ( - - - - ); -} diff --git a/src/components/tools/notepad/button/index.ts b/src/components/tools/notepad/button/index.ts deleted file mode 100644 index a039b75..0000000 --- a/src/components/tools/notepad/button/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Button } from './button'; diff --git a/src/components/tools/notepad/index.ts b/src/components/tools/notepad/index.ts deleted file mode 100644 index 8a3fad5..0000000 --- a/src/components/tools/notepad/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Notepad } from './notepad'; diff --git a/src/components/tools/notepad/notepad.module.css b/src/components/tools/notepad/notepad.module.css deleted file mode 100644 index 2dadc40..0000000 --- a/src/components/tools/notepad/notepad.module.css +++ /dev/null @@ -1,44 +0,0 @@ -.header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 8px; - - & .label { - font-size: var(--font-sm); - font-weight: 500; - color: var(--color-foreground-subtle); - } - - & .buttons { - display: flex; - column-gap: 4px; - align-items: center; - } -} - -.textarea { - width: 100%; - height: 350px; - padding: 12px; - line-height: 1.6; - color: var(--color-foreground-subtle); - resize: none; - background-color: var(--color-neutral-50); - border: 1px solid var(--color-neutral-200); - border-radius: 4px; - outline: none; - scroll-padding-bottom: 12px; - - &:focus-visible { - outline: 2px solid var(--color-neutral-400); - outline-offset: 2px; - } -} - -.counter { - margin-top: 8px; - font-size: var(--font-xsm); - color: var(--color-foreground-subtle); - text-align: center; -} diff --git a/src/components/tools/notepad/notepad.tsx b/src/components/tools/notepad/notepad.tsx deleted file mode 100644 index 9ca334e..0000000 --- a/src/components/tools/notepad/notepad.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { BiTrash } from 'react-icons/bi/index'; -import { LuCopy, LuDownload } from 'react-icons/lu/index'; -import { FaCheck } from 'react-icons/fa6/index'; -import { FaUndo } from 'react-icons/fa/index'; - -import { Button } from './button'; - -import { useNoteStore } from '@/stores/note'; -import { useCopy } from '@/hooks/use-copy'; -import { download } from '@/helpers/download'; - -import styles from './notepad.module.css'; -import { Container } from '@/components/container'; - -export function Notepad() { - const note = useNoteStore(state => state.note); - const history = useNoteStore(state => state.history); - const write = useNoteStore(state => state.write); - const words = useNoteStore(state => state.words()); - const characters = useNoteStore(state => state.characters()); - const clear = useNoteStore(state => state.clear); - const restore = useNoteStore(state => state.restore); - - const { copy, copying } = useCopy(); - - return ( - -
-

Your Note

-
-
-
- -