From 92c1a7e71c440d66590f8c0e63768cff768c855b Mon Sep 17 00:00:00 2001 From: Cribe Pencheff Date: Wed, 22 Jan 2025 20:33:19 +0100 Subject: [PATCH] Todos Styling + Icons and illustrations --- index.html | 23 ++++- src/assets/icons/checked-theme.svg | 3 + src/assets/icons/checked.svg | 3 + src/assets/icons/clear-circle-lgt.svg | 4 + src/assets/icons/clear-circle.svg | 4 + src/assets/icons/delete-lgt.svg | 7 ++ src/assets/icons/delete.svg | 7 ++ src/assets/icons/edit-lgt.svg | 3 + src/assets/icons/plus-lgt.svg | 3 + src/assets/icons/plus.svg | 3 + src/assets/icons/unchecked-hover.svg | 3 + src/assets/icons/unchecked.svg | 3 + src/assets/images/cactus-1.webp | Bin 0 -> 6706 bytes src/assets/images/cactus-2.webp | Bin 0 -> 12026 bytes src/assets/images/cactus-3.webp | Bin 0 -> 10726 bytes src/assets/images/cactus-4.webp | Bin 0 -> 9574 bytes src/assets/scss/_base.scss | 60 +----------- src/assets/scss/_button.scss | 68 ++++++++++++++ src/assets/scss/_todos.scss | 128 +++++++++++++++++++++++++- src/assets/scss/_variables.scss | 7 +- src/components/ShowTodoList.ts | 34 +++++-- src/style.scss | 1 + src/utils/todosService.ts | 6 +- 23 files changed, 291 insertions(+), 79 deletions(-) create mode 100644 src/assets/icons/checked-theme.svg create mode 100644 src/assets/icons/checked.svg create mode 100644 src/assets/icons/clear-circle-lgt.svg create mode 100644 src/assets/icons/clear-circle.svg create mode 100644 src/assets/icons/delete-lgt.svg create mode 100644 src/assets/icons/delete.svg create mode 100644 src/assets/icons/edit-lgt.svg create mode 100644 src/assets/icons/plus-lgt.svg create mode 100644 src/assets/icons/plus.svg create mode 100644 src/assets/icons/unchecked-hover.svg create mode 100644 src/assets/icons/unchecked.svg create mode 100644 src/assets/images/cactus-1.webp create mode 100644 src/assets/images/cactus-2.webp create mode 100644 src/assets/images/cactus-3.webp create mode 100644 src/assets/images/cactus-4.webp create mode 100644 src/assets/scss/_button.scss diff --git a/index.html b/index.html index 096d31f..242cc30 100644 --- a/index.html +++ b/index.html @@ -27,11 +27,28 @@
- - + + +
-

Tasklist

+

+ My Tasks + + +

+
diff --git a/src/assets/icons/checked-theme.svg b/src/assets/icons/checked-theme.svg new file mode 100644 index 0000000..0aca10d --- /dev/null +++ b/src/assets/icons/checked-theme.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/checked.svg b/src/assets/icons/checked.svg new file mode 100644 index 0000000..422e3b0 --- /dev/null +++ b/src/assets/icons/checked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/clear-circle-lgt.svg b/src/assets/icons/clear-circle-lgt.svg new file mode 100644 index 0000000..713a6c4 --- /dev/null +++ b/src/assets/icons/clear-circle-lgt.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/clear-circle.svg b/src/assets/icons/clear-circle.svg new file mode 100644 index 0000000..ff100f9 --- /dev/null +++ b/src/assets/icons/clear-circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/delete-lgt.svg b/src/assets/icons/delete-lgt.svg new file mode 100644 index 0000000..d479b37 --- /dev/null +++ b/src/assets/icons/delete-lgt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icons/delete.svg b/src/assets/icons/delete.svg new file mode 100644 index 0000000..a0a88cf --- /dev/null +++ b/src/assets/icons/delete.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icons/edit-lgt.svg b/src/assets/icons/edit-lgt.svg new file mode 100644 index 0000000..1b82253 --- /dev/null +++ b/src/assets/icons/edit-lgt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/plus-lgt.svg b/src/assets/icons/plus-lgt.svg new file mode 100644 index 0000000..ee1f431 --- /dev/null +++ b/src/assets/icons/plus-lgt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/plus.svg b/src/assets/icons/plus.svg new file mode 100644 index 0000000..5786232 --- /dev/null +++ b/src/assets/icons/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/unchecked-hover.svg b/src/assets/icons/unchecked-hover.svg new file mode 100644 index 0000000..8978d41 --- /dev/null +++ b/src/assets/icons/unchecked-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/unchecked.svg b/src/assets/icons/unchecked.svg new file mode 100644 index 0000000..3266a16 --- /dev/null +++ b/src/assets/icons/unchecked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/cactus-1.webp b/src/assets/images/cactus-1.webp new file mode 100644 index 0000000000000000000000000000000000000000..8c8e46d893738d8f3a95d7330a5a88718bc673ad GIT binary patch literal 6706 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

