Skip to content

Commit 0ec6d89

Browse files
authored
Staging to production (#68)
### DevBoard Task https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/3634/ This PR applies TDEI brand theming across the application — updating colours, typography, layout, and accessibility throughout. ### Visual changes - **Navbar** — Redesigned with TDEI brand colour (`#32006e`), new responsive mobile side-menu with slide-in animation, user profile dropdown, and sticky positioning - **Sign-in page** — Fully redesigned card layout with TDEI logo, styled inputs, show/hide password toggle, and responsive mobile view - **Dashboard** — Split-panel layout with scrollable workspace list and sticky detail panel; workspace type icons added - **Homepage** — New hero section with brand imagery and workspace type icons (OSW, Pathways, Flex) - **Buttons & links** — Replaced ad-hoc Bootstrap variants with consistent utility classes (`tdei-primary-button`, `tdei-secondary-button`, `tdei-primary-link`, `tdei-rounded-button`) ### Screenshots: <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 02 16 PM" src="https://github.com/user-attachments/assets/acaf73e3-9bea-4259-9846-03c1021574c4" /> <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 02 40 PM" src="https://github.com/user-attachments/assets/e7c76520-9f88-4042-b3cf-c83e5977a500" /> <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 06 00 PM" src="https://github.com/user-attachments/assets/65b10d2d-6042-46b8-8c18-02804cc53c0d" /> <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 08 21 PM" src="https://github.com/user-attachments/assets/7db14bb2-4ce4-4716-be2f-d4b203ed8bcb" /> <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 08 42 PM" src="https://github.com/user-attachments/assets/10893743-643c-4d8d-8b29-12df3e01e80a" /> <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 16 01 PM" src="https://github.com/user-attachments/assets/3a33c87d-9b94-4c15-a46f-b3636a753631" /> <img width="1470" height="956" alt="Screenshot 2026-05-25 at 8 17 03 PM" src="https://github.com/user-attachments/assets/4cbde4e3-9ff7-4577-911c-b523eceb3015" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Theme & Styling Updates - Updated Bootstrap primary color from `#9b0092` to TDEI brand colour `#32006e` - Added new SCSS theme variables for TDEI brand colors including `$brand-accent`, `$tdei-secondary`, `$tdei-blue`, `$tdei-green`, `$tdei-cyan`, background shades, and `$text-navy` - Expanded global styling in `main.scss` with webkit autofill transitions, new CSS variable declarations in `:root`, and dropdown menu active state styling - Added "TDEI Utility Classes" section with page header/title/subtitle helpers and typography utilities - Introduced Google Fonts module (`@nuxtjs/google-fonts`) with Open Sans and Montserrat font families ## Navigation & Navbar - Refactored `AppNavbar.vue` from Bootstrap collapsed layout to custom responsive design with sticky positioning - Implemented mobile-only off-canvas side drawer using `b-collapse` with click-to-dismiss backdrop - Added responsive behavior tracking (`isMobileView` for viewport ≤768px) with automatic drawer closure on resize - Integrated keyboard handling (Escape key to close drawer) and focus management for accessibility - Updated navbar styling with TDEI brand colors and responsive spacing - Added mobile-specific user section and logout button in side drawer - Hidden "Sign In" link for unauthenticated users (showing only the brand) ## Authentication & Sign-in Page - Redesigned `SigninForm.vue` with TDEI-branded auth card layout and updated styling - Changed password input from static to toggleable with visibility icon button controlled by `showPassword` state - Updated submit button to display dynamic state ("Signing In..." vs "Sign In") based on loading state, replacing prior spinner template - Implemented dedicated error rendering block displayed only when error exists - Improved error handling with stricter fetch-error type guard checking `response.status` and `response.json()` function - Refactored sign-in page (`pages/signin.vue`) to simplified markup with centered flex layout and login background image ## Dashboard Layout & Components - Refactored dashboard to split-panel layout with scrollable workspace list on left and sticky details panel on right - Updated `WorkspaceItem.vue` workspace picker card with type-specific icons, formatted type labels, conditional status/role pills, and responsive styling - Added `selectedProjectGroupName` computed value for project group display - Explicitly typed `selectWorkspace` function parameter as `Workspace` - Introduced new SCSS for flex split layout, responsive stacking, sticky positioning, and custom scrollbars - Updated `dashboard/Toolbar.vue` button styling: "Edit" uses primary variant, "Review/Export/Settings" use outline-secondary ## Homepage Updates - Redesigned homepage with new hero layout replacing prior centered jumbo-content - Added hero divider element and restructured hero content using `hero-shell`, `hero-copy`, and `hero-actions` classes - Made primary call-to-action conditional: routes to `/dashboard` when authenticated, otherwise to `/signin`, with dynamic button label - Updated `pages/index.vue` to import `tdeiClient` and expose auth state - Revised SCSS replacing `.jumbo` styles with new hero-specific classes and responsive breakpoint adjustments across lg/md/sm viewports ## Component Button & Link Standardization - Standardized button styling across components: - Changed outline buttons from `btn btn-outline-primary` to `btn btn-outline-secondary` (DatasetTypeRadio, help page) - Updated toolbar and modal buttons to use primary/secondary/danger variants consistently - Replaced `btn-dark` styling with appropriate primary/outline-secondary variants in review, settings, and teams components - Updated deletion confirmation button styling from outline-danger to solid danger variant ## Accessibility & UX Improvements - Added focus trap and keyboard handling in navbar for mobile menu drawer - Improved ARIA attributes and semantic HTML in refactored components - Updated button `aria-label` in WorkspaceItem to include workspace ID - Refined modal button configurations for better accessibility (e.g., custom `cancelClass` with `p-0`) - Updated component formatting for improved readability and spacing ## Additional Changes - Updated `AppLogo.vue` to use new TDEI logo (`tdei-logo.png` instead of `icon.svg`) - Modified Nuxt config to optimize dependency bundling for `BCollapse` and `BNavbar` components - Added `@nuxtjs/google-fonts` to devDependencies - Updated `nuxt-loading-indicator` styling in default layout with gradient color via CSS variables - Minor SCSS restructuring and reformatting across multiple components for consistency <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2 parents 079b2ce + 1e89d32 commit 0ec6d89

70 files changed

Lines changed: 9910 additions & 8656 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ jobs:
1212

1313
steps:
1414
- name: Checkout code
15-
uses: actions/checkout@v4
15+
uses: actions/checkout@v4
1616

1717
- name: Set up Node.js
18-
uses: actions/setup-node@v4
18+
uses: actions/setup-node@v4
1919
with:
20-
node-version: '20'
20+
node-version: '24'
2121

2222
- name: Install dependencies
2323
run: npm ci
2424

2525
- name: Run lint script
26-
run: npm run lint
26+
run: npm run lint

.github/workflows/tag.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Whenever there is a pull request merged into the branches, create tag
2+
name: Update Environment Tag
3+
on:
4+
pull_request:
5+
types: [closed]
6+
branches:
7+
- develop
8+
- staging
9+
- production
10+
jobs:
11+
update-tag:
12+
if: github.event.pull_request.merged == true
13+
runs-on: ubuntu-latest
14+
permissions:
15+
contents: write
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 1
21+
- name: Get the current branch name
22+
id: get_branch
23+
run: |
24+
TARGET_BRANCH="${{ github.event.pull_request.base.ref }}"
25+
26+
if [ "$TARGET_BRANCH" = "develop" ]; then
27+
echo "ENV_TAG=dev" >> $GITHUB_ENV
28+
elif [ "$TARGET_BRANCH" = "staging" ]; then
29+
echo "ENV_TAG=stage" >> $GITHUB_ENV
30+
elif [ "$TARGET_BRANCH" = "production" ]; then
31+
echo "ENV_TAG=prod" >> $GITHUB_ENV
32+
else
33+
echo "ENV_TAG=" >> $GITHUB_ENV
34+
fi
35+
- name: Force update tag
36+
if: ${{ env.ENV_TAG != '' }}
37+
run: |
38+
git config user.name "github-actions[bot]"
39+
git config user.email "github-actions[bot]@users.noreply.github.com"
40+
echo "Targeting tag: ${{ env.ENV_TAG }}"
41+
git tag -f $ENV_TAG
42+
git push origin $ENV_TAG --force

assets/img/bg_login.png

492 KB
Loading

assets/img/flex-type.svg

Lines changed: 47 additions & 0 deletions
Loading

assets/img/osw-type.svg

Lines changed: 9 additions & 0 deletions
Loading

assets/img/pathways-type.svg

Lines changed: 80 additions & 0 deletions
Loading

assets/img/tdei-logo.png

152 KB
Loading

assets/scss/main.scss

Lines changed: 75 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,44 @@
11
@import "theme.scss";
22
@import "bootstrap/scss/bootstrap.scss";
3+
4+
input:-webkit-autofill,
5+
input:-webkit-autofill:hover,
6+
input:-webkit-autofill:focus {
7+
transition: background-color 600000s, color 600000s;
8+
}
39
@import "maplibre-gl/dist/maplibre-gl.css";
410
@import "vue3-toastify/dist/index.css";
511

612
:root {
7-
--ws-create-color: $review-create-color;
8-
--ws-modify-color: $review-modify-color;
9-
--ws-delete-color: $review-delete-color;
13+
--primary-font-family: "Open Sans", sans-serif;
14+
--secondary-font-family: "Montserrat", sans-serif;
15+
--brand-accent: #{$brand-accent};
16+
--secondary-color: #{$tdei-secondary};
17+
--text-navy: #{$text-navy};
18+
--tdei-blue: #{$tdei-blue};
19+
--tdei-green: #{$tdei-green};
20+
--tdei-cyan: #{$tdei-cyan};
21+
--purple-background-light: #{$purple-background-light};
22+
--purple-background-dark: #{$purple-background-dark};
23+
--purple-background-medium: #{$purple-background-medium};
24+
--ws-create-color: #{$review-create-color};
25+
--ws-modify-color: #{$review-modify-color};
26+
--ws-delete-color: #{$review-delete-color};
1027
}
1128

1229
html, body, #__nuxt {
1330
width: 100%;
1431
height: 100%;
1532
}
1633

