Skip to content

Commit 2e9c951

Browse files
committed
Enhance homepage content and styling
1 parent b277543 commit 2e9c951

7 files changed

Lines changed: 424 additions & 24 deletions

File tree

.vitepress/config.mts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,5 @@ export default defineConfig({
108108
search: {
109109
provider: 'local',
110110
},
111-
112-
footer: {
113-
message: 'Released under the MIT License.',
114-
copyright: 'Copyright © 2024-present Testo',
115-
},
116111
},
117112
})

.vitepress/theme/style.css

Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
/* Override VitePress brand colors with dough/testo colors */
2+
:root {
3+
--vp-c-brand-1: #d4a574;
4+
--vp-c-brand-2: #c8995f;
5+
--vp-c-brand-3: #b8864d;
6+
--vp-c-brand-soft: rgba(212, 165, 116, 0.14);
7+
8+
/* For dark mode */
9+
--vp-c-brand-dark: #e6c199;
10+
--vp-c-brand-darker: #f0d4b3;
11+
--vp-c-brand-dimm: rgba(230, 193, 153, 0.08);
12+
}
13+
14+
.dark {
15+
--vp-c-brand-1: #e6c199;
16+
--vp-c-brand-2: #d4a574;
17+
--vp-c-brand-3: #c8995f;
18+
--vp-c-brand-soft: rgba(230, 193, 153, 0.16);
19+
}
20+
121
/* Wider content for all pages and blog styling */
222