|0!>FQV=}vx%p5Mmmew?j_DR zjH8Olh~q?*DkvSTD0-KDB!auso{uK0V7H*dqY zxS2Xmbbr^G3sb%tnUN5VAe8IbC(k=&=t_$E+O9$Ne3VqU6~CsF=p+OeO?+W^UZ!eyJr)Bj?>nVS#;sNNnTpnnF(nA zRD5AYmMZ;2;!n_W(5sZQ$X{^1$xp08S`k|!J@>F((k=cmPZDspo{b#C!A-Pg?7sJb znC(vA%F_WjEyRL;3Vk&yhRkc%@ zF)nb>xWUcD@gSOt4KCLGLZ#!0A)6`KQE2C`&IfVnU7s|?jL|$&j|UMRF|XS9!nB5cy{ieiy%i zt7XJtYxcMl{W)b>O>Ma_{i2@ANXKz|OL?gLM=4d`}~H+ieM^%UC6Jv^d&{Gn2_OGmiUo znmc<~M?J(NC?Z&jSozj7!&Wv~uQHyllb>}CT`RNr6(1k9JFx#oiD}6c7E#%xdcTsv zEYVu~Z>zPe+OR}RpTDKFTb+Qr12^fB+Ne$l3i`r)&5)KFi$R{QEPOweEn!flP>oQ0 zZyX8|p{d#z>Uuva@p9NKpB6t@%d9AK^A3g6ky}ebQ)OCNVN~!)p{L$^HG-ur!IK!@ z8Rr@&392gHe?201{aIK@vY2~QGN-m7Yu0vD1Gl-~*<&E!@Nh&nqW@{x?rdN%c)Gk$ zq=JYN0Dm9DlLB4fVD0$!^0X-HzaXSf8b}LiVGKI$ee9&ZxjK8WQRPF*jF!+}f%8Qw8Zl0&L+umE1<-o@L$ zr8KX9;I=YuzxH#|4$JRAkcbU&4JhcRVsis=5ZBKUHNyIgi+qSg1NeL&;4SEf=gv~$ z={sXHa(ywa$0d6O;Vs7y+%C3XXblJ}1cH1j-F7~5g%|E3rI(bqHEGQAi7n*htZD~b z`ru#^3_`*leDeqO-28=2ix|`gS1Vln!$=GPRop!96H#@w@KAWZ(un)Y7Fi}K8@O1O z3(PBO2V?4e$ReEQH5;F?dy{?6DLFbI$i&oevrW91MBPK#eo5ca*n6LaU*m0pk{K-^ z){;ukBFcwAS!?|z0CwDU6?#!d|3ke73@qAE)#6wTQddXKEE@zSSxBrDz_ zJM%~zD3$OPxecXi!xf--M5Olz{o8t{t!z18L`5Lnn2XZf(`q;98_VbLzp&@Hky%iD;k;LQ3T7cV@DZ_Wk%4@+xgqDnM9 zRZ%PLItf$73^9I?ZG5IlsL`PovqDS@B_0UNRTfpkq-qUGttFUI4wCj71-MCFF1vZ% zIyqJ8wFPdoszbVk|QWv~CM;@^i&Gn;>LWw=5!K-fX zLE<$mYzUa0)aYs$j-oG(7D^Zpnr=e&hwsC`rPP5lt%3;O#KMOxO6rpkpVE`^e0nem zc+)iLm7Dr%dqAQ3uWufqcsJbO8lBk1iC<=_zk>VR-aSl{0~c~K!cf?@3usCC!&@)-`62>W-2PNBcEu4r}Mz1h=KEkS9)FtzqAZHL5|E2-H~tcAlfC`pJ? z|Gr~?I;ctK+>Yt6SVMp&^K0CEmv?5$+($9~SVTV0p?Oq#Ps9O3+)hR`X1N;Mk@7VY S<&93k|0c(}`}{wr%6|d#Km1St literal 0 HcmV?d00001 diff --git a/src/assets/images/cactus-2.webp b/src/assets/images/cactus-2.webp new file mode 100644 index 0000000000000000000000000000000000000000..abb87ad0cfb2c5b75c7fd8cc661a89f9426b54e4 GIT binary patch literal 12026 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/cactus-3.webp b/src/assets/images/cactus-3.webp new file mode 100644 index 0000000000000000000000000000000000000000..e3b7ba13bb14d4af5128b6404c705895f4204909 GIT binary patch literal 10726 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 |(TlcOu@rNB#XJ5~^C!1t{{HIL+B_AKi>Zp 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/cactus-4.webp b/src/assets/images/cactus-4.webp new file mode 100644 index 0000000000000000000000000000000000000000..16f985cc2b7f95b6a47ca54c419383a8449c296a GIT binary patch literal 9574 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 QwNQWn00000000000Q>NtyZ`_I literal 0 HcmV?d00001 diff --git a/src/assets/scss/_base.scss b/src/assets/scss/_base.scss index ff898aa..31a325b 100644 --- a/src/assets/scss/_base.scss +++ b/src/assets/scss/_base.scss @@ -70,71 +70,12 @@ a { } } -button { - border-radius: 50vw; - border: 1.5px solid transparent; - padding: 0.6em 1.2em; - font-size: $font-size-sm; - font-weight: 500; - font-family: inherit; - background-color: $color-gray-drk; - color: $color-white; - cursor: pointer; - transition: - border-color 0.25s, - background-color 0.25s; - - display: inline-flex; - justify-content: center; - flex-direction: row; - align-items: center; - gap: 0.75rem; - - &:disabled { - opacity: 0.5; - } - - &:focus, - &:focus-visible { - outline: 4px auto -webkit-focus-ring-color; - } - - &.btn-primary { - background-color: $color-primary; - color: $color-white; - - &:hover { - background-color: $color-primary; - } - } - - &.btn-large { - width: 100%; - border-radius: $border-radius; - font-size: $font-size-md; - line-height: 1.32; - } -} - @media (prefers-color-scheme: light) { :root { color: $color-body; background-color: $color-bg-lgt; } - button { - background-color: $color-white; - color: $color-gray; - - &:hover { - border-color: $color-gray-lgt; - } - } - - button.btn-primary:hover { - background-color: $color-primary-hover; - } - a:hover { color: $color-primary-hover; } @@ -147,4 +88,5 @@ picture.icon { .text-center { text-align: center; + width: 100%; } diff --git a/src/assets/scss/_button.scss b/src/assets/scss/_button.scss new file mode 100644 index 0000000..2d62443 --- /dev/null +++ b/src/assets/scss/_button.scss @@ -0,0 +1,68 @@ +@use './variables' as *; + +button { + white-space: normal; + border-radius: 50vw; + border: 1.5px solid transparent; + padding: 0.6em 1em; + font-size: $font-size-sm; + font-weight: 500; + font-family: inherit; + background-color: $color-gray-drk; + color: $color-white; + cursor: pointer; + transition: + border-color 0.25s, + background-color 0.25s; + + display: inline-flex; + justify-content: center; + flex-direction: row; + align-items: center; + gap: 0.75rem; + + picture.icon { + margin: -0.5rem; + } + + &:disabled { + opacity: 0.5; + pointer-events: none; + } + + &:focus, + &:focus-visible { + outline: 4px auto -webkit-focus-ring-color; + } + + &.btn-primary { + background-color: $color-primary; + color: $color-white; + + &:hover { + background-color: $color-primary; + } + } + + &.btn-large { + width: 100%; + border-radius: $border-radius; + font-size: $font-size-md; + line-height: 1.32; + } +} + +@media (prefers-color-scheme: light) { + button { + background-color: $color-white; + color: $color-gray; + + &:hover { + border-color: $color-gray-lgt; + } + + &.btn-primary:hover { + background-color: $color-primary-hover; + } + } +} \ No newline at end of file diff --git a/src/assets/scss/_todos.scss b/src/assets/scss/_todos.scss index 5eb950c..eb030b0 100644 --- a/src/assets/scss/_todos.scss +++ b/src/assets/scss/_todos.scss @@ -16,15 +16,39 @@ @media #{$xlarge-up} { margin-top: 4rem; } +} + +#todo-list-heading { + display: flex; + justify-content: space-between; + align-items: flex-end; + text-transform: uppercase; + color: $color-gray-theme; + margin-block: 2.5rem 1rem; - h3 { - margin-block: 2.5rem 1rem; + span { + font-size: $font-size-xs; + letter-spacing: 0.0625rem; + font-family: $font-family-semibold; } } #todo-form { width: 100%; max-width: unset; + display: flex; + flex-direction: row; + align-items: center; + gap: 0.75rem; + + > input { + margin-bottom: 0; + } + + button { + flex: 1 0 auto; + padding-block: 0.625rem; + } } #todo-list { @@ -39,21 +63,105 @@ li { background-color: $color-gray-drk; + border: 1.5px solid transparent; border-radius: $border-radius-lrg; - margin-bottom: 0.5rem; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.75rem; + margin-bottom: 0.75rem; + + transition: border 0.25s; + } + + label { + flex: 1 1 auto; + align-self: stretch; + font-size: $font-size-md; + cursor: pointer; + + input[type="checkbox"] { + display: none; + } + + &:before { + content: ''; + display: block; + width: 24px; + height: 24px; + background-image: url('./src/assets/icons/unchecked.svg'); + margin-left: 0.375rem; + margin-right: 1rem; + } + + &:hover:before { + background-image: url('./src/assets/icons/unchecked-hover.svg'); + } + } + + li.todo-completed { + box-shadow: none; + + label { + text-decoration: line-through; + opacity: 0.5; + } + + .button-group { + opacity: 0.4; + pointer-events: none; + } + + label:before { + background-image: url('./src/assets/icons/checked.svg'); + } + } + + label, .button-group { + display: flex; + align-items: center; + } + + .button-group { + gap: 0.25rem; + button { + width: 40px; + height: 40px; + padding: 0; + } + } + + .delete-todo .icon { + width: 20px; + height: 20px; } } #todo-list li.todo-list-empty { + margin-top: 1rem; + padding: 0; background-color: transparent; box-shadow: none; color: $color-gray-lgt; + flex-direction: column; } @media (prefers-color-scheme: light) { + #todo-list-heading { + color: $color-gray; + + button { + box-shadow: $box-shadow-lgt; + } + } + #todo-list li { background-color: $color-white; box-shadow: $box-shadow-lgt; + + &:not(.todo-completed):hover { + border-color: $color-gray-lgt;; + } } #todo-list li.todo-list-empty { @@ -61,4 +169,18 @@ box-shadow: none; color: $color-gray; } +} + +@media (prefers-color-scheme: dark) { + .button-group button:hover { + border-color: $color-gray-theme; + } + + #todo-list li.todo-list-empty img { + filter: drop-shadow(0px 10px 15px rgba(0, 0, 0, 0.5)); + } + + #todo-list li.todo-completed label:before { + background-image: url('./src/assets/icons/checked-theme.svg'); + } } \ No newline at end of file diff --git a/src/assets/scss/_variables.scss b/src/assets/scss/_variables.scss index 72182ed..247f5a1 100644 --- a/src/assets/scss/_variables.scss +++ b/src/assets/scss/_variables.scss @@ -1,5 +1,5 @@ // color -$color-bg-lgt: #F9FBFE; +$color-bg-lgt: #f6faff; $color-bg-drk: #242424; $color-body: #415a70; @@ -9,8 +9,8 @@ $color-gray-lgt: #dddfe2; $color-gray: #7282a7; $color-gray-theme: #7d869b; $color-gray-drk: #46484B; -$color-primary: #4f58f7; -$color-primary-hover: #424be9; +$color-primary: #5d4ff7; +$color-primary-hover: #4a42e9; $color-contrast: #F303FF; $color-alert: #f0506a; $color-success: #2ab75e; @@ -20,6 +20,7 @@ $color-success-hover: #07aa5e; $font-family-semibold: 'GeneralSans-Semibold', system-ui, Avenir, Helvetica, Arial, sans-serif; $font-family-medium: 'GeneralSans-Medium', system-ui, Avenir, Helvetica, Arial, sans-serif; +$font-size-xs: 0.75rem; $font-size-sm: 0.875rem; $font-size-md: 1rem; diff --git a/src/components/ShowTodoList.ts b/src/components/ShowTodoList.ts index 31b3482..2813913 100644 --- a/src/components/ShowTodoList.ts +++ b/src/components/ShowTodoList.ts @@ -4,13 +4,14 @@ import { handleRenameTodo, handleTodoCompletion } from '../utils/todosService'; export const ShowTodoList = async () => { const main = document.getElementById('todo-list') as HTMLElement; - const clearListBtn = document.getElementById('clear-list-btn') as HTMLButtonElement; + const randomNumber = Math.floor(Math.random() * 4) + 1; + const todoListHeading = document.getElementById('todo-list-heading') as HTMLHeadingElement; const ul = document.createElement("ul"); const fetchedTodos: Todo[] = await getUserTodos(); let hasTodos = fetchedTodos.length > 0; if (hasTodos) { - clearListBtn.classList.remove('hide'); + todoListHeading.classList.remove('hide'); ul.innerHTML = fetchedTodos .sort((a, b) => { @@ -20,10 +21,26 @@ export const ShowTodoList = async () => { }) .map((todo) => `

  • - - ${todo.title} - - + + +
    + + + +
  • `).join(""); @@ -47,9 +64,10 @@ export const ShowTodoList = async () => { } else { ul.innerHTML = `
  • -

    Your list is empty - start by adding a new task!

    + Happy cactus +

    Your list is empty
    - start fresh by adding a new task!

  • `; - clearListBtn.classList.add('hide'); + todoListHeading.classList.add('hide'); } main.innerHTML = ''; diff --git a/src/style.scss b/src/style.scss index 2a1f959..bd6fd41 100644 --- a/src/style.scss +++ b/src/style.scss @@ -4,6 +4,7 @@ @use './assets/scss/base' as *; @use './assets/scss/header' as *; @use './assets/scss/forms' as *; +@use './assets/scss/button' as *; @use './assets/scss/todos' as *; body { diff --git a/src/utils/todosService.ts b/src/utils/todosService.ts index 488ce51..d76426f 100644 --- a/src/utils/todosService.ts +++ b/src/utils/todosService.ts @@ -68,12 +68,12 @@ export const handleRenameTodo = async (btn: HTMLButtonElement, todoId: number, t } if (isDelete) { - const confirmDelete = confirm(`Are you sure you want to remove this Todo?`); + const confirmDelete = confirm(`Are you sure you want to remove this task?`); confirmDelete && await deleteTodo(todoId, userId); } if (isEdit) { - const updatedTodoTitle = prompt('Rename todo: ', todoTitle); + const updatedTodoTitle = prompt('Update task name: ', todoTitle); if (!updatedTodoTitle || updatedTodoTitle.trim() === '') return; editTodoTitle(todoId, userId, updatedTodoTitle.trim()); @@ -100,7 +100,7 @@ export const handleTodoCompletion = async (todoId: number, completed: boolean): // Clear todo list export const handleClearList = async () => { - const confirmClear = confirm(`This will permanently delete all todos. Are you sure you want to continue?`); + const confirmClear = confirm(`This will permanently delete all todos. \n Are you sure you want to continue?`); if (confirmClear) { const { data } = await supabase.auth.getUser();