Skip to content

Commit da79903

Browse files
Fase 1: design system — cores, tipografia e componentes base
Design tokens (CSS custom properties) com a paleta de .claude/docs/identidade-visual.md, suporte a tema claro/escuro via prefers-color-scheme, e IBM Plex Sans/Mono self-hosted (@fontsource, subset latin) para não depender de CDN externo. Componentes de UI reutilizáveis: Button (primary/secondary/ghost) e Card, usados no Header/Footer (agora com as logos reais) e na Home (hero + card do episódio 1). Demais páginas ganham container/eyebrow consistentes, conteúdo completo continua reservado para a Fase 2. Corrige um bug de projeção de conteúdo do Angular (múltiplos <ng-content> em branches @if/@else ficavam vazios) usando ng-template + ngTemplateOutlet, e um token mal escopado que fazia o rodapé virar ciano no modo escuro — separado em --brand-band-bg/ink, fixo nos dois temas, independente do --color-accent-* que adapta.
1 parent f6e5f35 commit da79903

29 files changed

Lines changed: 583 additions & 33 deletions

‎package-lock.json‎

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
"@angular/platform-server": "^22.1.0",
2121
"@angular/router": "^22.1.0",
2222
"@angular/ssr": "^22.1.4",
23+
"@fontsource/ibm-plex-mono": "^5.3.0",
24+
"@fontsource/ibm-plex-sans": "^5.3.0",
2325
"rxjs": "~7.8.0",
2426
"tslib": "^2.3.0"
2527
},
10.5 KB
Loading
11.5 KB
Loading

‎public/brand/simbolo-azul.png‎

7.3 KB
Loading

‎src/app/app.scss‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
:host {
2+
display: flex;
3+
flex-direction: column;
4+
min-height: 100%;
5+
}
6+
7+
main {
8+
flex: 1;
9+
}

‎src/app/app.spec.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ describe('App', () => {
2121
const fixture = TestBed.createComponent(App);
2222
await fixture.whenStable();
2323
const compiled = fixture.nativeElement as HTMLElement;
24-
expect(compiled.querySelector('.brand')?.textContent).toContain('Descompila');
24+
expect(compiled.querySelector('.brand img')?.getAttribute('alt')).toBe('Descompila');
2525
});
2626
});

‎src/app/pages/cursos/cursos.html‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<section>
1+
<section class="container">
2+
<span class="eyebrow">Em breve</span>
23
<h1>Cursos</h1>
3-
<p>Em breve. Captura de e-mail de interesse entra na Fase 2.</p>
4+
<p>Captura de e-mail de interesse entra na Fase 2.</p>
45
</section>
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<section>
1+
<section class="container">
2+
<span class="eyebrow">Todos os episódios</span>
23
<h1>Episódios</h1>
34
<p>Grade de episódios (embed do YouTube, data, convidado) entra na Fase 2.</p>
45
</section>

‎src/app/pages/home/home.html‎

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
1-
<section>
2-
<h1>Descompila</h1>
3-
<p>Educação de forma simplificada para todos. Conteúdo da Home entra na Fase 2.</p>
1+
<section class="hero container">
2+
<span class="eyebrow">Podcast · Educação tech</span>
3+
<h1>Educação de tecnologia, simplificada para todos.</h1>
4+
<p class="lede">
5+
O Descompila volta em formato de podcast: conversas diretas sobre tecnologia, carreira e o
6+
impacto da IA no dia a dia — sem jargão desnecessário.
7+
</p>
8+
<div class="actions">
9+
<app-button variant="primary" [routerLink]="'/episodios'">Ver episódios</app-button>
10+
<app-button variant="secondary" [href]="canalUrl">Canal no YouTube</app-button>
11+
</div>
12+
</section>
13+
14+
<section class="container">
15+
<h2>Episódio mais recente</h2>
16+
<app-card class="episode">
17+
<span class="eyebrow">Episódio 01</span>
18+
<h3>O Desafio dos Professores na Era da Inteligência Artificial</h3>
19+
<p>Com Jean Lobo.</p>
20+
<app-button variant="ghost" [href]="episodio1Url">Assistir no YouTube →</app-button>
21+
</app-card>
422
</section>

0 commit comments

Comments
 (0)