Files
blitzkit/packages/website/src/components/CreditsPromo.astro
T

137 lines
2.8 KiB
Plaintext
Raw Normal View History

2026-10-10 16:59:34 -05:00
---
2026-10-10 18:12:01 -05:00
import { Grid, Heading, Text } from "@radix-ui/themes";
2026-10-10 16:59:34 -05:00
import { credits } from "../config/credits";
import { getStrings } from "../core/i18n/getStrings";
interface Props {
locale: string;
}
const { locale } = Astro.props;
const strings = getStrings(locale);
---
<style>
.credits {
display: flex;
justify-content: center;
2026-10-10 18:37:47 -05:00
padding: var(--space-4);
margin-top: var(--space-4);
2026-10-10 16:59:34 -05:00
.inner {
display: flex;
flex-direction: column;
2026-10-10 18:37:47 -05:00
gap: var(--space-2);
2026-10-10 16:59:34 -05:00
width: 100%;
max-width: 80rem;
2026-10-10 18:12:01 -05:00
.list {
2026-10-10 17:05:36 -05:00
gap: var(--space-5);
2026-10-10 16:59:34 -05:00
2026-10-10 18:12:01 -05:00
.link {
display: contents;
2026-10-10 16:59:34 -05:00
2026-10-10 18:12:01 -05:00
.person {
--profile-size: 5rem;
2026-10-10 16:59:34 -05:00
2026-10-10 17:34:07 -05:00
display: flex;
flex-direction: column;
2026-10-10 18:12:01 -05:00
background-color: var(--gray-3);
padding: var(--space-4);
padding-top: 0;
margin-top: calc(var(--profile-size) / 2);
2026-10-10 17:34:07 -05:00
gap: var(--space-1);
2026-10-10 18:12:01 -05:00
box-shadow: var(--shadow-2);
border-radius: var(--radius-3);
2026-10-10 18:37:47 -05:00
position: relative;
.background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: inherit;
overflow: hidden;
.image {
width: 100%;
height: 100%;
background-size: cover;
filter: saturate(5) blur(5rem) brightness(0.5);
}
}
.text {
position: relative;
}
2026-10-10 16:59:34 -05:00
img {
2026-10-10 18:37:47 -05:00
position: relative;
2026-10-10 17:34:07 -05:00
border-radius: 50%;
2026-10-10 18:12:01 -05:00
margin-top: calc(var(--profile-size) / -2);
2026-10-10 17:49:06 -05:00
object-fit: cover;
2026-10-10 18:12:01 -05:00
width: var(--profile-size);
height: var(--profile-size);
margin-bottom: var(--space-2);
2026-10-10 16:59:34 -05:00
}
}
}
}
}
}
</style>
<div class="credits">
<div class="inner">
2026-10-10 18:12:01 -05:00
<Heading align="center">{strings.credits.title}</Heading>
2026-10-10 16:59:34 -05:00
2026-10-10 18:12:01 -05:00
<Grid
className="list"
py="4"
columns="repeat(auto-fill, minmax(12rem, 1fr))"
flow="dense"
gap="4"
gapY="8"
>
{
credits.map((person) => (
2026-10-10 18:38:05 -05:00
<a target="_blank" href={person.url} class="link">
2026-10-10 16:59:34 -05:00
<div class="person">
2026-10-10 18:37:47 -05:00
<div class="background">
<div
class="image"
style={`background-image: url(${person.image})`}
/>
</div>
2026-10-10 18:12:01 -05:00
<img src={person.image} />
2026-10-10 17:34:07 -05:00
2026-10-10 18:37:47 -05:00
<Text className="text" color="gray" highContrast>
2026-10-10 18:12:01 -05:00
{person.name}
</Text>
2026-10-10 18:37:47 -05:00
<Text className="text" color="gray">
{person.description}
</Text>
2026-10-10 16:59:34 -05:00
</div>
2026-10-10 18:12:01 -05:00
</a>
))
}</Grid
>
2026-10-10 16:59:34 -05:00
</div>
</div>