FeatureItem

apps/www/src/components/FeatureItem.astro · 54 lines · group Features & lists

Used by

Live sites: pages.gitt.one.

Samples 1

pages.gitt.one/shown inside <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

Own your website, don't rent it
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

NameTypeRequiredDefaultDescription
titlestringyes
descriptionstringyes
btnTextstringyes
btnPathstringyes
imgPathstringyes

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.