# CohortTimelineBlock

> Cursos Livres (E-commerce) — fora do catálogo. Peça de produto do fluxo de cursos livres: não é uma das 81 peças do kit, não tem estado de promoção e não foi feita para reuso. Segue as mesmas regras de cor e acessibilidade.

Linha do tempo das próximas turmas.

- Mora em: `app/components/organisms/cursos-phorte/blocks/CohortTimelineBlock.tsx`
- Página: [https://phorte-design-system.vercel.app/styleguide/cursos-livres/CohortTimelineBlock](https://phorte-design-system.vercel.app/styleguide/cursos-livres/CohortTimelineBlock)
- Ficha: `stories/cursos-livres/cohort-timeline-block.stories.tsx` (no Storybook local — fora do catálogo publicado)
- Prévia ao vivo, sozinha: [https://phorte-design-system.vercel.app/previa/CohortTimelineBlock/0](https://phorte-design-system.vercel.app/previa/CohortTimelineBlock/0)
- Todas as peças: [https://phorte-design-system.vercel.app/llms.txt](https://phorte-design-system.vercel.app/llms.txt)

## Como usar no código

```tsx
import { CohortTimelineBlock } from '@/app/components/organisms/cursos-phorte/blocks/CohortTimelineBlock';

<CohortTimelineBlock />
```

## Uso

### Variantes na ficha

1. [Claro](https://phorte-design-system.vercel.app/previa/CohortTimelineBlock/0)
2. [Escuro](https://phorte-design-system.vercel.app/previa/CohortTimelineBlock/1)
3. [Premium](https://phorte-design-system.vercel.app/previa/CohortTimelineBlock/2)
4. [Sem destino](https://phorte-design-system.vercel.app/previa/CohortTimelineBlock/3)

_Peça fora do catálogo: tem o resumo e o papel, e não texto de uso completo (decisão da E89). O resto desta página vem do código._

## Especificação

### Propriedades

| Prop | Tipo | Padrão | Obrigatória | Descrição |
| --- | --- | --- | --- | --- |
| `theme` | `TemaDeBloco` | `'light'` | não |  |
| `hrefDaTurma` | `(turma: Cohort) => string` | — | não | Destino de "Quero Garantir" de cada turma (E77). Sem ele, o botão não aparece — eram quatro botões sem ação (decisão de 2026-09-28). |
| `hrefDoConsultor` | `string` | — | não | Destino de "Fale com um consultor". Sem ele, a frase fica sem link. |

### Tokens de cor

| Token | Valor | Usado como |
| --- | --- | --- |
| `--secondary` | #0B8434 | `bg-secondary`, `bg-secondary/10`, `border-secondary/20`, `border-secondary/30` |
| `--border` | #E5E5E5 | `bg-border`, `border-border`, `border-border/50` |
| `--primary` | #D42B2B | `bg-primary`, `border-primary/20`, `text-primary` |
| `--muted` | #F4F6F9 | `bg-muted`, `bg-muted/30` |
| `--card` | #FFFFFF | `bg-card` |
| `--foreground` | #1A1A1A | `text-ink` |
| `--ink-inverse` | #FAFAFA | `text-ink-inverse` |
| `--ink-inverse-muted` | #C7C7C7 | `text-ink-inverse-muted` |
| `--muted-foreground` | #595959 | `text-muted-foreground` |

## Acessibilidade

Sem estado de promoção: a peça está fora do catálogo. O axe roda nas variantes da ficha em `npm run test`; contraste abaixo de AA vira exceção declarada na própria ficha, com a conta.

## Status e recursos

| Tipo | Recurso | Status |
| --- | --- | --- |
| Código | `app/components/organisms/cursos-phorte/blocks/CohortTimelineBlock.tsx` | Disponível |
| Ficha | `stories/cursos-livres/cohort-timeline-block.stories.tsx` | Storybook local |
| Teste de acessibilidade | axe em `npm run test` | No gate de todo commit |
| Design | Figma | Desativado até a Fase 2 |

### Histórico

- `0298af8` 2026-09-30 — E147: fechamento da Entrega 11 — REPORT.md, verificação cross-agent e o gate estático estrito
- Histórico completo no GitHub: https://github.com/srbunnie/Pos-Phorte-Design-System/commits/main/app/components/organisms/cursos-phorte/blocks/CohortTimelineBlock.tsx
