# PhorteCourseCatalogClientDark

> 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.

A mesma página, na variação escura de campanha.

- Mora em: `app/components/organisms/cursos-phorte/PhorteCourseCatalogClientDark.tsx`
- Página: [https://phorte-design-system.vercel.app/styleguide/cursos-livres/PhorteCourseCatalogClientDark](https://phorte-design-system.vercel.app/styleguide/cursos-livres/PhorteCourseCatalogClientDark)
- Ficha: `stories/cursos-livres/phorte-course-catalog-client-dark.stories.tsx` (no Storybook local — fora do catálogo publicado)
- Prévia ao vivo, sozinha: [https://phorte-design-system.vercel.app/previa/PhorteCourseCatalogClientDark/0](https://phorte-design-system.vercel.app/previa/PhorteCourseCatalogClientDark/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 { PhorteCourseCatalogClientDark } from '@/app/components/organisms/cursos-phorte/PhorteCourseCatalogClientDark';

<PhorteCourseCatalogClientDark courses={…} lpContent={…} />
```

O `…` marca as props obrigatórias — ver *Propriedades*.

## Uso

### Variantes na ficha

1. [Padrão](https://phorte-design-system.vercel.app/previa/PhorteCourseCatalogClientDark/0)

_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 |
| --- | --- | --- | --- | --- |
| `courses` | `PhorteCourse[]` | — | sim |  |
| `lpContent` | `PhorteLpContent` | — | sim |  |
| `hrefDaMatricula` | `string` | — | não | Destino do CTA final (E74). Sem ele, o botão não aparece. |
| `hrefDoConsultor` | `string` | — | não | Destino de "Falar com consultor". Sem ele, o botão não aparece. |

### Tokens de cor

| Token | Valor | Usado como |
| --- | --- | --- |
| `--secondary` | #0B8434 | `bg-secondary/20`, `bg-secondary/35`, `border-secondary/40`, `text-secondary`, `to-secondary/70` |
| `--foreground` | #1A1A1A | `bg-ink`, `from-ink`, `via-ink` |
| `--ink-inverse` | #FAFAFA | `border-ink-inverse`, `text-ink-inverse` |
| `--primary` | #D42B2B | `bg-primary/30`, `from-primary/80` |
| `--ink-inverse-muted` | #C7C7C7 | `text-ink-inverse-muted` |

## 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/PhorteCourseCatalogClientDark.tsx` | Disponível |
| Ficha | `stories/cursos-livres/phorte-course-catalog-client-dark.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

- `251416b` 2026-10-01 — E159: Testimonials — o vídeo toca dentro do cartão, YouTube e Vimeo
- Histórico completo no GitHub: https://github.com/srbunnie/Pos-Phorte-Design-System/commits/main/app/components/organisms/cursos-phorte/PhorteCourseCatalogClientDark.tsx
