Skip to content

Commit 1d69efc

Browse files
Feature/UI modernization (#805)
* updated UI main page * updated UI main page * Update src/assets/css/globals.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/layouts/footers/footer-01.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 2272665 commit 1d69efc

File tree

12 files changed

+171
-40
lines changed

12 files changed

+171
-40
lines changed

src/assets/css/globals.css

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
url("/fonts/gotham/GothamPro-Light.eot?#iefix") format("embedded-opentype");
1010
font-weight: 100;
1111
font-style: normal;
12+
font-display: swap;
1213
}
1314

1415
@font-face {
@@ -22,6 +23,7 @@
2223
url("/fonts/gotham/GothamPro-LightItalic.eot?#iefix") format("embedded-opentype");
2324
font-weight: 100;
2425
font-style: italic;
26+
font-display: swap;
2527
}
2628

2729
@font-face {
@@ -35,6 +37,7 @@
3537
url("/fonts/gotham/GothamPro.eot?#iefix") format("embedded-opentype");
3638
font-weight: 200;
3739
font-style: normal;
40+
font-display: swap;
3841
}
3942

4043
@font-face {
@@ -48,6 +51,7 @@
4851
url("/fonts/gotham/GothamPro-Italic.eot?#iefix") format("embedded-opentype");
4952
font-weight: 200;
5053
font-style: italic;
54+
font-display: swap;
5155
}
5256

5357
@font-face {
@@ -61,6 +65,7 @@
6165
url("/fonts/gotham/GothamPro-Medium.eot?#iefix") format("embedded-opentype");
6266
font-weight: 400;
6367
font-style: normal;
68+
font-display: swap;
6469
}
6570

6671
@font-face {
@@ -74,6 +79,7 @@
7479
url("/fonts/gotham/GothamPro-MediumItalic.eot?#iefix") format("embedded-opentype");
7580
font-weight: 400;
7681
font-style: italic;
82+
font-display: swap;
7783
}
7884

7985
@font-face {
@@ -87,6 +93,7 @@
8793
url("/fonts/gotham/GothamPro-Bold.eot?#iefix") format("embedded-opentype");
8894
font-weight: 600;
8995
font-style: normal;
96+
font-display: swap;
9097
}
9198

9299
@font-face {
@@ -100,6 +107,7 @@
100107
url("/fonts/gotham/GothamPro-BoldItalic.eot?#iefix") format("embedded-opentype");
101108
font-weight: 600;
102109
font-style: italic;
110+
font-display: swap;
103111
}
104112

105113
@font-face {
@@ -113,6 +121,7 @@
113121
url("/fonts/gotham/GothamPro-Black.eot?#iefix") format("embedded-opentype");
114122
font-weight: 800;
115123
font-style: normal;
124+
font-display: swap;
116125
}
117126

118127
@font-face {
@@ -126,6 +135,7 @@
126135
url("/fonts/gotham/GothamPro-BlackItalic.eot?#iefix") format("embedded-opentype");
127136
font-weight: 800;
128137
font-style: italic;
138+
font-display: swap;
129139
}
130140

131141
/* Keyframes and animations */
@@ -143,6 +153,43 @@
143153
/* Global body styling */
144154

145155
body {
146-
font-family: "GothamPro", sans-serif;
147-
font-weight: 400; /* Default weight */
156+
font-family: "GothamPro", system-ui, -apple-system, sans-serif;
157+
font-weight: 400;
158+
font-size: 16px; /* Improved from 15px for better readability */
159+
line-height: 1.7; /* Increased from 1.74 for better readability */
160+
}
161+
162+
/* Improved focus states for accessibility */
163+
*:focus-visible {
164+
outline: 3px solid #c5203e;
165+
outline-offset: 2px;
166+
border-radius: 4px;
167+
}
168+
169+
/* High contrast mode support */
170+
@media (prefers-contrast: high) {
171+
body {
172+
color: #000;
173+
}
174+
}
175+
176+
/* Smooth scrolling */
177+
html {
178+
scroll-behavior: smooth;
179+
}
180+
181+
/* Improved heading scale with fluid typography */
182+
h1 {
183+
font-size: clamp(2.5rem, 5vw, 3.5rem);
184+
line-height: 1.2;
185+
}
186+
187+
h2 {
188+
font-size: clamp(2rem, 4vw, 2.75rem);
189+
line-height: 1.25;
190+
}
191+
192+
h3 {
193+
font-size: clamp(1.5rem, 3vw, 2rem);
194+
line-height: 1.3;
148195
}

