From b07ab09f885d5f1e619ce6dbd80b1132c358def8 Mon Sep 17 00:00:00 2001 From: mohamad Date: Sun, 1 Jun 2025 22:03:08 +0200 Subject: [PATCH] Enhance styling and animations in ListsPage component - Updated transition effects for checkbox elements to use cubic-bezier for smoother animations. - Added scale transformation on hover and checked states for improved visual feedback. - Adjusted animation durations for checkbox interactions to enhance user experience. - Refined text styling for checked checkboxes to include color change and line-through effect. These changes aim to improve the overall user interface and interaction dynamics of the ListsPage component. --- fe/src/pages/ListsPage.vue | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/fe/src/pages/ListsPage.vue b/fe/src/pages/ListsPage.vue index ac5f252..8821d0b 100644 --- a/fe/src/pages/ListsPage.vue +++ b/fe/src/pages/ListsPage.vue @@ -559,12 +559,13 @@ onUnmounted(() => { display: grid; align-items: center; justify-content: center; - transition: all 0.2s ease; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .neo-checkbox-label input[type="checkbox"]:hover { border-color: var(--secondary); background: var(--light); + transform: scale(1.05); } .neo-checkbox-label input[type="checkbox"]::before, @@ -575,6 +576,7 @@ onUnmounted(() => { background: var(--primary); border-radius: 2px; opacity: 0; + transition: opacity 0.2s ease; } .neo-checkbox-label input[type="checkbox"]::before { @@ -592,21 +594,22 @@ onUnmounted(() => { .neo-checkbox-label input[type="checkbox"]:checked { border-color: var(--primary); background: var(--light); + transform: scale(1.05); } .neo-checkbox-label input[type="checkbox"]:checked::before { opacity: 1; - animation: check-01 0.4s ease forwards; + animation: check-01 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards; } .neo-checkbox-label input[type="checkbox"]:checked::after { opacity: 1; - animation: check-02 0.4s ease forwards; + animation: check-02 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards; } .checkbox-text-span { position: relative; - transition: color 0.3s ease; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .checkbox-text-span::before, @@ -614,6 +617,7 @@ onUnmounted(() => { content: ""; position: absolute; left: 0; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .checkbox-text-span::before { @@ -623,7 +627,7 @@ onUnmounted(() => { transform: translateY(-50%); background: var(--secondary); border-radius: 2px; - transition: background 0.3s ease; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .checkbox-text-span::after { @@ -632,7 +636,7 @@ onUnmounted(() => { width: 4px; height: 4px; top: 50%; - left: 50%; + left: 130%; transform: translate(-50%, -50%); border-radius: 50%; background: var(--accent); @@ -640,8 +644,15 @@ onUnmounted(() => { pointer-events: none; } +.neo-checkbox-label input[type="checkbox"]:checked+.checkbox-text-span { + color: var(--dark); + opacity: 0.7; + text-decoration: line-through var(--dark); + transform: translateX(4px); +} + .neo-checkbox-label input[type="checkbox"]:checked+.checkbox-text-span::after { - animation: firework 0.6s ease forwards 0.15s; + animation: firework 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards 0.15s; } .neo-completed-static { @@ -814,7 +825,7 @@ onUnmounted(() => { @keyframes firework { 0% { opacity: 1; - transform: translate(-50%, -50%); + transform: translate(-50%, -50%) scale(0.5); box-shadow: 0 0 0 0 var(--accent), 0 0 0 0 var(--accent), @@ -826,11 +837,12 @@ onUnmounted(() => { 50% { opacity: 1; + transform: translate(-50%, -50%) scale(1); } 100% { opacity: 0; - transform: translate(-50%, -50%); + transform: translate(-50%, -50%) scale(1.2); box-shadow: 0 -15px 0 0 var(--accent), 14px -8px 0 0 var(--accent),