34+
body {
35+
margin: 0;
36+
font-family: var(--primary-font-family);
37+
-webkit-font-smoothing: antialiased;
38+
-moz-osx-font-smoothing: grayscale;
39+
min-height: 100vh;
40+
}
41+
1742
/* Vue page transitions */
1843
.fade-enter-active, .fade-leave-active,
1944
.layout-enter-active, .layout-leave-active,
@@ -47,6 +72,13 @@ label > .form-select:first-child {
4772
box-shadow: $box-shadow;
4873
}
4974

75+
.dropdown-item.active,
76+
.dropdown-item:active {
77+
color: $text-navy;
78+
text-decoration: none;
79+
background-color: $dropdown-active-bg;
80+
}
81+
5082
/* Review */
5183

5284
.bg-create {
@@ -67,3 +99,43 @@ label > .form-select:first-child {
6799
.text-delete {
68100
color: #{darken($review-delete-color, 3%)};
69101
}
102+
103+
/* TDEI Utility Classes */
104+
105+
.page-header-title {
106+
font-family: var(--secondary-font-family);
107+
font-size: 24px;
108+
font-weight: 700;
109+
margin-bottom: 5px;
110+
}
111+
112+
.page-header-subtitle {
113+
font-family: var(--secondary-font-family);
114+
font-size: 14px;
115+
color: $tdei-secondary;
116+
}
117+
118+
.tdei-bold-name {
119+
font-size: 16px;
120+
font-weight: 700;
121+
margin-bottom: 8px;
122+
}
123+
124+
.tdei-name-desc {
125+
font-size: 14px;
126+
color: $tdei-secondary;
127+
}
128+
129+
.tdei-hint-text {
130+
font-size: 14px;
131+
color: $tdei-secondary;
132+
font-style: italic;
133+
}
134+
135+
.header {
136+
display: flex;
137+
justify-content: space-between;
138+
align-items: center;
139+
padding-bottom: 20px;
140+
}
141+

0 commit comments

Comments
 (0)