Skip to content

Commit 9d15390

Browse files
committed
feat(search-filters): modernize results cards UI with member details, owner badges, and project metadata rows
1 parent 07b64ee commit 9d15390

2 files changed

Lines changed: 117 additions & 20 deletions

File tree

src/app/features/search/components/search-filters/search-filters.component.html

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ <h2>Search & Filters</h2>
5252
<i class="pi pi-sliders-h"></i>
5353
<span>Filter Workspace</span>
5454
</div>
55-
<small>Tune project, user, ownership, and task state in one place.</small>
5655
</div>
5756

5857
<div class="search-controls">
@@ -127,26 +126,52 @@ <h2>Search & Filters</h2>
127126

128127
<div class="results-grid">
129128
<p-card styleClass="results-card">
130-
<div class="results-card__title">Users In Project</div>
129+
<div class="results-card__title">
130+
<h3>Users In Project</h3>
131+
<p>Members available in the selected project.</p>
132+
</div>
131133
<div class="results-card__body">
132134
<ul class="simple-list">
133135
<li *ngFor="let member of projectMembers">
134-
<p-avatar [label]="member.displayName.charAt(0)" shape="circle"></p-avatar>
135-
<span>{{ member.displayName }}</span>
136+
<div class="simple-list__meta">
137+
<p-avatar [label]="member.displayName.charAt(0)" shape="circle"></p-avatar>
138+
<div class="simple-list__text">
139+
<span>{{ member.displayName }}</span>
140+
<small>{{ member.email || 'No email available' }}</small>
141+
</div>
142+
</div>
143+
<p-tag *ngIf="member.isOwner" value="Owner" severity="info"></p-tag>
136144
</li>
137145
<li *ngIf="projectMembers.length === 0" class="muted">No users found.</li>
138146
</ul>
139147
</div>
140148
</p-card>
141149

142150
<p-card styleClass="results-card">
143-
<div class="results-card__title">Projects For User</div>
144-
<div class="muted mb-2" *ngIf="selectedUserId">Showing projects for {{ selectedUserName }}</div>
151+
<div class="results-card__title">
152+
<h3>Projects For User</h3>
153+
<p *ngIf="selectedUserId; else projectsHint">Showing projects for {{ selectedUserName }}.</p>
154+
<ng-template #projectsHint>
155+
<p>Select a user to list matching projects.</p>
156+
</ng-template>
157+
</div>
145158
<div class="results-card__body">
146159
<ul class="simple-list">
147-
<li *ngFor="let project of userProjects">
148-
<i class="pi pi-folder text-color-secondary"></i>
149-
<span>{{ project.name }}</span>
160+
<li *ngFor="let project of userProjects" class="project-list-item">
161+
<div class="simple-list__meta simple-list__meta--top">
162+
<i class="pi pi-folder text-color-secondary"></i>
163+
<div class="simple-list__text">
164+
<span>{{ project.name }}</span>
165+
</div>
166+
</div>
167+
<div class="project-meta-chips project-meta-chips--below-icon">
168+
<span class="project-meta-chip">
169+
Created {{ project.createdAt | date: 'mediumDate' }} by {{ project.createdByUserName || 'Unknown' }}
170+
</span>
171+
<span class="project-meta-chip">
172+
Updated {{ project.lastModifiedAt | date: 'mediumDate' }} by {{ project.lastModifiedByUserName || 'Unknown' }}
173+
</span>
174+
</div>
150175
</li>
151176
<li *ngIf="userProjects.length === 0" class="muted">No matching projects.</li>
152177
</ul>

src/app/features/search/components/search-filters/search-filters.component.scss

Lines changed: 83 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,17 @@
5353

5454
.filters-shell__header {
5555
display: flex;
56-
justify-content: space-between;
57-
align-items: center;
58-
flex-wrap: wrap;
59-
gap: 0.6rem;
56+
align-items: flex-start;
57+
gap: 0.5rem;
6058
margin-bottom: 0.75rem;
6159
}
6260

6361
.filters-shell__title {
6462
display: inline-flex;
6563
align-items: center;
6664
gap: 0.45rem;
67-
font-weight: 600;
68-
}
69-
70-
.filters-shell__header small {
71-
color: var(--text-color-secondary);
7265
}
66+
.filters-shell__title span { font-weight: 600; }
7367

7468
.search-controls {
7569
display: grid;
@@ -128,13 +122,23 @@
128122
}
129123

130124
.results-card__title {
125+
margin-bottom: 0.75rem;
126+
}
127+
128+
.results-card__title h3 {
129+
margin: 0;
131130
font-size: 1rem;
132131
font-weight: 600;
133-
margin-bottom: 0.5rem;
132+
}
133+
134+
.results-card__title p {
135+
margin: 0.25rem 0 0;
136+
color: var(--text-color-secondary);
137+
font-size: 0.82rem;
134138
}
135139

136140
.results-card__body {
137-
max-height: 11.5rem;
141+
max-height: 12.2rem;
138142
overflow-y: auto;
139143
padding-right: 0.2rem;
140144
}
@@ -149,11 +153,79 @@
149153
}
150154

151155
.simple-list li {
156+
border: 1px solid var(--surface-border);
157+
border-radius: 12px;
158+
background: color-mix(in srgb, var(--surface-100) 65%, transparent);
159+
padding: 0.62rem 0.72rem;
160+
display: flex;
161+
align-items: flex-start;
162+
justify-content: space-between;
163+
gap: 0.6rem;
164+
}
165+
166+
.project-list-item {
167+
flex-direction: column;
168+
align-items: flex-start;
169+
justify-content: flex-start;
170+
gap: 0.45rem;
171+
}
172+
173+
.simple-list__meta {
152174
display: inline-flex;
153175
align-items: center;
154176
gap: 0.45rem;
155177
}
156178

179+
.simple-list__meta--top {
180+
align-items: flex-start;
181+
}
182+
183+
.simple-list__text {
184+
display: inline-flex;
185+
flex-direction: column;
186+
gap: 0.35rem;
187+
min-width: 0;
188+
}
189+
190+
.simple-list__text span {
191+
color: var(--text-color);
192+
line-height: 1.2;
193+
}
194+
195+
.simple-list__text small {
196+
color: var(--text-color-secondary);
197+
font-size: 0.76rem;
198+
line-height: 1.2;
199+
}
200+
201+
.project-meta-chips {
202+
display: flex;
203+
flex-wrap: wrap;
204+
gap: 0.35rem;
205+
}
206+
207+
.project-meta-chips--below-icon {
208+
width: 100%;
209+
justify-content: flex-start;
210+
}
211+
212+
.project-meta-chip {
213+
display: inline-flex;
214+
align-items: center;
215+
border: 1px solid var(--surface-border);
216+
border-radius: 999px;
217+
padding: 0.16rem 0.46rem;
218+
font-size: 0.72rem;
219+
color: var(--text-color-secondary);
220+
background: color-mix(in srgb, var(--surface-100) 75%, transparent);
221+
line-height: 1.25;
222+
}
223+
224+
.simple-list li.muted {
225+
border-style: dashed;
226+
justify-content: center;
227+
}
228+
157229
.tasks-meta {
158230
display: flex;
159231
justify-content: space-between;

0 commit comments

Comments
 (0)