323
.VPDoc .container {
@@ -21,3 +41,273 @@
2141
.VPDoc.has-aside .content-container p {
2242
/*margin: 1.25rem 0 !important;*/
2343
}
44+
45+
/* ===== HOME PAGE STYLES ===== */
46+
47+
/* Logo glow effect with dough colors */
48+
.VPHero .image-container img,
49+
.VPHero .VPImage {
50+
animation: logo-glow 3s ease-in-out infinite alternate;
51+
filter: drop-shadow(0 0 20px rgba(245, 222, 179, 0.5));
52+
transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
53+
transform-origin: center center;
54+
}
55+
56+
@keyframes logo-glow {
57+
0% {
58+
filter: drop-shadow(0 0 18px rgba(245, 222, 179, 0.4))
59+
drop-shadow(0 0 35px rgba(255, 235, 205, 0.3));
60+
}
61+
100% {
62+
filter: drop-shadow(0 0 25px rgba(245, 222, 179, 0.6))
63+
drop-shadow(0 0 50px rgba(255, 235, 205, 0.4));
64+
}
65+
}
66+
67+
.VPHero .image-container img:hover,
68+
.VPHero .VPImage:hover {
69+
filter: drop-shadow(0 0 30px rgba(245, 222, 179, 0.7))
70+
drop-shadow(0 0 60px rgba(255, 235, 205, 0.5));
71+
}
72+
73+
/* Hero section enhancements */
74+
.VPHero {
75+
padding-top: 80px !important;
76+
padding-bottom: 80px !important;
77+
}
78+
79+
.VPHero .text {
80+
font-size: 64px !important;
81+
font-weight: 700;
82+
}
83+
84+
.VPHero .tagline {
85+
font-size: 20px !important;
86+
line-height: 1.6 !important;
87+
max-width: 800px;
88+
margin: 0 auto;
89+
opacity: 0.9;
90+
}
91+
92+
/* Action buttons styling */
93+
.VPHero .actions {
94+
gap: 16px !important;
95+
padding-top: 32px !important;
96+
}
97+
98+
.VPHero .action.brand {
99+
background: linear-gradient(135deg, var(--vp-c-brand-1), var(--vp-c-brand-2)) !important;
100+
border: none !important;
101+
box-shadow: 0 8px 24px rgba(245, 222, 179, 0.3);
102+
transition: all 0.3s ease;
103+
font-weight: 600;
104+
padding: 12px 32px !important;
105+
font-size: 16px !important;
106+
}
107+
108+
.VPHero .action.brand:hover {
109+
transform: translateY(-2px);
110+
box-shadow: 0 12px 32px rgba(245, 222, 179, 0.4);
111+
}
112+
113+
.VPHero .action.alt {
114+
border: 2px solid var(--vp-c-brand-1) !important;
115+
transition: all 0.3s ease;
116+
font-weight: 600;
117+
padding: 12px 32px !important;
118+
font-size: 16px !important;
119+
}
120+
121+
.VPHero .action.alt:hover {
122+
background: var(--vp-c-brand-soft) !important;
123+
transform: translateY(-2px);
124+
box-shadow: 0 8px 24px rgba(245, 222, 179, 0.2);
125+
}
126+
127+
/* Features section */
128+
.VPFeatures {
129+
padding-top: 48px !important;
130+
padding-bottom: 48px !important;
131+
}
132+
133+
.VPFeature {
134+
background: var(--vp-c-bg-soft);
135+
border: 1px solid var(--vp-c-divider);
136+
border-radius: надо уменьшить контен12px;
137+
transition: all 0.3s ease;
138+
height: 100%;
139+
}
140+
141+
.VPFeature:hover {
142+
border-color: var(--vp-c-brand-1);
143+
box-shadow: 0 0px 32px rgba(245, 222, 179, 0.15);
144+
}
145+
146+
.VPFeature .title {
147+
font-size: 18px !important;
148+
font-weight: 600 !important;
149+
margin-bottom: 12px !important;
150+
}
151+
152+
.VPFeature .details {
153+
font-size: 15px !important;
154+
line-height: 1.7 !important;
155+
opacity: 0.9;
156+
}
157+
158+
/* Content sections on home page */
159+
.vp-doc h2 {
160+
font-size: 36px !important;
161+
font-weight: 700 !important;
162+
margin-top: 64px !important;
163+
margin-bottom: 24px !important;
164+
}
165+
166+
.vp-doc .vp-code-group,
167+
.vp-doc div[class*="language-"] {
168+
margin: 24px 0 !important;
169+
border-radius: 12px !important;
170+
overflow: hidden;
171+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
172+
transition: all 0.3s ease;
173+
}
174+
175+
.vp-doc .vp-code-group:hover,
176+
.vp-doc div[class*="language-"]:hover {
177+
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);
178+
transform: translateY(-2px);
179+
}
180+
181+
/* Custom info/tip boxes */
182+
.vp-doc .custom-block {
183+
border-radius: 12px !important;
184+
border-left-width: 4px !important;
185+
padding: 16px 20px !important;
186+
margin: 24px 0 !important;
187+
}
188+
189+
.vp-doc .custom-block.tip {
190+
background: linear-gradient(135deg, rgba(245, 222, 179, 0.05), rgba(245, 222, 179, 0.02));
191+
border-left-color: var(--vp-c-brand-1) !important;
192+
}
193+
194+
/* Sponsors section */
195+
.sponsors-section {
196+
max-width: 1152px;
197+
margin: 80px auto 60px;
198+
padding: 0 24px;
199+
text-align: center;
200+
}
201+
202+
.sponsors-title {
203+
font-size: 28px !important;
204+
font-weight: 600 !important;
205+
margin-bottom: 32px !important;
206+
color: var(--vp-c-text-1);
207+
}
208+
209+
.sponsors-grid {
210+
display: flex;
211+
justify-content: center;
212+
gap: 24px;
213+
flex-wrap: wrap;
214+
}
215+
216+
.sponsor-card {
217+
display: flex;
218+
align-items: center;
219+
justify-content: center;
220+
padding: 32px 48px;
221+
background: var(--vp-c-bg-soft);
222+
border: 2px solid var(--vp-c-divider);
223+
border-radius: 16px;
224+
transition: all 0.3s ease;
225+
text-decoration: none;
226+
min-width: 280px;
227+
}
228+
229+
.sponsor-card:hover {
230+
border-color: var(--vp-c-brand-1);
231+
transform: translateY(-4px);
232+
box-shadow: 0 12px 32px rgba(245, 222, 179, 0.2);
233+
background: var(--vp-c-bg);
234+
}
235+
236+
.sponsor-logo {
237+
padding: 40px 60px;
238+
border-color: transparent;
239+
background: transparent;
240+
}
241+
242+
.sponsor-logo:hover {
243+
transform: none;
244+
box-shadow: none;
245+
border-color: transparent;
246+
background: transparent;
247+
}
248+
249+
.sponsor-image {
250+
width: 140px;
251+
height: auto;
252+
}
253+
254+
.dark .sponsor-image {
255+
filter: invert(1) brightness(1.2);
256+
}
257+
258+
.sponsor-cta-link {
259+
text-align: center;
260+
margin-top: 24px;
261+
}
262+
263+
.sponsor-cta-link a {
264+
font-size: 14px;
265+
color: var(--vp-c-text-2);
266+
text-decoration: none;
267+
transition: color 0.2s ease;
268+
}
269+
270+
.sponsor-cta-link a:hover {
271+
color: var(--vp-c-brand-1);
272+
}
273+
274+
/* Responsive adjustments */
275+
@media (max-width: 768px) {
276+
.VPHero .text {
277+
font-size: 42px !important;
278+
}
279+
280+
.VPHero .tagline {
281+
font-size: 17px !important;
282+
}
283+
284+
.vp-doc h2 {
285+
font-size: 28px !important;
286+
}
287+
288+
.VPHero .image-container img,
289+
.VPHero .VPImage {
290+
max-width: 80%;
291+
}
292+
293+
.sponsors-section {
294+
margin: 60px auto 40px;
295+
}
296+
297+
.sponsors-title {
298+
font-size: 24px !important;
299+
}
300+
301+
.sponsor-card {
302+
padding: 24px 32px;
303+
min-width: 240px;
304+
}
305+
306+
.sponsor-logo {
307+
padding: 32px 40px;
308+
}
309+
310+
.sponsor-image {
311+
width: 120px;
312+
}
313+
}

