FeatureItem
apps/www/src/components/FeatureItem.astro · 54 lines · group Features & lists
Used by
- pages.gitt.one / × 2
Live sites: pages.gitt.one.
Samples 1
<FeatureSection>Own your website, don't rent it
Most websites are hostages of the studio that built them: leaving means rewriting. Ours are designed for leaving — content in plain typed files that migrate to any CMS, an MIT-licensed engine any developer or AI agent can pick up, and a Docker image that runs anywhere. We measure this honestly as exit time: minutes from git clone to a working local build

MDX of this sample
<FeatureSection>
<FeatureItem
title="Own your website, don't rent it"
description="Most websites are hostages of the studio that built them: leaving means rewriting. Ours are designed for leaving — content in plain typed files that migrate to any CMS, an MIT-licensed engine any developer or AI agent can pick up, and a Docker image that runs anywhere. We measure this honestly as exit time: minutes from git clone to a working local build"
btnText="Contact us"
btnPath="/#contacts"
imgPath="team.jpg"
/>
</FeatureSection>Props
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| title | string | yes | ||
| description | string | yes | ||
| btnText | string | yes | ||
| btnPath | string | yes | ||
| imgPath | string | yes |
Source apps/www/src/components/FeatureItem.astro @ gitt.one
---
import { Image } from 'astro:assets';
import Inbox from 'astro-heroicons/outline/Inbox.astro';
import { resolveImage } from '../lib/images';
interface Props {
title: string;
description: string;
btnText: string;
btnPath: string;
imgPath: string;
}
const { title, description, btnText, btnPath, imgPath } = Astro.props;
const image = await resolveImage(imgPath);
---
<div class="relative">
<div class="lg:mx-auto lg:max-w-7xl lg:px-8 lg:grid lg:grid-cols-2 lg:grid-flow-col-dense lg:gap-24">
<div class="px-4 max-w-xl mx-auto sm:px-6 lg:py-16 lg:max-w-none lg:mx-0 lg:px-0">
<div>
<div>
<span class="h-12 w-12 rounded-md flex items-center justify-center bg-gradient-to-r from-primary-600 to-primary-alt-700">
<Inbox class="h-6 w-6 text-white" aria-hidden="true" />
</span>
</div>
<div class="mt-6">
<h2 class="text-3xl font-extrabold tracking-tight text-gray-900">{title}</h2>
<p class="mt-4 text-lg text-gray-500">{description}</p>
<div class="mt-6">
<a
href={btnPath}
class="inline-flex bg-gradient-to-r from-primary-600 to-primary-alt-700 bg-origin-border px-4 py-2 border border-transparent text-base font-medium rounded-md shadow-sm text-white hover:from-primary-700 hover:to-primary-800"
>
{btnText}
</a>
</div>
</div>
</div>
</div>
<div class="mt-12 sm:mt-16 lg:mt-0">
<div class="pl-4 -mr-48 sm:pl-6 md:-mr-16 lg:px-0 lg:m-0 lg:relative lg:h-full">
<Image
src={image}
alt={title}
widths={[400, 840]}
class="w-full rounded-xl shadow-xl ring-1 ring-black/5 lg:absolute lg:left-0 lg:h-full lg:w-auto lg:max-w-none"
/>
</div>
</div>
</div>
</div>Source links point to engine-astro@e857a859. Samples are cut from the sites' own content by scripts/gallery-extract.mjs; nothing is merged or removed yet.