From 3b9a874ff9b73b2838bb78dfc808bfd87cc47eaa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 4 Jul 2025 12:35:08 +0000 Subject: [PATCH 1/5] Initial plan From c5c7eae0ff2ea3b0b24b1e407b8c43afffc4259d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 4 Jul 2025 12:48:40 +0000 Subject: [PATCH 2/5] Redesign UI with modern, clean look and optimized styling Co-authored-by: tjarkpr <56918325+tjarkpr@users.noreply.github.com> --- src/app/components/AddTodoForm/style.css | 51 +++- src/app/components/FileSelector/style.css | 123 ++++++-- src/app/components/ThemeToggle/style.css | 28 +- src/app/components/TodoItem/style.css | 300 ++++++++++++------- src/app/components/TodoItem/style.css.backup | 195 ++++++++++++ src/app/components/TodoList/style.css | 28 +- src/app/styles/theme.css | 50 +++- 7 files changed, 604 insertions(+), 171 deletions(-) create mode 100644 src/app/components/TodoItem/style.css.backup diff --git a/src/app/components/AddTodoForm/style.css b/src/app/components/AddTodoForm/style.css index 8673f17..ab69c5d 100644 --- a/src/app/components/AddTodoForm/style.css +++ b/src/app/components/AddTodoForm/style.css @@ -1,24 +1,53 @@ .add-todo-form { display: flex; - justify-content: space-between; - border-left: 4px solid var(--primary-color); - padding: 5px; + gap: 0.75rem; + padding: 1.5rem; + background-color: var(--card-background); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + border: 1px solid var(--card-border); + margin-top: 1.5rem; } .add-todo-form input { flex: 1; - padding: 10px; - border: none; - border-bottom: 1px solid var(--primary-color); - background-color: transparent; + padding: 0.75rem 1rem; + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + background-color: var(--secondary-color); color: var(--text-color); + font-size: 1rem; + transition: all 0.2s ease; +} + +.add-todo-form input:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1); +} + +.add-todo-form input::placeholder { + color: var(--text-secondary); } .add-todo-form button { - margin-left: 5px; - padding: 10px 15px; + padding: 0.75rem 1.5rem; background-color: var(--primary-color); - color: var(--secondary-color); + color: white; border: none; - border-radius: 4px; + border-radius: var(--radius-md); + font-weight: var(--font-weight-medium); + cursor: pointer; + transition: all 0.2s ease; + box-shadow: var(--shadow-sm); +} + +.add-todo-form button:hover { + background-color: var(--primary-hover); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.add-todo-form button:active { + transform: translateY(0); } diff --git a/src/app/components/FileSelector/style.css b/src/app/components/FileSelector/style.css index 2d295c3..89a2d4c 100644 --- a/src/app/components/FileSelector/style.css +++ b/src/app/components/FileSelector/style.css @@ -1,78 +1,139 @@ +.file-selector { + display: flex; + align-items: center; + gap: 1rem; +} + .no-file-message { text-align: start; } +.no-file-message p { + color: var(--text-color); + font-size: 1rem; + margin-bottom: 1rem; +} + .file-buttons { display: flex; - justify-content: start; - gap: 8px; - margin-top: 12px; + gap: 0.75rem; } .create-file-button, .change-file-button, .open-file-button { - padding: 8px 16px; - border-radius: 4px; + padding: 0.75rem 1.5rem; + border-radius: var(--radius-md); cursor: pointer; - font-weight: bold; + font-weight: var(--font-weight-medium); border: none; + transition: all 0.2s ease; + box-shadow: var(--shadow-sm); + font-size: 0.875rem; } .create-file-button { background-color: var(--primary-color); - color: var(--secondary-color); + color: white; +} + +.create-file-button:hover { + background-color: var(--primary-hover); + transform: translateY(-1px); + box-shadow: var(--shadow-md); } .open-file-button { - background-color: var(--secondary-color); - color: var(--primary-color); + background-color: var(--card-background); + color: var(--text-color); + border: 1px solid var(--border-color); +} + +.open-file-button:hover { + background-color: var(--border-color); + transform: translateY(-1px); + box-shadow: var(--shadow-md); } .change-file-button { - background-color: var(--secondary-color); - color: var(--primary-color); + background-color: var(--card-background); + color: var(--text-color); + border: 1px solid var(--border-color); } -.create-file-button:hover, -.change-file-button:hover, -.open-file-button:hover { - opacity: 0.9; +.change-file-button:hover { + background-color: var(--border-color); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.create-file-button:disabled, +.change-file-button:disabled, +.open-file-button:disabled { + opacity: 0.6; + cursor: not-allowed; + transform: none; } .file-selected { display: flex; align-items: center; - justify-content: space-between; + gap: 1rem; +} + +.file-info { + display: flex; + flex-direction: column; + gap: 0.75rem; } .file-name { color: var(--text-color); font-size: 0.95rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.file-name strong { + font-weight: var(--font-weight-medium); } .save-status { - font-size: 0.9rem; + color: var(--success-color); + font-size: 0.875rem; + font-weight: var(--font-weight-medium); } .browser-warning { - background-color: #fff3cd; - color: #856404; - padding: 5px; - border-radius: 4px; - margin-bottom: 10px; + background-color: #fef3c7; + color: #92400e; + padding: 1rem; + border-radius: var(--radius-md); + margin-bottom: 1rem; + border: 1px solid #f59e0b; +} + +.browser-warning p { + margin: 0; + font-size: 0.875rem; } .error-message { - background-color: #f8d7da; - color: #721c24; - padding: 5px; - border-radius: 4px; - margin-bottom: 10px; + background-color: #fef2f2; + color: #991b1b; + padding: 1rem; + border-radius: var(--radius-md); + margin-bottom: 1rem; + border: 1px solid var(--error-color); } -.file-selected { - display: flex; - align-items: center; - justify-content: space-between; +.error-message p { + margin: 0; + font-size: 0.875rem; +} + +.loading-message { + color: var(--text-secondary); + font-size: 0.875rem; } diff --git a/src/app/components/ThemeToggle/style.css b/src/app/components/ThemeToggle/style.css index bd1b13f..8734df5 100644 --- a/src/app/components/ThemeToggle/style.css +++ b/src/app/components/ThemeToggle/style.css @@ -1,8 +1,24 @@ .theme-toggle { - padding: 0.5rem; - font-size: 1.5rem; - border: none; - background-color: transparent; - cursor: pointer; - z-index: 100; + display: flex; + align-items: center; + justify-content: center; + width: 3rem; + height: 3rem; + border: 1px solid var(--border-color); + background-color: var(--card-background); + border-radius: var(--radius-md); + cursor: pointer; + transition: all 0.2s ease; + box-shadow: var(--shadow-sm); + font-size: 1.25rem; +} + +.theme-toggle:hover { + background-color: var(--border-color); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.theme-toggle:active { + transform: translateY(0); } \ No newline at end of file diff --git a/src/app/components/TodoItem/style.css b/src/app/components/TodoItem/style.css index fbe62d1..2f495b6 100644 --- a/src/app/components/TodoItem/style.css +++ b/src/app/components/TodoItem/style.css @@ -1,195 +1,277 @@ -.time-spent.editable { - cursor: pointer; - text-decoration: underline dotted; +.todo-item { + display: flex; + flex-direction: column; + gap: 0.75rem; + padding: 1.25rem; + background-color: var(--card-background); + border-radius: var(--radius-md); + box-shadow: var(--shadow-sm); + border: 1px solid var(--card-border); + transition: all 0.2s ease; } -.time-spent.editable:hover { - color: var(--primary-color); +.todo-item:hover { + box-shadow: var(--shadow-md); + transform: translateY(-1px); } -.time-edit { +.todo-header, +.todo-content { display: flex; align-items: center; + gap: 0.75rem; } -.time-input { - width: 40px; - padding: 2px 4px; - text-align: center; - border: none; - border-bottom: 1px solid var(--primary-color); +.todo-number { + font-family: 'JetBrains Mono', monospace; + font-weight: var(--font-weight-medium); + color: var(--text-secondary); + font-size: 0.875rem; + background-color: var(--border-color); + padding: 0.25rem 0.5rem; + border-radius: var(--radius-sm); + flex-shrink: 0; } -.time-save-btn, -.time-cancel-btn { - width: 24px; - height: 24px; - margin-left: 2px; - border-radius: 50%; - border: 1px solid var(--border-color); - background-color: var(--card-background); - cursor: pointer; - font-size: 0.8rem; +.todo-status { + flex-shrink: 0; } -.time-cancel-btn:hover, -.time-save-btn:hover { - background-color: var(--primary-color); - color: var(--secondary-color); +.todo-status select { + padding: 0.5rem 0.75rem; + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + background-color: var(--secondary-color); + color: var(--text-color); + font-size: 0.875rem; + cursor: pointer; + transition: all 0.2s ease; } -.time-spent.counting { - color: #4caf50; - font-weight: bold; - animation: pulse 1s infinite alternate; +.todo-status select:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1); } -.time-tracking { - margin-left: auto; - display: flex; - align-items: center; - gap: 8px; +.todo-text { + flex-grow: 1; + font-size: 1rem; + color: var(--text-color); + line-height: 1.5; } -.time-spent { - font-family: monospace; +.todo-text.editable { + cursor: pointer; + padding: 0.25rem 0.5rem; + border-radius: var(--radius-sm); + transition: all 0.2s ease; } -.start-button, .pause-button { - padding: 3px 8px; - border-radius: 4px; - cursor: pointer; - font-size: 0.8rem; +.todo-text.editable:hover { + background-color: var(--border-color); + color: var(--primary-color); } -.start-button { - background-color: var(--primary-color); - color: var(--secondary-color); - border: none; +.todo-text-edit { + display: flex; + align-items: center; + flex-grow: 1; + gap: 0.5rem; } -.pause-button { - background-color: var(--primary-color); - color: var(--secondary-color); - border: none; +.text-input { + flex-grow: 1; + padding: 0.5rem 0.75rem; + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + background-color: var(--secondary-color); + color: var(--text-color); + font-size: 1rem; } -.todo-item { - display: flex; - flex-direction: column; - gap: 6px; - padding: 5px 5px; - border-left: 4px solid; +.text-input:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1); } -.todo-header, -.todo-content { +.text-save-btn, +.text-cancel-btn { + width: 2rem; + height: 2rem; display: flex; align-items: center; - gap: 8px; + justify-content: center; + border-radius: var(--radius-sm); + border: 1px solid var(--border-color); + background-color: var(--card-background); + cursor: pointer; + font-size: 0.875rem; + transition: all 0.2s ease; } -.todo-number { - font-family: monospace; - font-weight: bold; - color: var(--text-color); - flex-shrink: 0; +.text-save-btn:hover { + background-color: var(--success-color); + color: white; + border-color: var(--success-color); } -.todo-status { - flex-shrink: 0; +.text-cancel-btn:hover { + background-color: var(--error-color); + color: white; + border-color: var(--error-color); } -.todo-status select { - width: 100%; - padding: 4px; - border: none; - border-bottom: 1px solid var(--primary-color); - background-color: transparent; - color: var(--text-color); +.time-tracking { + margin-left: auto; + display: flex; + align-items: center; + gap: 0.75rem; } -.todo-text { - flex-grow: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; +.time-spent { + font-family: 'JetBrains Mono', monospace; + font-size: 0.875rem; + color: var(--text-secondary); + font-weight: var(--font-weight-medium); } -.todo-text.editable { +.time-spent.editable { cursor: pointer; + padding: 0.25rem 0.5rem; + border-radius: var(--radius-sm); + transition: all 0.2s ease; } -.todo-text.editable:hover { - text-decoration: underline dashed; +.time-spent.editable:hover { + background-color: var(--border-color); color: var(--primary-color); } -.todo-text-edit { +.time-spent.counting { + color: var(--success-color); + font-weight: var(--font-weight-bold); + animation: pulse 1s infinite alternate; +} + +.time-edit { display: flex; align-items: center; - flex-grow: 1; + gap: 0.5rem; } -.text-input { - flex-grow: 1; - padding: 4px 8px; - border: none; - border-bottom: 1px solid var(--primary-color); +.time-input { + width: 3rem; + padding: 0.25rem 0.5rem; + text-align: center; + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + background-color: var(--secondary-color); + color: var(--text-color); + font-size: 0.875rem; } -.text-save-btn, .text-cancel-btn { - width: 24px; - height: 24px; +.time-input:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1); +} + +.time-save-btn, +.time-cancel-btn { + width: 2rem; + height: 2rem; display: flex; align-items: center; justify-content: center; - border-radius: 50%; + border-radius: var(--radius-sm); border: 1px solid var(--border-color); background-color: var(--card-background); cursor: pointer; - margin-left: 2px; + font-size: 0.875rem; + transition: all 0.2s ease; } -.text-save-btn:hover { - background-color: var(--primary-color); - color: var(--secondary-color); +.time-save-btn:hover { + background-color: var(--success-color); + color: white; + border-color: var(--success-color); } -.text-cancel-btn:hover { - background-color: var(--primary-color); - color: var(--secondary-color); +.time-cancel-btn:hover { + background-color: var(--error-color); + color: white; + border-color: var(--error-color); +} + +.start-button, +.pause-button { + padding: 0.5rem 1rem; + border-radius: var(--radius-sm); + cursor: pointer; + font-size: 0.875rem; + font-weight: var(--font-weight-medium); + border: none; + transition: all 0.2s ease; + box-shadow: var(--shadow-sm); +} + +.start-button { + background-color: var(--success-color); + color: white; +} + +.start-button:hover { + background-color: #059669; + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.pause-button { + background-color: var(--warning-color); + color: white; +} + +.pause-button:hover { + background-color: #d97706; + transform: translateY(-1px); + box-shadow: var(--shadow-md); } .delete-button { background-color: transparent; - color: var(--text-color); - border: 1px solid var(--border-color); - border-radius: 4px; - padding: 4px 8px; + color: var(--error-color); + border: 1px solid var(--error-color); + border-radius: var(--radius-sm); + padding: 0.5rem 1rem; cursor: pointer; - transition: all 0.2s; + transition: all 0.2s ease; flex-shrink: 0; + font-size: 0.875rem; + font-weight: var(--font-weight-medium); } .delete-button:hover { - background-color: #ff4444; + background-color: var(--error-color); color: white; + transform: translateY(-1px); + box-shadow: var(--shadow-md); } .status-open { - border-left-color: #4a86e8; + border-left: 4px solid var(--primary-color); } .status-in-progress { - border-left-color: #fcba03; + border-left: 4px solid var(--warning-color); } .status-done { - border-left-color: #00c851; + border-left: 4px solid var(--success-color); } .completed .todo-text { text-decoration: line-through; - opacity: 0.7; + color: var(--text-secondary); } \ No newline at end of file diff --git a/src/app/components/TodoItem/style.css.backup b/src/app/components/TodoItem/style.css.backup new file mode 100644 index 0000000..fbe62d1 --- /dev/null +++ b/src/app/components/TodoItem/style.css.backup @@ -0,0 +1,195 @@ +.time-spent.editable { + cursor: pointer; + text-decoration: underline dotted; +} + +.time-spent.editable:hover { + color: var(--primary-color); +} + +.time-edit { + display: flex; + align-items: center; +} + +.time-input { + width: 40px; + padding: 2px 4px; + text-align: center; + border: none; + border-bottom: 1px solid var(--primary-color); +} + +.time-save-btn, +.time-cancel-btn { + width: 24px; + height: 24px; + margin-left: 2px; + border-radius: 50%; + border: 1px solid var(--border-color); + background-color: var(--card-background); + cursor: pointer; + font-size: 0.8rem; +} + +.time-cancel-btn:hover, +.time-save-btn:hover { + background-color: var(--primary-color); + color: var(--secondary-color); +} + +.time-spent.counting { + color: #4caf50; + font-weight: bold; + animation: pulse 1s infinite alternate; +} + +.time-tracking { + margin-left: auto; + display: flex; + align-items: center; + gap: 8px; +} + +.time-spent { + font-family: monospace; +} + +.start-button, .pause-button { + padding: 3px 8px; + border-radius: 4px; + cursor: pointer; + font-size: 0.8rem; +} + +.start-button { + background-color: var(--primary-color); + color: var(--secondary-color); + border: none; +} + +.pause-button { + background-color: var(--primary-color); + color: var(--secondary-color); + border: none; +} + +.todo-item { + display: flex; + flex-direction: column; + gap: 6px; + padding: 5px 5px; + border-left: 4px solid; +} + +.todo-header, +.todo-content { + display: flex; + align-items: center; + gap: 8px; +} + +.todo-number { + font-family: monospace; + font-weight: bold; + color: var(--text-color); + flex-shrink: 0; +} + +.todo-status { + flex-shrink: 0; +} + +.todo-status select { + width: 100%; + padding: 4px; + border: none; + border-bottom: 1px solid var(--primary-color); + background-color: transparent; + color: var(--text-color); +} + +.todo-text { + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.todo-text.editable { + cursor: pointer; +} + +.todo-text.editable:hover { + text-decoration: underline dashed; + color: var(--primary-color); +} + +.todo-text-edit { + display: flex; + align-items: center; + flex-grow: 1; +} + +.text-input { + flex-grow: 1; + padding: 4px 8px; + border: none; + border-bottom: 1px solid var(--primary-color); +} + +.text-save-btn, .text-cancel-btn { + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + border: 1px solid var(--border-color); + background-color: var(--card-background); + cursor: pointer; + margin-left: 2px; +} + +.text-save-btn:hover { + background-color: var(--primary-color); + color: var(--secondary-color); +} + +.text-cancel-btn:hover { + background-color: var(--primary-color); + color: var(--secondary-color); +} + +.delete-button { + background-color: transparent; + color: var(--text-color); + border: 1px solid var(--border-color); + border-radius: 4px; + padding: 4px 8px; + cursor: pointer; + transition: all 0.2s; + flex-shrink: 0; +} + +.delete-button:hover { + background-color: #ff4444; + color: white; +} + +.status-open { + border-left-color: #4a86e8; +} + +.status-in-progress { + border-left-color: #fcba03; +} + +.status-done { + border-left-color: #00c851; +} + +.completed .todo-text { + text-decoration: line-through; + opacity: 0.7; +} \ No newline at end of file diff --git a/src/app/components/TodoList/style.css b/src/app/components/TodoList/style.css index 69e92f3..c4e9b4e 100644 --- a/src/app/components/TodoList/style.css +++ b/src/app/components/TodoList/style.css @@ -5,12 +5,34 @@ .todo-lists-container { display: flex; flex-direction: column; - gap: 24px; - margin-top: 20px; - padding: 5px; + gap: 2rem; + padding: 2rem; + max-width: 1000px; + margin: 0 auto; } .active-todos, .completed-todos { width: 100%; + background-color: var(--card-background); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + padding: 1.5rem; + border: 1px solid var(--card-border); +} + +.active-todos h2, +.completed-todos h2 { + color: var(--text-color); + font-size: 1.5rem; + font-weight: var(--font-weight-bold); + margin-bottom: 1.5rem; + padding-bottom: 0.75rem; + border-bottom: 2px solid var(--border-color); +} + +.todo-list { + display: flex; + flex-direction: column; + gap: 0.75rem; } diff --git a/src/app/styles/theme.css b/src/app/styles/theme.css index 4e1b2e3..26ca6ed 100644 --- a/src/app/styles/theme.css +++ b/src/app/styles/theme.css @@ -17,11 +17,24 @@ } :root { - --background-color: #ffffff; - --text-color: #131313; - --border-color: #ffffff; - --primary-color: #000000; + --background-color: #fafafa; + --text-color: #1a1a1a; + --text-secondary: #6b7280; + --border-color: #e5e7eb; + --primary-color: #3b82f6; + --primary-hover: #2563eb; --secondary-color: #ffffff; + --card-background: #ffffff; + --card-border: #f3f4f6; + --success-color: #10b981; + --warning-color: #f59e0b; + --error-color: #ef4444; + --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --radius-sm: 0.375rem; + --radius-md: 0.5rem; + --radius-lg: 0.75rem; --font-family: "Noto Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-weight-light: 300; @@ -31,11 +44,21 @@ } [data-theme="dark"] { - --background-color: #141414; - --text-color: #fcfcfc; - --border-color: #141414; - --primary-color: #ffffff; - --secondary-color: #141414; + --background-color: #0f172a; + --text-color: #f1f5f9; + --text-secondary: #94a3b8; + --border-color: #334155; + --primary-color: #3b82f6; + --primary-hover: #2563eb; + --secondary-color: #1e293b; + --card-background: #1e293b; + --card-border: #334155; + --success-color: #10b981; + --warning-color: #f59e0b; + --error-color: #ef4444; + --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.4); } body { @@ -67,10 +90,15 @@ button { display: flex; justify-content: space-between; align-items: center; - padding: 10px; + padding: 1.5rem 2rem; + background-color: var(--card-background); + border-bottom: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); } .app-container { - max-width: 1000px; + max-width: 1200px; width: 100%; + min-height: 100vh; + background-color: var(--background-color); } \ No newline at end of file From 559cf246b2a71ce012f6df9374e5a92bdae57798 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 4 Jul 2025 13:04:50 +0000 Subject: [PATCH 3/5] Fix CSS syntax errors by adding missing newlines at end of files Co-authored-by: tjarkpr <56918325+tjarkpr@users.noreply.github.com> --- src/app/components/ThemeToggle/style.css | 2 +- src/app/components/TodoItem/style.css | 2 +- src/app/styles/theme.css | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/components/ThemeToggle/style.css b/src/app/components/ThemeToggle/style.css index 8734df5..5cdb354 100644 --- a/src/app/components/ThemeToggle/style.css +++ b/src/app/components/ThemeToggle/style.css @@ -21,4 +21,4 @@ .theme-toggle:active { transform: translateY(0); -} \ No newline at end of file +} diff --git a/src/app/components/TodoItem/style.css b/src/app/components/TodoItem/style.css index 2f495b6..7e9ae90 100644 --- a/src/app/components/TodoItem/style.css +++ b/src/app/components/TodoItem/style.css @@ -274,4 +274,4 @@ .completed .todo-text { text-decoration: line-through; color: var(--text-secondary); -} \ No newline at end of file +} diff --git a/src/app/styles/theme.css b/src/app/styles/theme.css index 26ca6ed..ec9cb39 100644 --- a/src/app/styles/theme.css +++ b/src/app/styles/theme.css @@ -101,4 +101,4 @@ button { width: 100%; min-height: 100vh; background-color: var(--background-color); -} \ No newline at end of file +} From 509a2cb709bb012098b9238f1885ce35dc68281b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 4 Jul 2025 13:20:06 +0000 Subject: [PATCH 4/5] Fix header layout to span full width consistently Co-authored-by: tjarkpr <56918325+tjarkpr@users.noreply.github.com> --- src/app/App.tsx | 12 ++++++++---- src/app/styles/theme.css | 22 +++++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 8e7f36c..c8f597b 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -10,12 +10,16 @@ const App: React.FC = () => { return ( -
+
- - +
+ + +
- +
+ +
diff --git a/src/app/styles/theme.css b/src/app/styles/theme.css index ec9cb39..4f0901a 100644 --- a/src/app/styles/theme.css +++ b/src/app/styles/theme.css @@ -86,19 +86,31 @@ button { font-weight: var(--font-weight-medium); } +.app-wrapper { + width: 100%; + min-height: 100vh; + background-color: var(--background-color); +} + .app-header { + width: 100%; + background-color: var(--card-background); + border-bottom: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +.app-header-content { display: flex; justify-content: space-between; align-items: center; padding: 1.5rem 2rem; - background-color: var(--card-background); - border-bottom: 1px solid var(--border-color); - box-shadow: var(--shadow-sm); + max-width: 1200px; + margin: 0 auto; } .app-container { max-width: 1200px; width: 100%; - min-height: 100vh; - background-color: var(--background-color); + margin: 0 auto; + padding: 0 2rem; } From 53abcaf0fb0ba49bc6489a3d297d1e31eaeda967 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 4 Jul 2025 13:30:16 +0000 Subject: [PATCH 5/5] Fix overflow issues and reduce borders for better contrast Co-authored-by: tjarkpr <56918325+tjarkpr@users.noreply.github.com> --- src/app/components/AddTodoForm/style.css | 14 ++++++++-- src/app/components/FileSelector/style.css | 31 ++++++++++++++++++----- src/app/components/TodoItem/style.css | 19 +++++++++++--- src/app/components/TodoList/style.css | 18 ++++++++++--- src/app/styles/theme.css | 16 ++++++++++-- 5 files changed, 81 insertions(+), 17 deletions(-) diff --git a/src/app/components/AddTodoForm/style.css b/src/app/components/AddTodoForm/style.css index ab69c5d..4109320 100644 --- a/src/app/components/AddTodoForm/style.css +++ b/src/app/components/AddTodoForm/style.css @@ -5,14 +5,20 @@ background-color: var(--card-background); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); - border: 1px solid var(--card-border); margin-top: 1.5rem; } +@media (max-width: 768px) { + .add-todo-form { + padding: 1rem; + gap: 0.5rem; + } +} + .add-todo-form input { flex: 1; padding: 0.75rem 1rem; - border: 1px solid var(--border-color); + border: 2px solid var(--border-color); border-radius: var(--radius-md); background-color: var(--secondary-color); color: var(--text-color); @@ -26,6 +32,10 @@ box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1); } +.add-todo-form input:hover { + border-color: var(--primary-color); +} + .add-todo-form input::placeholder { color: var(--text-secondary); } diff --git a/src/app/components/FileSelector/style.css b/src/app/components/FileSelector/style.css index 89a2d4c..98f59c2 100644 --- a/src/app/components/FileSelector/style.css +++ b/src/app/components/FileSelector/style.css @@ -4,6 +4,14 @@ gap: 1rem; } +@media (max-width: 768px) { + .file-selector { + flex-direction: column; + align-items: flex-start; + gap: 0.75rem; + } +} + .no-file-message { text-align: start; } @@ -19,6 +27,13 @@ gap: 0.75rem; } +@media (max-width: 768px) { + .file-buttons { + flex-wrap: wrap; + gap: 0.5rem; + } +} + .create-file-button, .change-file-button, .open-file-button { @@ -44,25 +59,29 @@ } .open-file-button { - background-color: var(--card-background); + background-color: var(--secondary-color); color: var(--text-color); - border: 1px solid var(--border-color); + border: 2px solid var(--border-color); } .open-file-button:hover { - background-color: var(--border-color); + background-color: var(--background-color); + border-color: var(--primary-color); + color: var(--primary-color); transform: translateY(-1px); box-shadow: var(--shadow-md); } .change-file-button { - background-color: var(--card-background); + background-color: var(--secondary-color); color: var(--text-color); - border: 1px solid var(--border-color); + border: 2px solid var(--border-color); } .change-file-button:hover { - background-color: var(--border-color); + background-color: var(--background-color); + border-color: var(--primary-color); + color: var(--primary-color); transform: translateY(-1px); box-shadow: var(--shadow-md); } diff --git a/src/app/components/TodoItem/style.css b/src/app/components/TodoItem/style.css index 7e9ae90..05b407e 100644 --- a/src/app/components/TodoItem/style.css +++ b/src/app/components/TodoItem/style.css @@ -6,7 +6,6 @@ background-color: var(--card-background); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); - border: 1px solid var(--card-border); transition: all 0.2s ease; } @@ -15,6 +14,12 @@ transform: translateY(-1px); } +@media (max-width: 768px) { + .todo-item { + padding: 1rem; + } +} + .todo-header, .todo-content { display: flex; @@ -39,13 +44,14 @@ .todo-status select { padding: 0.5rem 0.75rem; - border: 1px solid var(--border-color); + border: 2px solid var(--border-color); border-radius: var(--radius-sm); background-color: var(--secondary-color); color: var(--text-color); font-size: 0.875rem; cursor: pointer; transition: all 0.2s ease; + font-weight: var(--font-weight-medium); } .todo-status select:focus { @@ -54,6 +60,11 @@ box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1); } +.todo-status select:hover { + border-color: var(--primary-color); + background-color: var(--background-color); +} + .todo-text { flex-grow: 1; font-size: 1rem; @@ -83,7 +94,7 @@ .text-input { flex-grow: 1; padding: 0.5rem 0.75rem; - border: 1px solid var(--border-color); + border: 2px solid var(--border-color); border-radius: var(--radius-sm); background-color: var(--secondary-color); color: var(--text-color); @@ -165,7 +176,7 @@ width: 3rem; padding: 0.25rem 0.5rem; text-align: center; - border: 1px solid var(--border-color); + border: 2px solid var(--border-color); border-radius: var(--radius-sm); background-color: var(--secondary-color); color: var(--text-color); diff --git a/src/app/components/TodoList/style.css b/src/app/components/TodoList/style.css index c4e9b4e..3a9f425 100644 --- a/src/app/components/TodoList/style.css +++ b/src/app/components/TodoList/style.css @@ -6,11 +6,18 @@ display: flex; flex-direction: column; gap: 2rem; - padding: 2rem; + padding: min(2rem, 4vw); max-width: 1000px; margin: 0 auto; } +@media (max-width: 768px) { + .todo-lists-container { + padding: 1rem; + gap: 1.5rem; + } +} + .active-todos, .completed-todos { width: 100%; @@ -18,7 +25,13 @@ border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 1.5rem; - border: 1px solid var(--card-border); +} + +@media (max-width: 768px) { + .active-todos, + .completed-todos { + padding: 1rem; + } } .active-todos h2, @@ -28,7 +41,6 @@ font-weight: var(--font-weight-bold); margin-bottom: 1.5rem; padding-bottom: 0.75rem; - border-bottom: 2px solid var(--border-color); } .todo-list { diff --git a/src/app/styles/theme.css b/src/app/styles/theme.css index 4f0901a..22447a7 100644 --- a/src/app/styles/theme.css +++ b/src/app/styles/theme.css @@ -103,14 +103,26 @@ button { display: flex; justify-content: space-between; align-items: center; - padding: 1.5rem 2rem; + padding: 1.5rem min(2rem, 4vw); max-width: 1200px; margin: 0 auto; } +@media (max-width: 768px) { + .app-header-content { + padding: 1rem; + } +} + .app-container { max-width: 1200px; width: 100%; margin: 0 auto; - padding: 0 2rem; + padding: 0 min(2rem, 4vw); +} + +@media (max-width: 768px) { + .app-container { + padding: 0 1rem; + } }