src/components/blog-card/blog-01.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const BlogCard = forwardRef<HTMLDivElement, TProps>(
1111
({ title, path, category, postedAt, image, className }, ref) => (
1212
<div
1313
className={clsx(
14-
"blog-card tw-group tw-relative tw-overflow-hidden tw-rounded tw-bg-white tw-shadow-xl tw-shadow-black/5 tw-transition-all",
14+
"blog-card tw-group tw-relative tw-overflow-hidden tw-rounded-2xl tw-bg-white tw-border tw-border-gray-200/50 tw-shadow-md tw-shadow-black/5 tw-transition-all tw-duration-500 hover:tw-shadow-2xl hover:tw-shadow-primary/10 hover:-tw-translate-y-2",
1515
className
1616
)}
1717
ref={ref}

src/components/course-card/course-01.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const CourseCard = forwardRef<HTMLDivElement, TProps>(
1414
return (
1515
<div
1616
className={clsx(
17-
"group tw-h-full tw-overflow-hidden tw-rounded tw-bg-gray-100 tw-transition-all hover:tw-bg-white hover:tw-shadow-4xl hover:tw-shadow-black/[0.12]",
17+
"group tw-h-full tw-overflow-hidden tw-rounded-2xl tw-bg-white tw-border tw-border-gray-200/50 tw-transition-all tw-duration-500 hover:tw-bg-white hover:tw-shadow-2xl hover:tw-shadow-primary/10 hover:-tw-translate-y-2",
1818
className
1919
)}
2020
ref={ref}

src/components/ui/button/index.tsx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,40 +83,40 @@ const Button = ({
8383
hover,
8484
}: ButtonProps) => {
8585
const baseClass =
86-
"tw-font-bold tw-justify-center tw-items-center tw-border tw-border-solid tw-rounded-md tw-transition-colors tw-min-w-max";
86+
"tw-font-bold tw-justify-center tw-items-center tw-border tw-border-solid tw-rounded-lg tw-transition-all tw-duration-300 tw-ease-out tw-min-w-max";
8787
const baseNotFullWidthClass = !fullwidth && "tw-inline-flex";
8888
const lightHoverClass =
8989
!disabled &&
9090
!active &&
9191
hover === "light" &&
92-
"hover:tw-bg-white hover:tw-border-white hover:tw-text-primary";
92+
"hover:tw-bg-white hover:tw-border-white hover:tw-text-primary hover:tw-shadow-lg hover:tw-shadow-white/25 hover:tw-scale-105 active:tw-scale-95";
9393

9494
// Primary Button
95-
const containedPrimaryClass = "tw-bg-primary tw-border-primary tw-text-white";
95+
const containedPrimaryClass = "tw-bg-primary tw-border-primary tw-text-white tw-shadow-md tw-shadow-primary/20";
9696
const containedPrimaryHoverClass =
9797
!disabled &&
9898
!active &&
9999
hover === "default" &&
100-
"hover:tw-bg-secondary hover:tw-border-secondary hover:tw-text-white";
100+
"hover:tw-bg-secondary hover:tw-border-secondary hover:tw-text-white hover:tw-shadow-lg hover:tw-shadow-primary/30 hover:tw-scale-105 active:tw-scale-95";
101101
const containedPrimaryActiveClass =
102102
!disabled &&
103103
active &&
104-
"tw-bg-secondary tw-border-secondary active:tw-bg-secondary active:tw-border-secondary";
104+
"tw-bg-secondary tw-border-secondary active:tw-bg-secondary active:tw-border-secondary tw-shadow-xl tw-shadow-primary/40";
105105
const containedPrimaryBtn = color === "primary" && [
106106
containedPrimaryClass,
107107
containedPrimaryHoverClass,
108108
containedPrimaryActiveClass,
109109
lightHoverClass,
110110
];
111111

112-
const outlinedPrimaryClass = "tw-bg-transparent tw-border-primary tw-text-primary";
112+
const outlinedPrimaryClass = "tw-bg-transparent tw-border-primary tw-text-primary tw-border-2";
113113
const outlinedPrimaryHoverClass =
114-
!disabled && !active && hover === "default" && "hover:tw-bg-primary hover:tw-text-white";
114+
!disabled && !active && hover === "default" && "hover:tw-bg-primary hover:tw-text-white hover:tw-shadow-lg hover:tw-shadow-primary/20 hover:tw-scale-105 active:tw-scale-95";
115115
const outlinedPrimaryActiveClass =
116116
!disabled &&
117117
active &&
118118
hover === "default" &&
119-
"tw-bg-primary tw-border-primary tw-text-white active:tw-bg-primary active:tw-bg-primary";
119+
"tw-bg-primary tw-border-primary tw-text-white active:tw-bg-primary active:tw-bg-primary tw-shadow-lg tw-shadow-primary/30";
120120
const outlinedPrimaryBtn = color === "primary" && [
121121
outlinedPrimaryClass,
122122
outlinedPrimaryHoverClass,
@@ -125,16 +125,16 @@ const Button = ({
125125
];
126126

127127
// Light Button
128-
const containedLightClass = "tw-bg-light tw-border-light tw-text-heading";
128+
const containedLightClass = "tw-bg-light tw-border-light tw-text-heading tw-shadow-sm";
129129
const containedLightHoverClass =
130130
!disabled &&
131131
!active &&
132132
hover === "default" &&
133-
"hover:tw-bg-primary hover:tw-border-primary hover:tw-text-white";
133+
"hover:tw-bg-primary hover:tw-border-primary hover:tw-text-white hover:tw-shadow-lg hover:tw-shadow-primary/20 hover:tw-scale-105 active:tw-scale-95";
134134
const containedLightActiveClass =
135135
!disabled &&
136136
active &&
137-
"tw-bg-primary tw-border-primary active:tw-bg-primary active:tw-border-primary";
137+
"tw-bg-primary tw-border-primary active:tw-bg-primary active:tw-border-primary tw-shadow-lg tw-shadow-primary/30";
138138
const containedLightBtn = color === "light" && [
139139
containedLightClass,
140140
containedLightHoverClass,
@@ -163,6 +163,7 @@ const Button = ({
163163
const mdBtn =
164164
size === "md" &&
165165
"tw-text-md tw-px-7 tw-py-1 tw-min-h-[48px] md:tw-min-h-[52px] md:tw-px-10";
166+
const smBtn = size === "sm" && "tw-text-sm tw-px-6 tw-py-1 tw-min-h-[40px] md:tw-min-h-[44px]";
166167
const xsBtn = size === "xs" && "tw-text-[13px] tw-px-5 tw-leading-[30px] tw-min-h-8";
167168

168169
// Button Shapes
@@ -175,7 +176,7 @@ const Button = ({
175176
variant !== "texted" && baseNotFullWidthClass,
176177
variant === "contained" && [containedPrimaryBtn, containedLightBtn],
177178
variant === "outlined" && [outlinedPrimaryBtn, outlinedLightBtn],
178-
!iconButton && variant !== "texted" && [mdBtn, xsBtn],
179+
!iconButton && variant !== "texted" && [mdBtn, smBtn, xsBtn],
179180
roundedBtn,
180181
ellipseBtn,
181182
fullBtn,

src/containers/hero/layout-04/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const HeroArea = ({ data: { images, headings, texts, buttons, video } }: TProps)
4848
left: 0,
4949
width: "100%",
5050
height: "100%",
51-
backgroundColor: "rgba(9, 31, 64, 0.5)",
51+
background: "linear-gradient(135deg, rgba(9, 31, 64, 0.85) 0%, rgba(197, 32, 62, 0.75) 100%)",
5252
}}
5353
/>
5454
</div>

src/containers/hero/layout-07/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ const HeroArea = ({ data: { items } }: TProps) => {
5757
<div
5858
className="tw-absolute tw-inset-0"
5959
style={{
60-
backgroundColor: "rgba(9, 31, 64, 0.5)",
60+
background:
61+
"linear-gradient(135deg, rgba(9, 31, 64, 0.85) 0%, rgba(197, 32, 62, 0.75) 100%)",
6162
}}
6263
/>
6364
</div>

src/containers/timeline/item.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ type TProps = {
1414
const TimelineItem = ({ isEven, title, image, heading, texts }: TProps) => {
1515
return (
1616
<li className="tw-relative tw-mb-10 tw-grid tw-w-full tw-grid-cols-1 tw-pl-[45px] last:tw-mb-0 md:tw-grid-cols-2 md:tw-pl-0 lg:tw-mb-[68px]">
17-
<div className="tw-absolute tw-left-0 tw-top-0.5 tw-h-7.5 tw-w-7.5 tw-text-primary before:tw-absolute before:tw-inset-0 before:tw-rounded-full before:tw-border before:tw-border-current before:tw-opacity-20 before:tw-content-[''] md:tw-left-1/2 md:-tw-translate-x-1/2">
18-
<div className="tw-absolute tw-left-1/2 tw-right-1/2 tw-z-10 tw-h-[14px] tw-w-[14px] -tw-translate-x-1/2 tw-translate-y-1/2 tw-rounded-full tw-border-[3px] tw-border-current tw-bg-white" />
17+
<div className="tw-absolute tw-left-0 tw-top-0.5 tw-h-7.5 tw-w-7.5 tw-text-primary before:tw-absolute before:tw-inset-0 before:tw-animate-pulse-soft before:tw-rounded-full before:tw-border-2 before:tw-border-current before:tw-opacity-30 before:tw-shadow-lg before:tw-shadow-primary/20 before:tw-content-[''] md:tw-left-1/2 md:-tw-translate-x-1/2">
18+
<div className="tw-absolute tw-left-1/2 tw-right-1/2 tw-z-10 tw-h-[16px] tw-w-[16px] -tw-translate-x-1/2 tw-translate-y-1/2 tw-rounded-full tw-border-[3px] tw-border-current tw-bg-white tw-shadow-md tw-shadow-primary/30" />
1919
</div>
2020
<motion.div
2121
className={clsx(
@@ -35,11 +35,11 @@ const TimelineItem = ({ isEven, title, image, heading, texts }: TProps) => {
3535
</h3>
3636
)}
3737
{image?.src && (
38-
<figure>
38+
<figure className="tw-group/img tw-overflow-hidden tw-rounded-2xl tw-border tw-border-gray-200/50 tw-shadow-lg tw-shadow-black/5 tw-transition-all tw-duration-500 hover:tw-shadow-2xl hover:tw-shadow-primary/10">
3939
<img
4040
src={image.src}
4141
alt={image?.alt || ""}
42-
className="tw-h-full tw-w-full tw-rounded tw-object-cover"
42+
className="tw-h-full tw-w-full tw-object-cover tw-transition-transform tw-duration-700 group-hover/img:tw-scale-110"
4343
/>
4444
</figure>
4545
)}

src/layouts/footers/footer-01.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ const Footer01 = ({ mode }: TProps) => {
1111
return (
1212
<footer
1313
className={clsx(
14-
"tw-pb-[50px] tw-pt-[70px]",
15-
mode === "dark" && "tw-bg-dark-100",
14+
"tw-pb-[50px] tw-pt-[70px] tw-relative",
15+
mode === "dark" && "tw-bg-gradient-to-b tw-from-gray-900 tw-to-gray-950 tw-text-gray-300",
1616
mode === "light" && "tw-bg-light-100"
1717
)}
1818
>
19+
{mode === "dark" && (
20+
<div className="tw-absolute tw-top-0 tw-left-0 tw-right-0 tw-h-px tw-bg-gradient-to-r tw-from-transparent tw-via-primary tw-to-transparent tw-opacity-50" />
21+
)}
1922
<h2 className="tw-sr-only">Footer</h2>
2023
<div className="tw-container">
2124
<div className="tw-grid tw-grid-cols-12">
@@ -46,13 +49,18 @@ const Footer01 = ({ mode }: TProps) => {
4649
</a>
4750
</div>
4851
</div>
49-
<p className="copyright tw-mt-5 tw-text-center tw-text-md tw-text-gray-400">
52+
<p className="copyright tw-mt-5 tw-text-center tw-text-base tw-text-gray-400">
5053
&copy; {new Date().getFullYear()} Vets Who Code{" "}
51-
<a target="_blank" rel="noopener noreferrer" href="https://www.vetswhocode.io/">
54+
<a
55+
target="_blank"
56+
rel="noopener noreferrer"
57+
href="https://www.vetswhocode.io/"
58+
className="tw-transition-colors hover:tw-text-primary"
59+
>
5260
All Rights Reserved
5361
</a>
5462
</p>
55-
<p className="copyright mt-n5 tw-text-center tw-text-md tw-text-gray-400">
63+
<p className="copyright tw-mt-2 tw-text-center tw-text-base tw-text-gray-400">
5664
Vets Who Code is a registered 501(c)(3) nonprofit under EIN 86-2122804.
5765
Donations are tax-deductible to the fullest extent allowable under the law.
5866
</p>

src/layouts/headers/header.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const Header = ({ shadow, fluid }: TProps) => {
4141
<i className="far fa-clock tw-mr-[5px] tw-text-lg tw-text-secondary" />
4242
<CountdownTimer targetDate="2025/11/11" />
4343
</div>
44-
<Button size="xs" path="/donate">
44+
<Button size="sm" path="/donate" className="tw-shadow-lg tw-shadow-primary/25">
4545
Donate
4646
</Button>
4747
</div>
@@ -50,10 +50,10 @@ const Header = ({ shadow, fluid }: TProps) => {
5050
<div
5151
ref={measuredRef}
5252
className={clsx(
53-
"header-inner tw-left-0 tw-top-0 tw-z-50 tw-h-auto tw-w-full tw-bg-white tw-py-[25px] tw-transition-all xl:tw-py-0",
54-
!sticky && "tw-absolute",
53+
"header-inner tw-left-0 tw-top-0 tw-z-50 tw-h-auto tw-w-full tw-py-[25px] tw-transition-all xl:tw-py-0",
54+
!sticky && "tw-absolute tw-bg-white",
5555
sticky &&
56-
"tw-fixed tw-animate-headerSlideDown tw-shadow-3md tw-shadow-black/10",
56+
"tw-fixed tw-animate-headerSlideDown tw-backdrop-blur-lg tw-bg-white/90 tw-border-b tw-border-gray-200/50 tw-shadow-lg tw-shadow-black/5",
5757
shadow && "tw-shadow-sm tw-shadow-black/5"
5858
)}
5959
>

0 commit comments

Comments
 (0)