Skip to content

Commit a22d326

Browse files
authored
feat(ui): improve UX with contextual descriptions and UI polish (#172)
Comprehensive UI/UX improvements across meetings, dashboards, and components to enhance user understanding and consistency. Meeting Creation Flow (LFXV2-778): - Add contextual headers and descriptions to all meeting setup steps - Improve copy clarity for Meeting Details, Platform, Guests, Resources - Update text colors for consistency (text-slate-500 → text-neutral-500) - Hide "Add Guest" button when form is already open Dashboard Descriptions (LFXV2-779): - Add page descriptions to Committees and Meetings dashboards - Provide context about page purposes for better user understanding - Adjust layout structure to accommodate descriptions Filter Label Consistency (LFXV2-780): - Standardize filter labels to singular form - Update Foundation Health: Contributors → Contribution, etc. - Update Organization Involvement filter labels - Fix import statement ordering Data Copilot Rebranding (LFXV2-781): - Rename "LFX Data Copilot" to "Ask LFX Lens" - Improve drawer responsive sizing (xl:w-2/5 lg:w-2/3) - Adjust committee table column width for better readability LFXV2-778 LFXV2-779 LFXV2-780 LFXV2-781 Signed-off-by: Asitha de Silva <asithade@gmail.com>
1 parent 743a42d commit a22d326

File tree

13 files changed

+68
-49
lines changed

13 files changed

+68
-49
lines changed

apps/lfx-one/src/app/modules/committees/committee-dashboard/committee-dashboard.component.html

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,22 @@
1111
</div>
1212
} @else {
1313
<div class="mb-8">
14-
<!-- Page Title with Create Group Button -->
15-
<div class="flex justify-between items-center w-full gap-4 mb-8">
16-
<h1>{{ committeeLabelPlural }}</h1>
17-
@if (canCreateGroup()) {
18-
<lfx-button
19-
[label]="'Create ' + committeeLabel"
20-
icon="fa-light fa-users mr-1"
21-
severity="primary"
22-
size="small"
23-
(onClick)="openCreateDialog()"
24-
data-testid="committee-new-cta">
25-
</lfx-button>
26-
}
14+
<div class="mb-8">
15+
<!-- Page Title with Create Group Button -->
16+
<div class="flex justify-between items-center w-full gap-4">
17+
<h1>{{ committeeLabelPlural }}</h1>
18+
@if (canCreateGroup()) {
19+
<lfx-button
20+
[label]="'Create ' + committeeLabel"
21+
icon="fa-light fa-users mr-1"
22+
severity="primary"
23+
size="small"
24+
(onClick)="openCreateDialog()"
25+
data-testid="committee-new-cta">
26+
</lfx-button>
27+
}
28+
</div>
29+
<p class="mt-2 text-neutral-500">A group is a team of people like committees, boards, or working groups organized to collaborate across your project</p>
2730
</div>
2831

2932
<!-- Sticky Top Bar with Search and Filters -->

apps/lfx-one/src/app/modules/committees/components/committee-table/committee-table.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<table class="min-w-full" data-testid="committee-dashboard-table">
77
<thead>
88
<tr>
9-
<th class="px-3 py-3 text-left text-xs font-medium text-[#62748e] w-[180px]">{{ committeeLabel() }}</th>
9+
<th class="px-3 py-3 text-left text-xs font-medium text-[#62748e] min-w-[250px]">{{ committeeLabel() }}</th>
1010
<th class="px-3 py-3 text-left text-xs font-medium text-[#62748e] min-w-[300px]">Description</th>
1111
<th class="px-3 py-3 text-left text-xs font-medium text-[#62748e] w-[80px]">Members</th>
1212
<th class="px-3 py-3 text-left text-xs font-medium text-[#62748e] w-[80px]">Voting</th>

apps/lfx-one/src/app/modules/dashboards/components/foundation-health/foundation-health.component.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
// SPDX-License-Identifier: MIT
33

44
import { CommonModule } from '@angular/common';
5-
import { Component, computed, ElementRef, signal, ViewChild, input } from '@angular/core';
5+
import { Component, computed, ElementRef, input, signal, ViewChild } from '@angular/core';
66
import { ChartComponent } from '@components/chart/chart.component';
77
import { FilterOption, FilterPillsComponent } from '@components/filter-pills/filter-pills.component';
8-
import { AGGREGATE_FOUNDATION_METRICS, FOUNDATION_SPARKLINE_CHART_OPTIONS, FOUNDATION_BAR_CHART_OPTIONS } from '@lfx-one/shared/constants';
8+
import { AGGREGATE_FOUNDATION_METRICS, FOUNDATION_BAR_CHART_OPTIONS, FOUNDATION_SPARKLINE_CHART_OPTIONS } from '@lfx-one/shared/constants';
99
import { FoundationMetricCard, MetricCategory, TopProjectDisplay } from '@lfx-one/shared/interfaces';
1010
import { hexToRgba } from '@lfx-one/shared/utils';
1111

@@ -25,9 +25,9 @@ export class FoundationHealthComponent {
2525

2626
public readonly filterOptions: FilterOption[] = [
2727
{ id: 'all', label: 'All' },
28-
{ id: 'contributors', label: 'Contributors' },
29-
{ id: 'projects', label: 'Projects' },
30-
{ id: 'events', label: 'Events' },
28+
{ id: 'contributors', label: 'Contribution' },
29+
{ id: 'projects', label: 'Project' },
30+
{ id: 'events', label: 'Event' },
3131
];
3232

3333
public readonly sparklineOptions = FOUNDATION_SPARKLINE_CHART_OPTIONS;

apps/lfx-one/src/app/modules/dashboards/components/organization-involvement/organization-involvement.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ export class OrganizationInvolvementComponent {
4646
public readonly barChartOptions = BAR_CHART_OPTIONS;
4747
public readonly filterOptions: FilterOption[] = [
4848
{ id: 'all', label: 'All' },
49-
{ id: 'contributions', label: 'Contributions' },
50-
{ id: 'events', label: 'Events' },
49+
{ id: 'contributions', label: 'Contribution' },
50+
{ id: 'events', label: 'Event' },
5151
{ id: 'education', label: 'Education' },
5252
];
5353

apps/lfx-one/src/app/modules/dashboards/components/pending-actions/pending-actions.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<section class="flex flex-col flex-1" data-testid="dashboard-pending-actions-section">
55
<!-- Header -->
66
<div class="flex items-center justify-between mb-4">
7-
<h2 class="py-1.5">Pending Actions</h2>
7+
<h2 class="py-1">Pending Actions</h2>
88
</div>
99

1010
<!-- Scrollable Content -->

apps/lfx-one/src/app/modules/meetings/components/meeting-details/meeting-details.component.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
<!-- SPDX-License-Identifier: MIT -->
33

44
<div class="space-y-6">
5+
<div class="text-center mb-4">
6+
<h2 class="mb-2">Meeting Details</h2>
7+
<p class="text-neutral-500 text-base">Set the date, time, and schedule to help participants plan and prepare effectively</p>
8+
</div>
9+
510
<!-- Basic Information Section -->
611
<div class="flex flex-col gap-4">
712
<!-- Meeting Title (Required) -->

apps/lfx-one/src/app/modules/meetings/components/meeting-platform-features/meeting-platform-features.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<!-- Header -->
66
<div class="text-center mb-8">
77
<h2 class="mb-2">Meeting Platform & Features</h2>
8-
<p class="text-slate-500 text-sm">Choose your meeting platform and enable helpful features.</p>
8+
<p class="text-neutral-500 text-base">Select your video platform and enable transparency features like recording and public calendars</p>
99
</div>
1010

1111
<!-- Meeting Platform Selection -->
@@ -14,6 +14,7 @@ <h2 class="mb-2">Meeting Platform & Features</h2>
1414

1515
<lfx-select
1616
[form]="form()"
17+
class="mb-4"
1718
control="platform"
1819
[options]="platformDropdownOptions"
1920
placeholder="Select meeting platform"

apps/lfx-one/src/app/modules/meetings/components/meeting-registrants-manager/meeting-registrants-manager.component.html

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,26 @@
66
<p-confirmDialog></p-confirmDialog>
77

88
<!-- Main Card Container (following React pattern) -->
9+
<!-- Header -->
10+
<div class="text-center mb-8">
11+
<h2 class="mb-2">Invite Guests</h2>
12+
<p class="text-neutral-500 text-base">Include key stakeholders and contributors who should participate in this discussion</p>
13+
</div>
914

1015
<div class="flex items-center mb-4">
1116
<div class="flex items-center gap-3">
1217
<!-- <lfx-button size="small" label="Bulk Add" icon="fa-light fa-upload" severity="secondary" data-testid="bulk-add-button" (click)="onBulkAdd()">
1318
</lfx-button> -->
14-
<lfx-button
15-
size="small"
16-
label="Add Guest"
17-
icon="fa-light fa-user-plus"
18-
severity="secondary"
19-
data-testid="add-guest-button"
20-
(click)="onToggleAddRegistrant()">
21-
</lfx-button>
19+
@if (!showAddForm()) {
20+
<lfx-button
21+
size="small"
22+
label="Add Guest"
23+
icon="fa-light fa-user-plus"
24+
severity="secondary"
25+
data-testid="add-guest-button"
26+
(click)="onToggleAddRegistrant()">
27+
</lfx-button>
28+
}
2229
</div>
2330
</div>
2431

apps/lfx-one/src/app/modules/meetings/components/meeting-registrants-manager/meeting-registrants-manager.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export class MeetingRegistrantsManagerComponent implements OnInit {
5454
// Writable signals for state management
5555
public registrantsWithState: WritableSignal<MeetingRegistrantWithState[]> = signal([]);
5656
public loading: WritableSignal<boolean> = signal(true);
57-
public showAddForm = signal<boolean>(false);
57+
public showAddForm = signal<boolean>(true);
5858
public showImport = signal<boolean>(false);
5959
public editingRegistrantId = signal<string | null>(null);
6060
public searchTerm = signal<string>('');

apps/lfx-one/src/app/modules/meetings/components/meeting-resources-summary/meeting-resources-summary.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div class="space-y-6">
55
<div class="text-center mb-8">
66
<h2 class="mb-2">Resources & Links</h2>
7-
<p class="text-slate-500 text-base">Add any important links or resources guests should review.</p>
7+
<p class="text-neutral-500 text-base">Share documents, agendas, and reference materials so participants come prepared</p>
88
</div>
99

1010
<div class="space-y-6">

0 commit comments

Comments
 (0)