From 445ba3b091d6bcbe3b92f99651758c45e0931051 Mon Sep 17 00:00:00 2001 From: Kasssiiii Date: Sun, 8 Jun 2025 06:48:53 +0200 Subject: [PATCH 1/8] added packages to the project --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index caf6289..8faa9b3 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,11 @@ "preview": "vite preview" }, "dependencies": { + "lottie-react": "^2.4.1", + "moment": "^2.30.1", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "zustand": "^5.0.5" }, "devDependencies": { "@eslint/js": "^9.21.0", From b76bf570b244563138445a80a4c835ce04f42a97 Mon Sep 17 00:00:00 2001 From: Kasssiiii Date: Sun, 8 Jun 2025 13:50:17 +0200 Subject: [PATCH 2/8] my take on tasks storage --- src/store.jsx | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/store.jsx diff --git a/src/store.jsx b/src/store.jsx new file mode 100644 index 0000000..e3f79e9 --- /dev/null +++ b/src/store.jsx @@ -0,0 +1,70 @@ +import moment from "moment"; +import { create } from "zustand"; + +export const useNoteStore = create((set) => { + return { + todos: [ + { + text: "test", + date: moment.now(), + checked: false, + }, + ], + addNewTask: (newTodo) => + set((state) => { + const newTodos = [...state.todos]; + newTodos.push({ text: newTodo, date: moment.now(), checked: false }); + return { todos: newTodos }; + }), + removeTask: (todotext, date) => + set((state) => { + const newTodos = []; + for (const todo in state.todos) { + if (todotext === todo.text && date === todo.date) { + // skip + } else { + newTodos.push(todo); + } + } + return { todos: newTodos }; + }), + toggleChecked: (todotext, date) => + set((state) => { + const newTodos = []; + for (const todo in state.todos) { + if (todotext === todo.text && date === todo.date) { + newTodos.push({ + text: todo.text, + date: todo.date, + checked: !todo.checked, + }); + } else { + newTodos.push(todo); + } + } + return { todos: newTodos }; + }), + checkAllTasks: () => + set((state) => { + const newTodos = []; + for (const todo in state.todos) { + newTodos.push({ + text: todo.text, + date: todo.date, + checked: true, + }); + } + return { todos: newTodos }; + }), + removeAllDoneTasks: () => + set((state) => { + const newTodos = []; + for (const todo in state.todos) { + if (todo.checked === false) { + newTodos.push(todo); + } + } + return { todos: newTodos }; + }), + }; +}); From d327caedfb586cdbbb67317a23cf8b64dff22fff Mon Sep 17 00:00:00 2001 From: Kasssiiii Date: Sun, 8 Jun 2025 14:59:57 +0200 Subject: [PATCH 3/8] basic HTML structure --- src/App.jsx | 14 +++++++++++--- src/components/NewTask.jsx | 26 ++++++++++++++++++++++++++ src/components/StatusBar.jsx | 13 +++++++++++++ src/components/Task.jsx | 25 +++++++++++++++++++++++++ src/components/TaskList.jsx | 14 ++++++++++++++ 5 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 src/components/NewTask.jsx create mode 100644 src/components/StatusBar.jsx create mode 100644 src/components/Task.jsx create mode 100644 src/components/TaskList.jsx diff --git a/src/App.jsx b/src/App.jsx index 5427540..fffc248 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,5 +1,13 @@ +import NewTask from "./components/NewTask"; +import StatusBar from "./components/StatusBar"; +import TaskList from "./components/TaskList"; + export const App = () => { return ( -

React Boilerplate

- ) -} +
+ + + +
+ ); +}; diff --git a/src/components/NewTask.jsx b/src/components/NewTask.jsx new file mode 100644 index 0000000..3645b3c --- /dev/null +++ b/src/components/NewTask.jsx @@ -0,0 +1,26 @@ +import React, { useState } from "react"; + +const NewTask = () => { + const [toDo, setToDo] = useState(""); + + const addToDo = () => { + console.log("sending post"); + }; + + return ( +
ev.preventDefault()}> + +