From 93e8fb655ba23b11cda9bfb8ee8e368a9ccfa6b7 Mon Sep 17 00:00:00 2001 From: Leafd Date: Thu, 9 Oct 2025 16:34:19 -0400 Subject: [PATCH] feat: add filters and search bar to project page --- src/views/Projects.vue | 543 +++++++++++++++++++++++++++++++++++------ 1 file changed, 465 insertions(+), 78 deletions(-) diff --git a/src/views/Projects.vue b/src/views/Projects.vue index 388d008..735a36e 100644 --- a/src/views/Projects.vue +++ b/src/views/Projects.vue @@ -19,105 +19,313 @@

{{ error }}

-
-
-
- {{ projects.length }} project{{ projects.length !== 1 ? 's' : '' }} +
+ +
+ +
+ + + + +
+ + +
+ +
+ +
+ +
+
+ + +
+ +
+ + +
+
+ + +
+ {{ filteredProjects.length }} of {{ allProjects.length }} project{{ allProjects.length !== 1 ? 's' : '' }} +
-
-
-
-
-
-

{{ project.name }}

-
- {{ project.total_heartbeats }} heartbeats - {{ formatDuration(project.total_seconds) }} - - Active recently - + +
+
+
+
+
+
+

{{ project.name }}

+
+ {{ (project.total_heartbeats || 0).toLocaleString() }} heartbeats + {{ formatDuration(project.total_seconds || 0) }} + + Active recently + +
+
+
+
+ {{ ((project.total_seconds || 0) / 3600).toFixed(1) }}h +
-
-
- {{ (project.total_seconds / 3600).toFixed(1) }}h -
+ + +
+ + {{ language }} + + + +{{ (project.languages || []).length - 3 }} more +
-
- -
- - {{ language }} - - - +{{ project.languages.length - 3 }} more - -
- - -
- - First: {{ formatDate(project.first_heartbeat) }} - - - Last: {{ formatDate(project.last_heartbeat) }} - -
- - -
- - View Repository → - + +
+ + First: {{ formatDate(project.first_heartbeat) }} + + + Last: {{ formatDate(project.last_heartbeat) }} + +
+ + +
+ +
-

No projects found

-

+ + + +

No projects found

+

Start coding to see your projects appear here!

+ + +
+
+
+ +
+
+
+

+ {{ selectedProject.name }} +

+
+ {{ (selectedProject.total_heartbeats || 0).toLocaleString() }} heartbeats + + Active recently + +
+
+ +
+
+ + +
+ +
+
+
Total Time
+
+ {{ ((selectedProject.total_seconds || 0) / 3600).toFixed(1) }}h +
+
+ {{ formatDuration(selectedProject.total_seconds || 0) }} +
+
+ +
+
Heartbeats
+
+ {{ (selectedProject.total_heartbeats || 0).toLocaleString() }} +
+
+ Activity events +
+
+
+ + +
+

Languages

+
+ + {{ language }} + +
+
+ + +
+

Editors

+
+ + {{ editor }} + +
+
+ + + +
+
+
+
@@ -230,4 +564,57 @@ onMounted(() => { z-index: 1; box-shadow: 0 6px 0 #2A1F2B; } + +.pushable { + border-radius: 12px; + border: none; + padding: 0; + cursor: pointer; + outline-offset: 4px; + position: relative; +} + +.pushable-active { + background: linear-gradient(135deg, #B85E6D 0%, #B85E6D 33%, #B5546F 66%, #B55389 100%); +} + +.pushable-inactive { + background-color: #2A1F2B; +} + +.front { + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 12px; + transform: translateY(-4px); + transition: transform 0.1s ease; + position: relative; +} + +.pushable:active .front { + transform: translateY(-1px); +} + +.overflow-y-auto::-webkit-scrollbar, +.custom-scrollbar::-webkit-scrollbar { + width: 8px; +} + +.overflow-y-auto::-webkit-scrollbar-track, +.custom-scrollbar::-webkit-scrollbar-track { + background: rgba(42, 31, 43, 0.5); + border-radius: 4px; +} + +.overflow-y-auto::-webkit-scrollbar-thumb, +.custom-scrollbar::-webkit-scrollbar-thumb { + background: rgba(233, 150, 130, 0.3); + border-radius: 4px; +} + +.overflow-y-auto::-webkit-scrollbar-thumb:hover, +.custom-scrollbar::-webkit-scrollbar-thumb:hover { + background: rgba(233, 150, 130, 0.5); +} \ No newline at end of file