diff --git a/src/components/CountdownRow.js b/src/components/CountdownRow.js
deleted file mode 100644
index b5dcdf5..0000000
--- a/src/components/CountdownRow.js
+++ /dev/null
@@ -1,40 +0,0 @@
-import React from 'react';
-import { Text, View } from 'react-native';
-
-function pad(n) {
- return String(n).padStart(2, '0');
-}
-
-export default function CountdownRow({ styles, cd, accent, subText, pinkMode, numStyle, sepStyle }) {
- const outline = pinkMode
- ? {
- borderColor: '#ff4fa3',
- borderWidth: 1.5,
- borderRadius: 10,
- paddingHorizontal: 8,
- }
- : {};
-
- return (
-
- {cd.hours > 0 && (
- <>
-
- {pad(cd.hours)}
- HRS
-
- :
- >
- )}
-
- {pad(cd.minutes)}
- MIN
-
- :
-
- {pad(cd.seconds)}
- SEC
-
-
- );
-}
diff --git a/src/components/TopControls.js b/src/components/TopControls.js
deleted file mode 100644
index 118a757..0000000
--- a/src/components/TopControls.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import React from 'react';
-import { Platform, Text, TouchableOpacity, View } from 'react-native';
-
-export default function TopControls({
- styles,
- accent,
- pink,
- darkMode,
- pinkMode,
- isFullscreen,
- showBackToMenu,
- showFocus,
- onBackToMenu,
- onToggleDark,
- onTogglePink,
- onToggleFullscreen,
- onFocus,
-}) {
- return (
-
- {showBackToMenu && (
-
- Back To Menu
-
- )}
-
-
-
- {darkMode ? 'Light' : 'Dark'}
-
-
-
- Pink
-
-
- {Platform.OS === 'web' && (
-
-
- {isFullscreen ? 'Exit Full' : 'Fullscreen'}
-
-
- )}
-
- {showFocus && (
-
- Focus
-
- )}
-
-
- );
-}
diff --git a/src/screens/FocusScreen.js b/src/screens/FocusScreen.js
deleted file mode 100644
index 8ba70ae..0000000
--- a/src/screens/FocusScreen.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import React from 'react';
-import { StatusBar, Text, TouchableOpacity, View } from 'react-native';
-import CountdownRow from '../components/CountdownRow';
-
-export default function FocusScreen({
- styles,
- theme,
- screen,
- pinkMode,
- tuIsOver,
- tuCountdown,
- targetTime,
- timerDone,
- timerHr,
- timerMin,
- timerSec,
- onShowUI,
-}) {
- const pinkOutlineText = pinkMode
- ? {
- borderColor: theme.pink,
- borderWidth: 2,
- borderRadius: 12,
- paddingHorizontal: 20,
- paddingVertical: 8,
- }
- : {};
-
- let focusContent = null;
-
- if (screen === 'timeuntil') {
- focusContent = tuIsOver ? (
-
- Time's Up!
-
- ) : tuCountdown ? (
-
-
- until {targetTime?.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
-
-
-
- ) : (
- No timer set
- );
- }
-
- if (screen === 'timer') {
- focusContent = timerDone ? (
-
- Done!
-
- ) : (
-
- TIMER
-
-
- );
- }
-
- return (
-
-
- {focusContent}
-
- Show UI
-
-
- );
-}
diff --git a/src/screens/HomeScreen.js b/src/screens/HomeScreen.js
deleted file mode 100644
index 91c12f8..0000000
--- a/src/screens/HomeScreen.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import React from 'react';
-import { ScrollView, Text, TouchableOpacity, View, Image } from 'react-native';
-import TopControls from '../components/TopControls';
-
-export default function HomeScreen({
- styles,
- theme,
- now,
- pinkMode,
- darkMode,
- isFullscreen,
- onToggleDark,
- onTogglePink,
- onToggleFullscreen,
- onSelectTimeUntil,
- onSelectTimer,
-}) {
- return (
-
-
-
-
- Time Until
-
-
- {}}
- onToggleDark={onToggleDark}
- onTogglePink={onTogglePink}
- onToggleFullscreen={onToggleFullscreen}
- onFocus={() => {}}
- />
-
- SELECT MODE
-
-
- Mode 1: Time Until
-
- Set a target clock time and count down to it
-
-
-
-
- Mode 2: Timer
-
- Set duration in hours, minutes, and seconds
-
-
-
-
- {now.toLocaleTimeString([], {
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- })}
-
-
-
- );
-}
diff --git a/src/screens/TimeUntilScreen.js b/src/screens/TimeUntilScreen.js
deleted file mode 100644
index ed035a3..0000000
--- a/src/screens/TimeUntilScreen.js
+++ /dev/null
@@ -1,173 +0,0 @@
-import React from 'react';
-import { ScrollView, Text, TextInput, TouchableOpacity, View } from 'react-native';
-import CountdownRow from '../components/CountdownRow';
-import TopControls from '../components/TopControls';
-
-export default function TimeUntilScreen({
- styles,
- theme,
- now,
- darkMode,
- pinkMode,
- isFullscreen,
- targetTime,
- tuHour,
- tuMinute,
- tuIsOver,
- tuCountdown,
- onChangeHour,
- onChangeMinute,
- onSetTimer,
- onResetTimer,
- onBackToMenu,
- onToggleDark,
- onTogglePink,
- onToggleFullscreen,
- onFocus,
-}) {
- const isCountingDown = Boolean(tuCountdown) && !tuIsOver;
-
- const pinkOutlineText = pinkMode
- ? {
- borderColor: theme.pink,
- borderWidth: 2,
- borderRadius: 12,
- paddingHorizontal: 20,
- paddingVertical: 8,
- }
- : {};
-
- return (
-
-
-
- Time Until
-
-
-
-
-
- {!isCountingDown && (
- <>
- Set target time (24h)
-
-
- :
-
-
-
-
-
- Set Timer
-
- {targetTime && (
-
- Reset
-
- )}
-
- >
- )}
-
- {isCountingDown && targetTime && (
-
-
- Reset
-
-
- )}
-
- {tuIsOver ? (
-
-
- Time's Up!
-
-
- {targetTime?.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} has been reached
-
-
- ) : tuCountdown ? (
-
-
- until {targetTime?.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
-
-
-
- ) : (
- Enter a time above to start counting down
- )}
-
-
-
- {now.toLocaleTimeString([], {
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- })}
-
-
-
- );
-}
diff --git a/src/screens/TimerScreen.js b/src/screens/TimerScreen.js
deleted file mode 100644
index 49413e4..0000000
--- a/src/screens/TimerScreen.js
+++ /dev/null
@@ -1,195 +0,0 @@
-import React from 'react';
-import { ScrollView, Text, TextInput, TouchableOpacity, View } from 'react-native';
-import CountdownRow from '../components/CountdownRow';
-import TopControls from '../components/TopControls';
-
-export default function TimerScreen({
- styles,
- theme,
- now,
- darkMode,
- pinkMode,
- isFullscreen,
- timerRunning,
- timerDone,
- timerRemaining,
- timerHInput,
- timerMInput,
- timerSInput,
- timerHr,
- timerMin,
- timerSec,
- onChangeH,
- onChangeM,
- onChangeS,
- onStart,
- onPause,
- onResume,
- onReset,
- onBackToMenu,
- onToggleDark,
- onTogglePink,
- onToggleFullscreen,
- onFocus,
-}) {
- const timerActive = timerRunning || timerRemaining > 0 || timerDone;
- const isCountingDown = timerRemaining > 0;
- const pinkOutlineText = pinkMode
- ? {
- borderColor: theme.pink,
- borderWidth: 2,
- borderRadius: 12,
- paddingHorizontal: 20,
- paddingVertical: 8,
- }
- : {};
-
- return (
-
-
-
- Timer
-
-
-
-
-
- {!isCountingDown && !timerDone ? (
- <>
- Set duration
-
-
-
- HRS
-
- :
-
-
- MIN
-
- :
-
-
- SEC
-
-
-
-
- Start
-
- >
- ) : timerDone ? (
-
-
- Done!
-
-
- New Timer
-
-
- ) : (
-
-
-
-
-
-
- {timerRunning ? (
-
- Pause
-
- ) : (
-
- Resume
-
- )}
-
-
- Reset
-
-
-
- )}
-
-
-
- {now.toLocaleTimeString([], {
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- })}
-
-
-
- );
-}
diff --git a/src/styles.js b/src/styles.js
deleted file mode 100644
index 30bb1a4..0000000
--- a/src/styles.js
+++ /dev/null
@@ -1,167 +0,0 @@
-import { StyleSheet } from 'react-native';
-
-export function createStyles() {
- return StyleSheet.create({
- root: { flex: 1 },
- scroll: {
- flexGrow: 1,
- alignItems: 'center',
- justifyContent: 'center',
- padding: 24,
- paddingVertical: 48,
- },
- title: {
- fontSize: 44,
- fontWeight: '900',
- marginBottom: 20,
- letterSpacing: 1,
- },
- logo: {
- width: 100,
- height: 100,
- marginBottom: 20,
- borderRadius: 22,
- },
- topRow: {
- width: '100%',
- maxWidth: 640,
- alignItems: 'center',
- gap: 10,
- marginBottom: 20,
- },
- backMenuBtn: {
- paddingHorizontal: 18,
- paddingVertical: 10,
- borderRadius: 14,
- borderWidth: 1.5,
- },
- toggleRow: {
- flexDirection: 'row',
- flexWrap: 'wrap',
- gap: 10,
- justifyContent: 'center',
- },
- toggleBtn: {
- paddingHorizontal: 16,
- paddingVertical: 8,
- borderRadius: 20,
- borderWidth: 1.5,
- },
- toggleText: { fontSize: 14, fontWeight: '600' },
- modeSelectLabel: {
- fontSize: 12,
- letterSpacing: 2,
- textTransform: 'uppercase',
- marginBottom: 20,
- },
- modeCard: {
- width: '100%',
- maxWidth: 440,
- borderRadius: 22,
- padding: 28,
- borderWidth: 2,
- alignItems: 'center',
- marginBottom: 16,
- shadowColor: '#000',
- shadowOffset: { width: 0, height: 6 },
- shadowOpacity: 0.18,
- shadowRadius: 14,
- elevation: 7,
- },
- modeTitle: {
- fontSize: 26,
- fontWeight: '800',
- marginBottom: 8,
- letterSpacing: 0.5,
- },
- modeDesc: {
- fontSize: 14,
- textAlign: 'center',
- lineHeight: 22,
- },
- card: {
- width: '100%',
- maxWidth: 440,
- borderRadius: 22,
- padding: 28,
- borderWidth: 1.5,
- alignItems: 'center',
- shadowColor: '#000',
- shadowOffset: { width: 0, height: 6 },
- shadowOpacity: 0.2,
- shadowRadius: 16,
- elevation: 8,
- },
- inputLabel: {
- fontSize: 12,
- letterSpacing: 1,
- textTransform: 'uppercase',
- marginBottom: 10,
- },
- inputRow: {
- flexDirection: 'row',
- alignItems: 'center',
- gap: 10,
- marginBottom: 16,
- },
- timerInputGroup: { alignItems: 'center', gap: 4 },
- inputUnit: { fontSize: 11, fontWeight: '600', letterSpacing: 1.5 },
- timeInput: {
- width: 72,
- height: 58,
- borderRadius: 12,
- borderWidth: 2,
- textAlign: 'center',
- fontSize: 28,
- fontWeight: '800',
- },
- colon: { fontSize: 34, fontWeight: '900' },
- btnRow: {
- flexDirection: 'row',
- gap: 12,
- marginTop: 20,
- alignItems: 'center',
- },
- setBtn: {
- paddingHorizontal: 32,
- paddingVertical: 14,
- borderRadius: 14,
- },
- setBtnText: { color: '#fff', fontSize: 16, fontWeight: '700', letterSpacing: 0.5 },
- resetBtn: {
- paddingHorizontal: 20,
- paddingVertical: 13,
- borderRadius: 14,
- borderWidth: 1.5,
- },
- resetBtnText: { fontSize: 15, fontWeight: '600' },
- overContainer: { alignItems: 'center', paddingVertical: 12, gap: 10 },
- overText: { fontSize: 52, fontWeight: '900', letterSpacing: 2 },
- overSub: { fontSize: 15 },
- countdownContainer: { alignItems: 'center', gap: 12 },
- countdownLabel: { fontSize: 13, letterSpacing: 0.5, textTransform: 'uppercase' },
- countdownRow: { flexDirection: 'row', alignItems: 'flex-start', gap: 6, justifyContent: 'center' },
- timeBlock: { alignItems: 'center', gap: 4 },
- countdownNum: { fontSize: 58, fontWeight: '800', lineHeight: 66 },
- countdownUnit: { fontSize: 11, fontWeight: '600', letterSpacing: 1.5 },
- sep: { fontSize: 50, fontWeight: '800', marginTop: 4 },
- placeholder: { fontSize: 15, textAlign: 'center', paddingVertical: 24, lineHeight: 24 },
- clock: { marginTop: 24, fontSize: 13, letterSpacing: 1.5 },
- focusRoot: { alignItems: 'center', justifyContent: 'center', paddingHorizontal: 10 },
- focusCountdown: { alignItems: 'center', gap: 16, width: '100%' },
- focusLabel: { fontSize: 16, letterSpacing: 0.5, textTransform: 'uppercase' },
- focusNum: { fontSize: 72, fontWeight: '800', lineHeight: 80 },
- focusSep: { fontSize: 56, fontWeight: '800', marginTop: 8 },
- focusOverText: { fontSize: 72 },
- focusExitBtn: {
- position: 'absolute',
- bottom: 40,
- right: 32,
- paddingHorizontal: 18,
- paddingVertical: 10,
- borderRadius: 20,
- borderWidth: 1.5,
- },
- focusExitText: { fontSize: 14, fontWeight: '600' },
- });
-}
diff --git a/src/theme.js b/src/theme.js
deleted file mode 100644
index 7fcc147..0000000
--- a/src/theme.js
+++ /dev/null
@@ -1,31 +0,0 @@
-export function getTheme(darkMode, pinkMode) {
- const dark = {
- bg: '#0b1020',
- cardBg: '#131a2a',
- text: '#e6ecff',
- subText: '#93a0bf',
- accent: '#5fb0ff',
- border: '#24304a',
- inputBg: '#0f1727',
- };
-
- const light = {
- bg: '#f7f8fc',
- cardBg: '#ffffff',
- text: '#1d2433',
- subText: '#5f6b85',
- accent: '#1f67ff',
- border: '#d5def2',
- inputBg: '#eef3ff',
- };
-
- const base = darkMode ? dark : light;
- const accent = pinkMode ? '#ff4fa3' : base.accent;
-
- return {
- ...base,
- accent,
- danger: '#ef4444',
- pink: '#ff4fa3',
- };
-}