Skip to content

Commit 0a23a53

Browse files
committed
fixed styles in header and home svelte components
1 parent 05e59a2 commit 0a23a53

File tree

2 files changed

+153
-43
lines changed

2 files changed

+153
-43
lines changed

frontend/src/components/Header.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
<Link to="/login" on:click={closeMenu} class="btn btn-secondary-outline btn-sm">
108108
Login
109109
</Link>
110-
<Link to="/register" on:click={closeMenu} class="btn btn-primary btn-sm">
110+
<Link to="/register" on:click={closeMenu} class="btn btn-primary btn-sm hover:text-white">
111111
Register
112112
</Link>
113113
{/if}

frontend/src/routes/Home.svelte

Lines changed: 152 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -20,47 +20,67 @@
2020
{#if ready}
2121
<div class="overflow-x-hidden">
2222

23-
<section class="hero-section relative isolate overflow-hidden bg-bg-default dark:bg-dark-bg-default px-6 pt-24 pb-16 sm:pt-32 sm:pb-24 lg:px-8 text-center">
24-
<div class="mx-auto max-w-2xl relative z-10">
23+
<!-- HERO SECTION - Enhanced responsiveness -->
24+
<section class="hero-section relative isolate bg-bg-default dark:bg-dark-bg-default min-h-screen flex items-center justify-center px-4 sm:px-6 lg:px-8 xl:px-12 2xl:px-20">
25+
<div class="relative z-10 text-center w-full">
2526
<div class="animate-flyIn" style="--fly-y: -20px; --fly-delay: 100ms;">
26-
<h1 class="text-4xl font-bold tracking-tight text-fg-default dark:text-dark-fg-default sm:text-6xl !leading-tight">
27+
<h1 class="mx-auto max-w-full xl:max-w-7xl text-3xl sm:text-4xl md:text-5xl lg:text-6xl xl:text-7xl font-bold tracking-tight text-fg-default dark:text-dark-fg-default !leading-tight px-2 sm:px-4">
2728
Code, Run, <span class="text-primary dark:text-primary-light">Integrate</span>. Instantly.
2829
</h1>
2930
</div>
3031
<div class="animate-flyIn" style="--fly-y: 15px; --fly-delay: 300ms;">
31-
<p class="mt-6 text-lg leading-8 text-fg-muted dark:text-dark-fg-muted">
32-
Welcome to Integr8sCode – the seamless online Python execution environment built on Kubernetes.
32+
<p class="mx-auto mt-4 sm:mt-6 max-w-full lg:max-w-4xl xl:max-w-5xl text-base sm:text-lg md:text-xl leading-relaxed text-fg-muted dark:text-dark-fg-muted px-4 sm:px-8 lg:px-12">
33+
Welcome to Integr8sCode – the seamless online execution environment built on Kubernetes.
3334
Paste your script, hit run, and get results securely and efficiently.
3435
</p>
3536
</div>
36-
<div class="mt-10 animate-flyIn" style="--fly-y: 15px; --fly-delay: 500ms;">
37-
<Link to="/editor" class="btn btn-primary btn-lg px-8 py-3 text-base font-semibold shadow-lg hover:shadow-primary/40 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary transition-all duration-300 ease-out-expo hover:-translate-y-0.5">
37+
<div class="mt-8 sm:mt-10 animate-flyIn" style="--fly-y: 15px; --fly-delay: 500ms;">
38+
<Link to="/editor" class="btn btn-primary btn-lg px-6 sm:px-8 py-2.5 sm:py-3 text-sm sm:text-base font-semibold shadow-lg hover:shadow-primary/40 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary transition-all duration-300 ease-out-expo hover:-translate-y-0.5 hover:text-white">
3839
Start Coding Now
3940
</Link>
4041
</div>
4142
</div>
4243
</section>
4344

44-
<section class="bg-bg-alt dark:bg-dark-bg-alt py-16 sm:py-24 lg:py-32">
45-
<div class="app-container">
46-
<div class="mx-auto max-w-xl text-center mb-12 lg:mb-16">
47-
<h2 class="text-base font-semibold leading-7 text-primary dark:text-primary-light animate-flyIn" style="--fly-delay: 600ms;">Core Features</h2>
48-
<p class="mt-2 text-3xl font-bold tracking-tight text-fg-default dark:text-dark-fg-default sm:text-4xl animate-flyIn" style="--fly-delay: 700ms;">
49-
Everything you need for quick execution.
50-
</p>
51-
</div>
52-
<div class="grid grid-cols-1 gap-x-6 gap-y-10 md:grid-cols-3 md:gap-x-8 md:gap-y-12 lg:gap-x-10">
53-
{#each features as feature, i}
54-
<div class="relative flex flex-col items-start text-left p-6 bg-bg-default dark:bg-dark-bg-default rounded-xl shadow-sm border border-border-default dark:border-dark-border-default transition-all duration-300 ease-out-expo hover:shadow-lg hover:border-primary/30 dark:hover:border-primary/40 hover:-translate-y-1 animate-flyIn"
55-
style="--fly-y: 20px; --fly-delay: {800 + i * 150}ms;">
56-
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 dark:bg-primary/20 text-primary dark:text-primary-light mb-5">
57-
{@html feature.icon}
58-
</div>
59-
<h3 class="text-lg font-semibold leading-7 text-fg-default dark:text-dark-fg-default">{feature.title}</h3>
60-
<p class="mt-2 flex-grow text-sm leading-6 text-fg-muted dark:text-dark-fg-muted">{feature.content}</p>
45+
<!-- FEATURES SECTION - Full width utilization -->
46+
<section class="bg-bg-default dark:bg-dark-bg-default py-16 sm:py-20 lg:py-28 px-4 sm:px-6 lg:px-8 xl:px-12 2xl:px-20">
47+
<div class="mx-auto max-w-full text-center mb-12 sm:mb-16">
48+
<h2 class="text-sm sm:text-base font-semibold leading-7 text-primary dark:text-primary-light animate-flyIn uppercase tracking-wider" style="--fly-delay: 600ms;">Core Features</h2>
49+
<p class="mt-2 text-2xl sm:text-3xl lg:text-4xl font-bold tracking-tight text-fg-default dark:text-dark-fg-default animate-flyIn" style="--fly-delay: 700ms;">
50+
Everything you need for quick execution.
51+
</p>
52+
<div class="mx-auto mt-6 w-24 h-1 bg-gradient-to-r from-transparent via-primary to-transparent animate-flyIn" style="--fly-delay: 800ms;"></div>
53+
</div>
54+
55+
<!-- Responsive grid with better space utilization -->
56+
<div class="mx-auto max-w-full 2xl:max-w-screen-2xl grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6 lg:gap-8 xl:gap-10">
57+
{#each features as feature, i}
58+
<div class="feature-card relative flex flex-col items-start text-left p-6 sm:p-8 lg:p-10 bg-bg-alt dark:bg-dark-bg-alt rounded-2xl shadow-xl border border-border-default/50 dark:border-dark-border-default/30 transition-all duration-500 ease-out-expo hover:shadow-2xl hover:border-primary/50 dark:hover:border-primary/60 hover:-translate-y-2 animate-flyIn h-full overflow-hidden group"
59+
style="--fly-y: 30px; --fly-delay: {800 + i * 150}ms;">
60+
<!-- Number accent -->
61+
<div class="absolute top-6 right-6 text-5xl font-bold text-primary/10 dark:text-primary/20 select-none group-hover:text-primary/20 dark:group-hover:text-primary/30 transition-colors duration-500">
62+
0{i + 1}
63+
</div>
64+
65+
<!-- Gradient overlay for depth -->
66+
<div class="absolute inset-0 bg-gradient-to-br from-primary/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500"></div>
67+
68+
<!-- Animated background pattern -->
69+
<div class="absolute -right-8 -top-8 w-32 h-32 bg-primary/10 rounded-full blur-3xl opacity-0 group-hover:opacity-50 transition-all duration-700 group-hover:scale-150"></div>
70+
71+
<!-- Content with relative positioning -->
72+
<div class="relative z-10">
73+
<div class="icon-wrapper flex h-14 w-14 sm:h-16 sm:w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-primary/20 to-primary/10 dark:from-primary/30 dark:to-primary/15 text-primary dark:text-primary-light mb-6 shadow-lg group-hover:shadow-primary/25 transition-all duration-500 group-hover:scale-110 group-hover:rotate-3">
74+
{@html feature.icon}
6175
</div>
62-
{/each}
76+
<h3 class="text-lg sm:text-xl font-bold leading-7 sm:leading-8 text-fg-default dark:text-dark-fg-default mb-3 group-hover:text-primary dark:group-hover:text-primary-light transition-colors duration-300">{feature.title}</h3>
77+
<p class="flex-grow text-sm sm:text-base leading-6 sm:leading-7 text-fg-muted dark:text-dark-fg-muted group-hover:text-fg-default dark:group-hover:text-dark-fg-muted transition-colors duration-300">{feature.content}</p>
78+
79+
<!-- Subtle bottom accent -->
80+
<div class="absolute bottom-0 left-0 right-0 h-1 bg-gradient-to-r from-transparent via-primary/30 to-transparent transform scale-x-0 group-hover:scale-x-100 transition-transform duration-500"></div>
81+
</div>
6382
</div>
83+
{/each}
6484
</div>
6585
</section>
6686

@@ -82,7 +102,7 @@
82102
opacity: 0;
83103
}
84104
85-
/* Animated Shapes Background */
105+
/* Animated Shapes Background - Responsive sizing */
86106
@keyframes shape-float-1 {
87107
0% { transform: translate(0, 0) rotate(0deg) scale(1); }
88108
25% { transform: translate(-10px, 15px) rotate(10deg) scale(1.05); }
@@ -98,47 +118,137 @@
98118
100% { transform: translate(0, 0) rotate(0deg) scale(1); }
99119
}
100120
121+
/* Feature card enhancements */
122+
.feature-card {
123+
position: relative;
124+
background: theme('colors.bg.alt');
125+
backdrop-filter: blur(10px);
126+
}
127+
128+
.dark .feature-card {
129+
background: theme('colors.dark.bg.alt');
130+
}
131+
132+
.feature-card::before {
133+
content: '';
134+
position: absolute;
135+
inset: -2px;
136+
background: linear-gradient(135deg,
137+
theme('colors.primary.DEFAULT') 0%,
138+
transparent 40%,
139+
transparent 60%,
140+
theme('colors.secondary.DEFAULT') 100%);
141+
border-radius: 1rem;
142+
opacity: 0;
143+
transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1);
144+
z-index: -1;
145+
}
146+
147+
.feature-card:hover::before {
148+
opacity: 0.2;
149+
}
150+
151+
.icon-wrapper {
152+
position: relative;
153+
}
154+
155+
.icon-wrapper::after {
156+
content: '';
157+
position: absolute;
158+
inset: -4px;
159+
background: radial-gradient(circle, theme('colors.primary.DEFAULT') 0%, transparent 70%);
160+
opacity: 0;
161+
border-radius: 1rem;
162+
transition: opacity 0.5s ease;
163+
z-index: -1;
164+
}
165+
166+
.group:hover .icon-wrapper::after {
167+
opacity: 0.3;
168+
}
169+
170+
.icon-wrapper svg {
171+
transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
172+
}
173+
174+
.group:hover .icon-wrapper svg {
175+
transform: scale(1.1);
176+
}
177+
178+
/* Subtle floating animation for icons */
179+
@keyframes icon-float {
180+
0%, 100% { transform: translateY(0); }
181+
50% { transform: translateY(-4px); }
182+
}
183+
184+
.group:hover .icon-wrapper {
185+
animation: icon-float 2s ease-in-out infinite;
186+
}
187+
101188
.hero-section::before,
102189
.hero-section::after {
103190
content: '';
104191
@apply absolute -z-10 rounded-full;
105-
filter: blur(60px); /* Slightly less blur than gradient */
192+
filter: blur(60px);
106193
opacity: 0.15;
107194
will-change: transform;
108195
}
109196
.dark .hero-section::before,
110197
.dark .hero-section::after {
111-
opacity: 0.1; /* Even more subtle in dark mode */
198+
opacity: 0.1;
112199
filter: blur(70px);
113200
}
114201
115-
/* Shape 1: Large Circle (Primary Color) */
116202
.hero-section::before {
117-
width: 50rem; height: 50rem;
118-
left: -20rem; top: -20rem;
203+
width: 25rem; height: 25rem;
204+
left: -10rem; top: -10rem;
119205
background-color: theme('colors.primary.light');
120206
animation: shape-float-1 35s ease-in-out infinite;
121207
}
208+
209+
/* Responsive background shapes */
210+
@media (min-width: 640px) {
211+
.hero-section::before {
212+
width: 35rem; height: 35rem;
213+
left: -15rem; top: -15rem;
214+
}
215+
}
216+
217+
@media (min-width: 1024px) {
218+
.hero-section::before {
219+
width: 50rem; height: 50rem;
220+
left: -20rem; top: -20rem;
221+
}
222+
}
223+
122224
.dark .hero-section::before {
123225
background-color: theme('colors.primary.DEFAULT');
124226
}
125227
126-
127-
/* Shape 2: Smaller Ellipse (Secondary Color) */
128228
.hero-section::after {
129-
width: 40rem; height: 30rem; /* Elliptical */
130-
right: -15rem; bottom: -10rem;
131-
border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; /* Organic shape */
229+
width: 20rem; height: 15rem;
230+
right: -10rem; bottom: -5rem;
231+
border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
132232
background-color: theme('colors.secondary.DEFAULT');
133233
animation: shape-float-2 45s ease-in-out infinite;
134234
}
135-
.dark .hero-section::after {
136-
background-color: theme('colors.secondary.dark');
137-
border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; /* Different shape */
138-
}
139235
236+
@media (min-width: 640px) {
237+
.hero-section::after {
238+
width: 30rem; height: 22rem;
239+
right: -12rem; bottom: -7rem;
240+
}
241+
}
242+
243+
@media (min-width: 1024px) {
244+
.hero-section::after {
245+
width: 40rem; height: 30rem;
246+
right: -15rem; bottom: -10rem;
247+
}
248+
}
140249
141-
.hero-section > div {
142-
@apply relative z-10;
250+
.dark .hero-section::after {
251+
background-color: theme('colors.secondary.dark');
252+
border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
143253
}
144254
</style>

0 commit comments

Comments
 (0)