newcandies 0.1.25 ā 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/app-briefs/expo-router/cozynotes/src/app/+not-found.tsx +32 -0
- package/templates/app-briefs/expo-router/cozynotes/src/app/_layout.tsx +1 -9
- package/templates/app-briefs/expo-router/cozynotes/src/app/index.tsx +5 -51
- package/templates/app-briefs/expo-router/cozynotes/src/components/screens/home/note-card.tsx +13 -18
- package/templates/app-briefs/expo-router/cozynotes/src/components/ui/back-button.tsx +2 -2
- package/templates/app-briefs/expo-router/cozynotes/src/lib/constants/index.ts +124 -1
- package/templates/app-briefs/expo-router/cozynotes/src/app/about.tsx +0 -25
- package/templates/app-briefs/expo-router/cozynotes/src/app/note/[id].tsx +0 -39
- package/templates/app-briefs/expo-router/cozynotes/src/app/note/edit.tsx +0 -30
- package/templates/app-briefs/expo-router/cozynotes/src/app/note/new.tsx +0 -26
- package/templates/app-briefs/expo-router/cozynotes/src/app/settings.tsx +0 -24
- package/templates/app-briefs/expo-router/cozynotes/src/lib/constants/notes.ts +0 -136
- /package/templates/app-briefs/expo-router/cozynotes/src/types/{note.d.ts ā types.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Ionicons } from '@expo/vector-icons';
|
|
2
|
+
import { Link, Stack } from 'expo-router';
|
|
3
|
+
import { Pressable, Text, View } from 'react-native';
|
|
4
|
+
import Screen from '~/components/ui/screen';
|
|
5
|
+
import Squircle from '~/components/ui/squircle';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export default function NotFoundScreen() {
|
|
10
|
+
return (
|
|
11
|
+
<Screen>
|
|
12
|
+
<Stack.Screen options={{ title: 'Not Found', headerShown: false }} />
|
|
13
|
+
<View className="flex-1 items-center justify-center px-8">
|
|
14
|
+
<Ionicons name="alert-circle-outline" size={80} color="black" />
|
|
15
|
+
<Text className="mt-6 text-2xl font-bold text-foreground">Page Not Found</Text>
|
|
16
|
+
<Text className="mt-2 text-center text-muted-foreground">
|
|
17
|
+
{"The page you're looking for doesn't exist."}
|
|
18
|
+
</Text>
|
|
19
|
+
<Link href="/" asChild>
|
|
20
|
+
<Pressable className="mt-8">
|
|
21
|
+
<Squircle
|
|
22
|
+
cornerSmoothing={1}
|
|
23
|
+
className="bg-primary px-6 py-3"
|
|
24
|
+
style={{ borderRadius: 14 }}>
|
|
25
|
+
<Text className="font-semibold text-primary-foreground">Go to Home</Text>
|
|
26
|
+
</Squircle>
|
|
27
|
+
</Pressable>
|
|
28
|
+
</Link>
|
|
29
|
+
</View>
|
|
30
|
+
</Screen>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
@@ -4,15 +4,7 @@ import { Slot } from 'expo-router';
|
|
|
4
4
|
import { StatusBar } from 'expo-status-bar';
|
|
5
5
|
|
|
6
6
|
export default function RootLayout() {
|
|
7
|
-
|
|
8
|
-
// Example:
|
|
9
|
-
// import { Stack } from 'expo-router';
|
|
10
|
-
// return (
|
|
11
|
-
// <>
|
|
12
|
-
// <StatusBar style="dark" />
|
|
13
|
-
// <Stack screenOptions={{ headerShown: false }} />
|
|
14
|
-
// </>
|
|
15
|
-
// );
|
|
7
|
+
|
|
16
8
|
|
|
17
9
|
return (
|
|
18
10
|
<>
|
|
@@ -1,61 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Link } from 'expo-router';
|
|
3
|
-
import { FlatList, ImageBackground, Pressable, StyleSheet, View } from 'react-native';
|
|
4
|
-
|
|
5
|
-
import NoteCard from '~/components/screens/home/note-card';
|
|
1
|
+
import { View } from 'react-native';
|
|
6
2
|
import Screen from '~/components/ui/screen';
|
|
7
|
-
import Squircle from '~/components/ui/squircle';
|
|
8
3
|
import Text from '~/components/ui/text';
|
|
9
|
-
import { NOTES } from '~/lib/constants';
|
|
10
4
|
|
|
11
|
-
|
|
12
|
-
'https://github.com/user-attachments/assets/ce07d991-098a-4e14-a759-ecbb0c159b6b';
|
|
5
|
+
|
|
13
6
|
|
|
14
7
|
export default function HomeScreen() {
|
|
15
8
|
return (
|
|
16
9
|
<Screen>
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
resizeMode="cover"
|
|
21
|
-
/>
|
|
22
|
-
|
|
23
|
-
<View className="flex-row items-center justify-between px-6 pb-5 pt-2">
|
|
24
|
-
<View>
|
|
25
|
-
<Text variant="note">Cozy Notes</Text>
|
|
26
|
-
</View>
|
|
27
|
-
<Link href="/settings" asChild>
|
|
28
|
-
<Pressable>
|
|
29
|
-
<Squircle
|
|
30
|
-
cornerSmoothing={1}
|
|
31
|
-
className='size-11 items-center justify-center rounded-md bg-card'
|
|
32
|
-
|
|
33
|
-
>
|
|
34
|
-
<Ionicons name="settings-outline" size={22} color="black" />
|
|
35
|
-
</Squircle>
|
|
36
|
-
</Pressable>
|
|
37
|
-
</Link>
|
|
38
|
-
</View>
|
|
39
|
-
|
|
40
|
-
<FlatList
|
|
41
|
-
data={NOTES}
|
|
42
|
-
keyExtractor={(item) => item.id}
|
|
43
|
-
renderItem={({ item, index }) => <NoteCard note={item} index={index} />}
|
|
44
|
-
contentContainerClassName="px-6 pt-4 pb-60"
|
|
45
|
-
showsVerticalScrollIndicator={false}
|
|
46
|
-
/>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<Link href="/note/new" asChild className='absolute bottom-10 right-10 '>
|
|
50
|
-
<Pressable>
|
|
51
|
-
<Squircle
|
|
52
|
-
cornerSmoothing={1}
|
|
53
|
-
className='size-14 items-center justify-center rounded-2xl bg-primary'
|
|
54
|
-
>
|
|
55
|
-
<Ionicons name="add" size={28} color="#fff" />
|
|
56
|
-
</Squircle>
|
|
57
|
-
</Pressable>
|
|
58
|
-
</Link>
|
|
10
|
+
<View>
|
|
11
|
+
<Text>Home</Text>
|
|
12
|
+
</View>
|
|
59
13
|
</Screen>
|
|
60
14
|
);
|
|
61
15
|
}
|
package/templates/app-briefs/expo-router/cozynotes/src/components/screens/home/note-card.tsx
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { Ionicons } from '@expo/vector-icons';
|
|
2
2
|
import { Link } from 'expo-router';
|
|
3
3
|
import { Pressable, View } from 'react-native';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
5
|
|
|
5
6
|
import Squircle from '~/components/ui/squircle';
|
|
6
7
|
import Text from '~/components/ui/text';
|
|
7
|
-
import { Note } from '~/lib/constants';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get the rotation for the note card
|
|
12
|
+
*/
|
|
10
13
|
const getRotation = (index: number) => {
|
|
11
14
|
const rotations = [-4, 3, -2, 5, -3, 2, -5, 4];
|
|
12
15
|
return rotations[index % rotations.length];
|
|
13
|
-
};
|
|
16
|
+
};
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Get the offset for the note card
|
|
20
|
+
*/
|
|
16
21
|
const getOffset = (index: number) => {
|
|
17
22
|
const offsets = [-50, 60, -40, 70, -55, 50, -35, 65];
|
|
18
23
|
return offsets[index % offsets.length];
|
|
@@ -25,33 +30,23 @@ const NoteCard = ({ note, index }: { note: Note; index: number }) => {
|
|
|
25
30
|
return (
|
|
26
31
|
<Link href={{ pathname: '/note/[id]', params: { id: note.id } }} asChild>
|
|
27
32
|
<Pressable
|
|
33
|
+
className={twMerge('-mb-[60px] self-center')}
|
|
28
34
|
style={{
|
|
29
|
-
marginBottom: -60,
|
|
30
|
-
alignSelf: 'center',
|
|
31
35
|
marginLeft: offsetX,
|
|
32
36
|
transform: [{ rotate: `${rotation}deg` }],
|
|
33
37
|
zIndex: index,
|
|
34
38
|
}}>
|
|
35
39
|
<Squircle
|
|
36
40
|
cornerSmoothing={1}
|
|
37
|
-
className="bg-card"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
height: 324,
|
|
41
|
-
borderRadius: 24,
|
|
42
|
-
padding: 20,
|
|
43
|
-
}}>
|
|
44
|
-
{/* Menu dots */}
|
|
45
|
-
<View style={{ position: 'absolute', top: 16, right: 16 }}>
|
|
46
|
-
<Ionicons name="ellipsis-horizontal" size={18} color="var(--color-muted-foreground)" />
|
|
41
|
+
className="h-80 w-60 rounded-3xl bg-card p-5">
|
|
42
|
+
<View className="absolute right-4 top-4">
|
|
43
|
+
<Ionicons name="ellipsis-horizontal" size={18} color="black" />
|
|
47
44
|
</View>
|
|
48
45
|
|
|
49
|
-
{/* Title */}
|
|
50
46
|
<Text variant="subtitle" className="mb-2 mr-10" numberOfLines={2}>
|
|
51
47
|
{note.title}
|
|
52
48
|
</Text>
|
|
53
49
|
|
|
54
|
-
{/* Content */}
|
|
55
50
|
<Text variant="note" className="opacity-90" numberOfLines={10}>
|
|
56
51
|
{note.content}
|
|
57
52
|
</Text>
|
|
@@ -13,8 +13,8 @@ const BackButton = ({ icon = 'chevron-back' }: BackButtonProps) => {
|
|
|
13
13
|
<Pressable onPress={() => router.back()}>
|
|
14
14
|
<Squircle
|
|
15
15
|
cornerSmoothing={1}
|
|
16
|
-
className="size-12 items-center justify-center bg-card rounded-
|
|
17
|
-
<Ionicons name={icon} size={26} color="
|
|
16
|
+
className="size-12 items-center justify-center bg-card rounded-xl">
|
|
17
|
+
<Ionicons name={icon} size={26} color="black" />
|
|
18
18
|
</Squircle>
|
|
19
19
|
</Pressable>
|
|
20
20
|
);
|
|
@@ -1,2 +1,125 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const NOTES: Note[] = [
|
|
2
|
+
{
|
|
3
|
+
id: '1',
|
|
4
|
+
title: 'Welcome to CozyNote',
|
|
5
|
+
content:
|
|
6
|
+
'This is your first note! CozyNote is a simple and beautiful note-taking app. Start capturing your thoughts, ideas, and memories.',
|
|
7
|
+
createdAt: '2025-02-23T08:00:00Z',
|
|
8
|
+
updatedAt: '2025-02-23T08:00:00Z',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: '2',
|
|
12
|
+
title: 'Meeting Notes',
|
|
13
|
+
content:
|
|
14
|
+
'Discussed Q1 goals and project timelines. Action items: Review budget proposal, Schedule follow-up with design team, Prepare presentation for Friday.',
|
|
15
|
+
createdAt: '2025-02-22T14:30:00Z',
|
|
16
|
+
updatedAt: '2025-02-22T15:45:00Z',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: '3',
|
|
20
|
+
title: 'Shopping List',
|
|
21
|
+
content:
|
|
22
|
+
'- Organic milk\n- Fresh bread\n- Avocados\n- Coffee beans\n- Dark chocolate\n- Olive oil\n- Pasta\n- Tomatoes',
|
|
23
|
+
createdAt: '2025-02-21T09:15:00Z',
|
|
24
|
+
updatedAt: '2025-02-21T09:15:00Z',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: '4',
|
|
28
|
+
title: 'Book Recommendations',
|
|
29
|
+
content:
|
|
30
|
+
'1. Atomic Habits by James Clear\n2. Deep Work by Cal Newport\n3. The Psychology of Money\n4. Thinking, Fast and Slow\n5. The Almanack of Naval Ravikant',
|
|
31
|
+
createdAt: '2025-02-20T19:00:00Z',
|
|
32
|
+
updatedAt: '2025-02-20T19:00:00Z',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: '5',
|
|
36
|
+
title: 'Workout Routine',
|
|
37
|
+
content:
|
|
38
|
+
'Monday: Upper body\nTuesday: Cardio\nWednesday: Lower body\nThursday: Rest\nFriday: Full body\nSaturday: Yoga\nSunday: Rest',
|
|
39
|
+
createdAt: '2025-02-19T07:00:00Z',
|
|
40
|
+
updatedAt: '2025-02-19T07:00:00Z',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: '6',
|
|
44
|
+
title: 'Recipe: Morning Smoothie',
|
|
45
|
+
content:
|
|
46
|
+
'Ingredients:\n- 1 banana\n- 1 cup spinach\n- 1/2 cup frozen berries\n- 1 tbsp almond butter\n- 1 cup oat milk\n\nBlend until smooth. Enjoy!',
|
|
47
|
+
createdAt: '2025-02-18T06:30:00Z',
|
|
48
|
+
updatedAt: '2025-02-18T06:30:00Z',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: '7',
|
|
52
|
+
title: 'Project Ideas',
|
|
53
|
+
content:
|
|
54
|
+
'- Personal portfolio website redesign\n- Mobile app for habit tracking\n- Open source contribution\n- Learn Rust programming\n- Build a CLI tool',
|
|
55
|
+
createdAt: '2025-02-17T21:00:00Z',
|
|
56
|
+
updatedAt: '2025-02-17T21:00:00Z',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: '8',
|
|
60
|
+
title: 'Travel Bucket List',
|
|
61
|
+
content:
|
|
62
|
+
'šÆšµ Japan - Cherry blossom season\nš®šø Iceland - Northern lights\nš³šæ New Zealand - Hobbiton\nš®š¹ Italy - Amalfi Coast\nš¬š· Greece - Santorini',
|
|
63
|
+
createdAt: '2025-02-16T16:00:00Z',
|
|
64
|
+
updatedAt: '2025-02-16T16:00:00Z',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: '9',
|
|
68
|
+
title: 'Daily Affirmations',
|
|
69
|
+
content:
|
|
70
|
+
'I am capable of achieving my goals.\nI embrace challenges as opportunities.\nI am grateful for today.\nI choose positivity and growth.\nI am worthy of success and happiness.',
|
|
71
|
+
createdAt: '2025-02-15T05:00:00Z',
|
|
72
|
+
updatedAt: '2025-02-15T05:00:00Z',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: '10',
|
|
76
|
+
title: 'App Features to Add',
|
|
77
|
+
content:
|
|
78
|
+
'- Dark mode toggle\n- Note categories/tags\n- Search functionality\n- Cloud sync\n- Share notes\n- Rich text formatting\n- Voice notes',
|
|
79
|
+
createdAt: '2025-02-14T11:30:00Z',
|
|
80
|
+
updatedAt: '2025-02-14T11:30:00Z',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: '11',
|
|
84
|
+
title: 'Gratitude Journal',
|
|
85
|
+
content:
|
|
86
|
+
'Today I am grateful for:\n1. A warm cup of coffee\n2. Supportive friends and family\n3. Good health\n4. The opportunity to learn new things\n5. A cozy home',
|
|
87
|
+
createdAt: '2025-02-13T22:00:00Z',
|
|
88
|
+
updatedAt: '2025-02-13T22:00:00Z',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: '12',
|
|
92
|
+
title: 'Podcast Episodes',
|
|
93
|
+
content:
|
|
94
|
+
'Must listen:\n- Huberman Lab: Sleep optimization\n- Lex Fridman: AI discussion\n- Tim Ferriss: Productivity hacks',
|
|
95
|
+
createdAt: '2025-02-12T13:00:00Z',
|
|
96
|
+
updatedAt: '2025-02-12T13:00:00Z',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: '13',
|
|
100
|
+
title: 'Code Snippets',
|
|
101
|
+
content:
|
|
102
|
+
'Useful React patterns:\n- Custom hooks for data fetching\n- Context for global state\n- Memo for performance\n- Suspense for loading states',
|
|
103
|
+
createdAt: '2025-02-11T10:00:00Z',
|
|
104
|
+
updatedAt: '2025-02-11T10:00:00Z',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: '14',
|
|
108
|
+
title: 'Weekend Plans',
|
|
109
|
+
content:
|
|
110
|
+
'Saturday:\n- Morning run at 7am\n- Brunch with Sarah\n- Afternoon coding session\n\nSunday:\n- Sleep in\n- Farmers market\n- Movie night',
|
|
111
|
+
createdAt: '2025-02-10T18:00:00Z',
|
|
112
|
+
updatedAt: '2025-02-10T18:00:00Z',
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
];
|
|
2
116
|
|
|
117
|
+
export const getNoteById = (id: string): Note | undefined => {
|
|
118
|
+
return NOTES.find((note) => note.id === id);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
export const BACKGROUND_IMAGE =
|
|
125
|
+
'https://github.com/user-attachments/assets/ce07d991-098a-4e14-a759-ecbb0c159b6b';
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { View } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import Screen from '~/components/ui/screen';
|
|
4
|
-
import Text from '~/components/ui/text';
|
|
5
|
-
|
|
6
|
-
export default function AboutScreen() {
|
|
7
|
-
// TODO: Build the about screen
|
|
8
|
-
// - Use Stack.Screen to configure native header
|
|
9
|
-
// - Set headerShown: true
|
|
10
|
-
// - Configure headerLeft with custom back button
|
|
11
|
-
// - Configure headerRight with share and info buttons
|
|
12
|
-
// - Display app icon, name, and description
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<Screen>
|
|
16
|
-
<View className="flex-1 items-center justify-center px-8">
|
|
17
|
-
<Text variant="title">CozyNote</Text>
|
|
18
|
-
<Text variant="note" className="text-center mt-6 text-muted-foreground">
|
|
19
|
-
Build this screen with native header configuration
|
|
20
|
-
</Text>
|
|
21
|
-
</View>
|
|
22
|
-
</Screen>
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { View } from 'react-native';
|
|
2
|
-
import { useLocalSearchParams } from 'expo-router';
|
|
3
|
-
|
|
4
|
-
import Screen from '~/components/ui/screen';
|
|
5
|
-
import Text from '~/components/ui/text';
|
|
6
|
-
import { getNoteById } from '~/lib/constants';
|
|
7
|
-
|
|
8
|
-
export default function NoteDetailScreen() {
|
|
9
|
-
const { id } = useLocalSearchParams<{ id: string }>();
|
|
10
|
-
const note = getNoteById(id);
|
|
11
|
-
|
|
12
|
-
// TODO: Build the note detail screen
|
|
13
|
-
// - Add BackButton component at top
|
|
14
|
-
// - Add edit button (Link to /note/edit with id param)
|
|
15
|
-
// - Display note title and content in a Squircle card
|
|
16
|
-
// - Use ScrollView for long content
|
|
17
|
-
|
|
18
|
-
if (!note) {
|
|
19
|
-
return (
|
|
20
|
-
<Screen>
|
|
21
|
-
<View className="flex-1 items-center justify-center">
|
|
22
|
-
<Text>Note not found</Text>
|
|
23
|
-
</View>
|
|
24
|
-
</Screen>
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<Screen>
|
|
30
|
-
<View className="flex-1 px-5 pt-2">
|
|
31
|
-
<Text variant="title">{note.title}</Text>
|
|
32
|
-
<Text className="mt-4 text-muted-foreground">
|
|
33
|
-
Build this screen to show note details
|
|
34
|
-
</Text>
|
|
35
|
-
</View>
|
|
36
|
-
</Screen>
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { View } from 'react-native';
|
|
2
|
-
import { useLocalSearchParams } from 'expo-router';
|
|
3
|
-
|
|
4
|
-
import Screen from '~/components/ui/screen';
|
|
5
|
-
import Text from '~/components/ui/text';
|
|
6
|
-
import { getNoteById } from '~/lib/constants';
|
|
7
|
-
|
|
8
|
-
export default function EditNoteScreen() {
|
|
9
|
-
const { id } = useLocalSearchParams<{ id: string }>();
|
|
10
|
-
const note = getNoteById(id);
|
|
11
|
-
|
|
12
|
-
// TODO: Build the edit note screen
|
|
13
|
-
// - Add BackButton with close icon at top left
|
|
14
|
-
// - Add "Edit Note" title in header center
|
|
15
|
-
// - Add "Save" button at top right
|
|
16
|
-
// - Pre-fill TextInputs with note.title and note.content
|
|
17
|
-
// - Handle save with console.log and router.back()
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<Screen>
|
|
21
|
-
<View className="flex-1 px-5 pt-2">
|
|
22
|
-
<Text variant="title">Edit Note</Text>
|
|
23
|
-
<Text className="mt-4 text-muted-foreground">
|
|
24
|
-
Build this screen to edit: {note?.title ?? 'Unknown'}
|
|
25
|
-
</Text>
|
|
26
|
-
</View>
|
|
27
|
-
</Screen>
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { View } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import Screen from '~/components/ui/screen';
|
|
4
|
-
import Text from '~/components/ui/text';
|
|
5
|
-
|
|
6
|
-
export default function NewNoteScreen() {
|
|
7
|
-
// TODO: Build the new note screen
|
|
8
|
-
// - Add BackButton with close icon at top left
|
|
9
|
-
// - Add "New Note" title in header center
|
|
10
|
-
// - Add "Create" button at top right
|
|
11
|
-
// - Add TextInput for title
|
|
12
|
-
// - Add TextInput for content (multiline)
|
|
13
|
-
// - Handle create with console.log and router.back()
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<Screen>
|
|
17
|
-
<View className="flex-1 px-5 pt-2">
|
|
18
|
-
<Text variant="title">New Note</Text>
|
|
19
|
-
<Text className="mt-4 text-muted-foreground">
|
|
20
|
-
Build this screen with title and content inputs
|
|
21
|
-
</Text>
|
|
22
|
-
</View>
|
|
23
|
-
</Screen>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { View } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import Screen from '~/components/ui/screen';
|
|
4
|
-
import Text from '~/components/ui/text';
|
|
5
|
-
|
|
6
|
-
export default function SettingsScreen() {
|
|
7
|
-
// TODO: Build the settings screen
|
|
8
|
-
// - Add BackButton at top left
|
|
9
|
-
// - Add "Settings" title next to back button
|
|
10
|
-
// - Add app info card with icon and name
|
|
11
|
-
// - Add "Learn More About CozyNote" button linking to /about
|
|
12
|
-
|
|
13
|
-
return (
|
|
14
|
-
<Screen>
|
|
15
|
-
<View className="flex-1 px-5 pt-2">
|
|
16
|
-
<Text variant="title">Settings</Text>
|
|
17
|
-
<Text className="mt-4 text-muted-foreground">
|
|
18
|
-
Build this screen with app info and about link
|
|
19
|
-
</Text>
|
|
20
|
-
</View>
|
|
21
|
-
</Screen>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
export interface Note {
|
|
2
|
-
id: string;
|
|
3
|
-
title: string;
|
|
4
|
-
content: string;
|
|
5
|
-
createdAt: string;
|
|
6
|
-
updatedAt: string;
|
|
7
|
-
color?: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const NOTES: Note[] = [
|
|
11
|
-
{
|
|
12
|
-
id: '1',
|
|
13
|
-
title: 'Welcome to CozyNote',
|
|
14
|
-
content:
|
|
15
|
-
'This is your first note! CozyNote is a simple and beautiful note-taking app. Start capturing your thoughts, ideas, and memories.',
|
|
16
|
-
createdAt: '2025-02-23T08:00:00Z',
|
|
17
|
-
updatedAt: '2025-02-23T08:00:00Z',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
id: '2',
|
|
21
|
-
title: 'Meeting Notes',
|
|
22
|
-
content:
|
|
23
|
-
'Discussed Q1 goals and project timelines. Action items: Review budget proposal, Schedule follow-up with design team, Prepare presentation for Friday.',
|
|
24
|
-
createdAt: '2025-02-22T14:30:00Z',
|
|
25
|
-
updatedAt: '2025-02-22T15:45:00Z',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
id: '3',
|
|
29
|
-
title: 'Shopping List',
|
|
30
|
-
content:
|
|
31
|
-
'- Organic milk\n- Fresh bread\n- Avocados\n- Coffee beans\n- Dark chocolate\n- Olive oil\n- Pasta\n- Tomatoes',
|
|
32
|
-
createdAt: '2025-02-21T09:15:00Z',
|
|
33
|
-
updatedAt: '2025-02-21T09:15:00Z',
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
id: '4',
|
|
37
|
-
title: 'Book Recommendations',
|
|
38
|
-
content:
|
|
39
|
-
'1. Atomic Habits by James Clear\n2. Deep Work by Cal Newport\n3. The Psychology of Money\n4. Thinking, Fast and Slow\n5. The Almanack of Naval Ravikant',
|
|
40
|
-
createdAt: '2025-02-20T19:00:00Z',
|
|
41
|
-
updatedAt: '2025-02-20T19:00:00Z',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: '5',
|
|
45
|
-
title: 'Workout Routine',
|
|
46
|
-
content:
|
|
47
|
-
'Monday: Upper body\nTuesday: Cardio\nWednesday: Lower body\nThursday: Rest\nFriday: Full body\nSaturday: Yoga\nSunday: Rest',
|
|
48
|
-
createdAt: '2025-02-19T07:00:00Z',
|
|
49
|
-
updatedAt: '2025-02-19T07:00:00Z',
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
id: '6',
|
|
53
|
-
title: 'Recipe: Morning Smoothie',
|
|
54
|
-
content:
|
|
55
|
-
'Ingredients:\n- 1 banana\n- 1 cup spinach\n- 1/2 cup frozen berries\n- 1 tbsp almond butter\n- 1 cup oat milk\n\nBlend until smooth. Enjoy!',
|
|
56
|
-
createdAt: '2025-02-18T06:30:00Z',
|
|
57
|
-
updatedAt: '2025-02-18T06:30:00Z',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
id: '7',
|
|
61
|
-
title: 'Project Ideas',
|
|
62
|
-
content:
|
|
63
|
-
'- Personal portfolio website redesign\n- Mobile app for habit tracking\n- Open source contribution\n- Learn Rust programming\n- Build a CLI tool',
|
|
64
|
-
createdAt: '2025-02-17T21:00:00Z',
|
|
65
|
-
updatedAt: '2025-02-17T21:00:00Z',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
id: '8',
|
|
69
|
-
title: 'Travel Bucket List',
|
|
70
|
-
content:
|
|
71
|
-
'šÆšµ Japan - Cherry blossom season\nš®šø Iceland - Northern lights\nš³šæ New Zealand - Hobbiton\nš®š¹ Italy - Amalfi Coast\nš¬š· Greece - Santorini',
|
|
72
|
-
createdAt: '2025-02-16T16:00:00Z',
|
|
73
|
-
updatedAt: '2025-02-16T16:00:00Z',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
id: '9',
|
|
77
|
-
title: 'Daily Affirmations',
|
|
78
|
-
content:
|
|
79
|
-
'I am capable of achieving my goals.\nI embrace challenges as opportunities.\nI am grateful for today.\nI choose positivity and growth.\nI am worthy of success and happiness.',
|
|
80
|
-
createdAt: '2025-02-15T05:00:00Z',
|
|
81
|
-
updatedAt: '2025-02-15T05:00:00Z',
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
id: '10',
|
|
85
|
-
title: 'App Features to Add',
|
|
86
|
-
content:
|
|
87
|
-
'- Dark mode toggle\n- Note categories/tags\n- Search functionality\n- Cloud sync\n- Share notes\n- Rich text formatting\n- Voice notes',
|
|
88
|
-
createdAt: '2025-02-14T11:30:00Z',
|
|
89
|
-
updatedAt: '2025-02-14T11:30:00Z',
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
id: '11',
|
|
93
|
-
title: 'Gratitude Journal',
|
|
94
|
-
content:
|
|
95
|
-
'Today I am grateful for:\n1. A warm cup of coffee\n2. Supportive friends and family\n3. Good health\n4. The opportunity to learn new things\n5. A cozy home',
|
|
96
|
-
createdAt: '2025-02-13T22:00:00Z',
|
|
97
|
-
updatedAt: '2025-02-13T22:00:00Z',
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
id: '12',
|
|
101
|
-
title: 'Podcast Episodes',
|
|
102
|
-
content:
|
|
103
|
-
'Must listen:\n- Huberman Lab: Sleep optimization\n- Lex Fridman: AI discussion\n- Tim Ferriss: Productivity hacks\n- Naval: How to get rich',
|
|
104
|
-
createdAt: '2025-02-12T13:00:00Z',
|
|
105
|
-
updatedAt: '2025-02-12T13:00:00Z',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
id: '13',
|
|
109
|
-
title: 'Code Snippets',
|
|
110
|
-
content:
|
|
111
|
-
'Useful React patterns:\n- Custom hooks for data fetching\n- Context for global state\n- Memo for performance\n- Suspense for loading states',
|
|
112
|
-
createdAt: '2025-02-11T10:00:00Z',
|
|
113
|
-
updatedAt: '2025-02-11T10:00:00Z',
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
id: '14',
|
|
117
|
-
title: 'Weekend Plans',
|
|
118
|
-
content:
|
|
119
|
-
'Saturday:\n- Morning run at 7am\n- Brunch with Sarah\n- Afternoon coding session\n\nSunday:\n- Sleep in\n- Farmers market\n- Movie night',
|
|
120
|
-
createdAt: '2025-02-10T18:00:00Z',
|
|
121
|
-
updatedAt: '2025-02-10T18:00:00Z',
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
id: '15',
|
|
125
|
-
title: 'Learning Goals 2025',
|
|
126
|
-
content:
|
|
127
|
-
'Technical:\n- Master TypeScript\n- Learn system design\n- Contribute to open source\n\nPersonal:\n- Read 24 books\n- Learn Spanish basics\n- Meditation practice',
|
|
128
|
-
createdAt: '2025-02-09T09:00:00Z',
|
|
129
|
-
updatedAt: '2025-02-09T09:00:00Z',
|
|
130
|
-
},
|
|
131
|
-
];
|
|
132
|
-
|
|
133
|
-
export const getNoteById = (id: string): Note | undefined => {
|
|
134
|
-
return NOTES.find((note) => note.id === id);
|
|
135
|
-
};
|
|
136
|
-
|
|
File without changes
|