From 1016668265fe8995552fc735dc72704f80241bd6 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 10 Aug 2026 07:20:44 -0300 Subject: [PATCH] =?UTF-8?q?feat(B187):=20links=20com=20apar=C3=AAncia=20de?= =?UTF-8?q?=20link=20nas=20respostas=20do=20Sollinha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Estilo de links no markdown do chat (primária + sublinhado + hover/foco), externos abrem em aba nova; compõe com o next/link interno do B188. Sem migration; e2e + unit cobrem a superfície. --- docs/plans/sollinha-links-como-links-impl.md | 95 +++++++++++++++++++ .../campaign/shell/ai/CampaignAIChat.tsx | 46 +++++---- src/lib/ai/markdownLinks.ts | 18 ++++ tests/e2e/campaignAiLinks.e2e.spec.ts | 92 ++++++++++++++++++ tests/unit/aiMarkdownLinks.unit.spec.ts | 48 ++++++++++ 5 files changed, 278 insertions(+), 21 deletions(-) create mode 100644 docs/plans/sollinha-links-como-links-impl.md create mode 100644 src/lib/ai/markdownLinks.ts create mode 100644 tests/e2e/campaignAiLinks.e2e.spec.ts create mode 100644 tests/unit/aiMarkdownLinks.unit.spec.ts diff --git a/docs/plans/sollinha-links-como-links-impl.md b/docs/plans/sollinha-links-como-links-impl.md new file mode 100644 index 00000000..8e4606e2 --- /dev/null +++ b/docs/plans/sollinha-links-como-links-impl.md @@ -0,0 +1,95 @@ +# Impl: Sollinha: links com aparência de link nas respostas + +Status: aprovado +Atualizado em: 2026-08-10 +Issue: #528 +Intenção: docs/plans/sollinha-links-como-links.md +Appetite restante: ~0,5 dia (herdado) + +## Leitura da intenção + +- **Outcome:** todo link emitido pelo Sollinha numa resposta aparece sublinhado e com a cor primária do tema, distinguível do texto corrido, com hover e foco por teclado visíveis; links externos abrem em aba nova; o resto do markdown permanece como está. +- **O que NÃO negociar:** sem redesenho do bubble/chat; sem trocar o sistema de markdown; **qualquer** link conta (não só internos); sem instalar `@tailwindcss/typography`; navegação interna/clique é do B188 (fora). +- **O que reavaliar:** a hipótese da intenção ("classes `prose` sem efeito") foi **confirmada** — `@tailwindcss/typography` não está no `package.json` e o entry CSS (`styles.css`) só registra `tailwindcss-animate`/`tw-animate-css`/`shadcn/tailwind.css`. O `[button,a]:focus-visible:ring-*` do `BubbleContent` **não cobre** links aninhados no markdown (variantes `[button,a]:` só se aplicam quando o próprio `bubble-content` É um ``/`