component · layout

TuxCardCarousel

Horizontal scroll of cards with editorial chrome. Thin wrapper around UCarousel (embla under the hood) that adds a TUX eyebrow + display-face title + signature rule. Cards are the consumer's responsibility — TuxCard, TuxArtifact, TuxContactCard, or a bare <article> all work.

Use when a row of comparable items reads better than a vertical list — featured projects, image galleries, MCP tool result sets, related publications. arrows + dots are independent toggles; loop wraps the carousel at the ends.

flagship · MCP-style result set

Nearby trails carousel

Mirrors the Anthropic MCP Apps "Find 4 nearby hikes" reference frame — a tool returns a small set of comparable items, and the chat renders them inline as a carousel. Cards advance two at a time; pagination dots show position.

<tux-card-carousel
  eyebrow="nearby trails"
  title="Find 4 nearby hikes"
  :items="trails"
  arrows
  dots
  :slides-to-scroll="2"
>
  <template #item="{ item }">
    <article class="trail-card">
      <h3>{{ item.name }}</h3>
      <p class="meta">{{ item.region }} · {{ item.distance }}</p>
      <p>{{ item.blurb }}</p>
    </article>
  </template>
</tux-card-carousel>

editorial · publications shelf

Featured publications

Pairs `TuxCardCarousel` with `TuxCard` to make a featured- publications shelf. loop wraps at the ends — useful when the set is small and we want continuous browsing.

<tux-card-carousel
  eyebrow="featured publications"
  title="Recent reports from TTI"
  :items="publications"
  loop
>
  <template #item="{ item }">
    <tux-card>
      <p class="eyebrow">{{ item.series }} · {{ item.year }}</p>
      <h3 class="font-bold mt-1">{{ item.title }}</h3>
      <p class="text-text-secondary mt-2">{{ item.authors }}</p>
    </tux-card>
  </template>
</tux-card-carousel>