index.md

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,45 @@
22
layout: home
33

44
hero:
5-
name: Testo
6-
text: Modern PHP Testing Framework
7-
tagline: Simple, fast, and powerful testing for PHP applications
5+
name:
6+
text: The PHP Testing Framework You Control
7+
tagline: Built for frameworks, SDKs, and complex systems. No inheritance, full extensibility through middleware, clean assertions API.
8+
image:
9+
src: https://github.com/php-testo/.github/blob/1.x/resources/logo-full.svg?raw=true
10+
alt: Testo Logo
811
actions:
912
- theme: brand
1013
text: Get Started
1114
link: /docs/getting-started
1215
- theme: alt
13-
text: View on GitHub
16+
text: Why Testo?
17+
link: /docs/why-testo
18+
- theme: alt
19+
text: GitHub
1420
link: https://github.com/php-testo/testo
1521

1622
features:
17-
- title: Simple API
18-
details: Write tests with a clean, intuitive syntax that feels natural.
19-
- title: Fast Execution
20-
details: Run your entire test suite in seconds with parallel execution.
21-
- title: Rich Assertions
22-
details: Comprehensive assertion library for all your testing needs.
23+
- title: Familiar OOP
24+
details: Tests are classes without TestCase inheritance or functions. Code stays clean.
25+
26+
- title: IDE Integration
27+
details: PhpStorm/IntelliJ IDEA plugin with test running, navigation, debugging, and all the workflow you expect.
28+
29+
- title: Small Core
30+
details: Everything else is middleware and event dispatchers with unlimited customization.
31+
32+
- title: Well-Designed API
33+
details: Separate Assert (now) and Expect (later) facades with pipe assertions for type-safe checks.
2334
---
35+
36+
<div class="sponsors-section">
37+
<h2 class="sponsors-title">Sponsored by</h2>
38+
<div class="sponsors-grid">
39+
<a href="https://buhta.com" class="sponsor-card sponsor-logo" target="_blank" rel="noopener">
40+
<img src="/logo-buhta.svg" alt="Buhta" class="sponsor-image">
41+
</a>
42+
</div>
43+
<div class="sponsor-cta-link">
44+
<a href="/sponsor">Become a Sponsor</a>
45+
</div>
46+
</div>

public/logo-buhta.svg

Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)