Skip to content

Commit 04b4aa2

Browse files
committed
Custom hero
1 parent c31ecfa commit 04b4aa2

File tree

9 files changed

+588
-9
lines changed

9 files changed

+588
-9
lines changed

package-lock.json

Lines changed: 59 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
"lint": "eslint .",
1111
"preview": "rspress preview"
1212
},
13+
"dependencies": {
14+
"@rstack-dev/doc-ui": "1.7.2"
15+
},
1316
"devDependencies": {
1417
"@biomejs/biome": "^1.9.4",
1518
"@eslint/js": "^9.19.0",
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
.landingPage {
2+
position: relative;
3+
}
4+
5+
.background {
6+
width: 100%;
7+
position: absolute;
8+
top: calc(-1 * var(--rp-nav-height));
9+
left: 0;
10+
11+
z-index: -1;
12+
filter: blur(2px);
13+
14+
pointer-events: none;
15+
user-select: none;
16+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { BackgroundImage } from '@rstack-dev/doc-ui/background-image';
2+
import { Hero } from '../hero';
3+
import styles from './index.module.scss';
4+
5+
import { useCallback } from 'react';
6+
import { useNavigate } from 'rspress/runtime';
7+
8+
const LandingPage = () => {
9+
const navigate = useNavigate();
10+
const onClickGetStarted = useCallback(() => {
11+
navigate('/guide/start/quick-start');
12+
}, [navigate]);
13+
14+
return (
15+
<div className={styles.landingPage}>
16+
<BackgroundImage />
17+
<Hero
18+
showStars
19+
// title="AIScript"
20+
subTitle="The next generation language for human and AI."
21+
getStartedButtonText='getStarted'
22+
githubURL="https://github.com/aiscriptdev/aiscript"
23+
onClickGetStarted={onClickGetStarted}
24+
/>
25+
</div>
26+
);
27+
};
28+
29+
export default LandingPage;
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import { useEffect, useRef, useState } from 'react';
2+
import styles from './index.module.scss';
3+
4+
const BackgroundStar = ({
5+
top,
6+
left,
7+
pageX,
8+
pageY,
9+
size,
10+
}: {
11+
top: number | string;
12+
left: number | string;
13+
pageX: number | null;
14+
pageY: number | null;
15+
size: number;
16+
}) => {
17+
const ref = useRef<any>();
18+
const [transformX, setTransformX] = useState<number>(0);
19+
const [transformY, setTransformY] = useState<number>(0);
20+
useEffect(() => {
21+
if (ref.current) {
22+
const { x, y } = ref.current.getBoundingClientRect();
23+
24+
if (pageX && pageY) {
25+
const distanceX = pageX - x;
26+
const distanceY = pageY - y;
27+
if (Math.abs(distanceX) < 100 && Math.abs(distanceY) < 100) {
28+
setTransformX(distanceX);
29+
setTransformY(distanceY);
30+
} else {
31+
setTransformX(0);
32+
setTransformY(0);
33+
}
34+
}
35+
}
36+
}, [pageX, pageY]);
37+
38+
return (
39+
<div
40+
className={styles.backgroundStarContainer}
41+
ref={ref}
42+
style={{
43+
top,
44+
left,
45+
}}
46+
>
47+
<svg
48+
className={styles.backgroundStar}
49+
style={{
50+
width: size,
51+
height: size,
52+
transform: `translate(${transformX}px, ${transformY}px)`,
53+
}}
54+
xmlns="http://www.w3.org/2000/svg"
55+
width="8"
56+
height="9"
57+
viewBox="0 0 8 9"
58+
fill="none"
59+
role="img"
60+
aria-label="star"
61+
>
62+
<title />
63+
<circle cx="4" cy="4.5" r="4" fill="url(#paint0_radial_2202_5618)" />
64+
<defs>
65+
<radialGradient
66+
id="paint0_radial_2202_5618"
67+
cx="0"
68+
cy="0"
69+
r="1"
70+
gradientUnits="userSpaceOnUse"
71+
gradientTransform="translate(4 4.49998) scale(3.77871 4.29149)"
72+
>
73+
<stop stopColor="#FF8B00" />
74+
<stop offset="0.38" stopColor="#F2A65A" />
75+
<stop offset="0.59" stopColor="#FFB966" />
76+
<stop offset="0.92" stopColor="#FF8B00" />
77+
</radialGradient>
78+
</defs>
79+
</svg>
80+
</div>
81+
);
82+
};
83+
84+
export default BackgroundStar;

0 commit comments

Comments
 (0)