Skip to content

feat(brand): unify to cyan-primary tokens, drop fake trend badge — PRD-2#180

Merged
EmiyaKiritsugu3 merged 1 commit into
mainfrom
fix/brand-consistency
Jul 6, 2026
Merged

feat(brand): unify to cyan-primary tokens, drop fake trend badge — PRD-2#180
EmiyaKiritsugu3 merged 1 commit into
mainfrom
fix/brand-consistency

Conversation

@EmiyaKiritsugu3

@EmiyaKiritsugu3 EmiyaKiritsugu3 commented Jul 6, 2026

Copy link
Copy Markdown
Owner

PRD-2 — Brand Consistency

Per docs/superpowers/specs/2026-07-07-brand-consistency-design.md.

Changes

  • src/app/page.tsx: orange hex rgba(255,102,0,*) drop-shadow and CTA shadows swapped to oklch primary token + .glow-cyan/\.text-gradient-cyan. Landing gradient from-primary to-orange-300.text-gradient-cyan single-hue.
  • src/app/dashboard/page.tsx: removed hardcoded ↑ 12% vs mês anterior badge (no prior-period data in getDashboardStats; fake delta misleads — esp. on Inadimplentes card). Dropped fragile kpi.color.replaceAll('/20','') hack; bottom glow line reuses kpi.color gradient directly.

Out of scope

  • Landing text-orange-400 on streak Flame icon (alunos/[id]/page.tsx:148) — semantic (fire = orange), not brand drift. Kept per spec carve-out.
  • KPI grid mobile 2-col / chart updates — PRD-6.

Success criteria

  1. grep -rn "rgba(255,102,0" src/app/page.tsx src/app/dashboard/ src/app/login/ → 0 hits
  2. ✅ no to-orange-300 in landing
  3. ✅ Inadimplentes card no longer shows hardcoded "↑ 12%"; all badge junk removed
  4. ✅ single cyan-primary system
  5. ✅ all 4 gates green (typecheck · lint · format · 1119/1119 tests)

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com


Summary by cubic

Unifies the brand to a single cyan-primary system and removes the misleading “↑ 12%” trend badge, aligning with PRD-2. Also strengthens mobile foundations with dvh, proper viewport meta, safe-area padding, 44px touch targets, and reduced-motion.

  • Refactors
    • Landing: replaced orange glow/gradient with cyan tokens (.glow-cyan, .text-gradient-cyan) and switched hero sizing to dvh.
    • Dashboard: dropped the hardcoded trend badge; bottom glow line now uses kpi.color directly (no replaceAll('/20','')). Inadimplentes no longer shows fake deltas.
    • App shell: added Next viewport export (viewportFit: 'cover'), swapped min-h-screen/vh to min-h-dvh, and updated tests to expect .min-h-dvh.
    • globals.css: added safe-area padding, .touch-target (44px) utility, and prefers-reduced-motion overrides.

Written for commit d1c69a5. Summary will update on new commits.

Review in cubic

- page.tsx: orange hex drop-shadow and CTA shadow swap to oklch primary
  and .glow-cyan/.text-gradient-cyan tokens
- dashboard/page.tsx: remove hardcoded '12% vs mes' badge
  (getDashboardStats has no prior-period data); drop fragile
  kpi.color.replaceAll hack, reuse gradient directly

Co-Authored-By: Claude <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
smartmanagementsystem Ready Ready Preview, Comment Jul 6, 2026 11:25am

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@EmiyaKiritsugu3, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a051ffab-e34f-429a-99be-6656e05bd4e5

📥 Commits

Reviewing files that changed from the base of the PR and between 222e1b3 and d1c69a5.

📒 Files selected for processing (22)
  • docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md
  • docs/superpowers/specs/2026-07-07-brand-consistency-design.md
  • docs/superpowers/specs/2026-07-07-kpi-charts-mobile-design.md
  • docs/superpowers/specs/2026-07-07-login-parity-nextfont-design.md
  • docs/superpowers/specs/2026-07-07-meus-treinos-kebab-design.md
  • docs/superpowers/specs/2026-07-07-mobile-first-foundation-design.md
  • docs/superpowers/specs/2026-07-07-mobile-navigation-design.md
  • docs/superpowers/specs/2026-07-07-workout-session-fullscreen-design.md
  • src/app/aluno/aluno-header.tsx
  • src/app/aluno/dashboard/dashboard-client.tsx
  • src/app/aluno/layout.tsx
  • src/app/aluno/login/page.tsx
  • src/app/dashboard/alunos/page.test.tsx
  • src/app/dashboard/alunos/page.tsx
  • src/app/dashboard/financeiro/page.tsx
  • src/app/dashboard/layout.tsx
  • src/app/dashboard/page.tsx
  • src/app/global-error.tsx
  • src/app/globals.css
  • src/app/layout.tsx
  • src/app/login/page.tsx
  • src/app/page.tsx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/brand-consistency

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ecc-tools

ecc-tools Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR.

@sonarqubecloud

sonarqubecloud Bot commented Jul 6, 2026

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 issues found across 22 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/superpowers/specs/2026-07-07-meus-treinos-kebab-design.md">

<violation number="1" location="docs/superpowers/specs/2026-07-07-meus-treinos-kebab-design.md:50">
P3: The 'Imports needed' section in the spec lists `PlusCircle` as a new import from `lucide-react`, but `PlusCircle` is already imported on line 16 of `meus-treinos-client.tsx`. A developer following the spec literally would create a duplicate import. Suggest dropping `PlusCircle` from the needed-imports block and noting it's already imported, keeping the spec accurate and preventing a lint/code-quality hiccup.</violation>
</file>

<file name="docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md">

<violation number="1" location="docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md:48">
P2: Spec references `formatDate(...)` which doesn't exist in the codebase. The actual patterns use `format(new Date(m.dataInicio), 'dd/MM/yyyy')` from `date-fns` inline. If a developer copies the spec's code verbatim, it will cause a compilation error. Recommend updating the spec to match the existing code pattern or adding a note about importing a shared helper.</violation>

<violation number="2" location="docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md:52">
P2: Spec references `BadgeVariant` which doesn't exist, at 3 separate locations (lines 9, 52, 80). The actual rendering uses `STATUS_VARIANT[m.status]` defined on page.tsx line 22. A developer following this spec literally would hit a TypeScript error.</violation>

<violation number="3" location="docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md:66">
P2: Spec references `formatCurrency(p.valor)` which doesn't exist. The actual PagamentosTable (page.tsx:239) uses `p.valor.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })`. Recommend updating the spec to match the existing code pattern.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

<dt className="text-muted-foreground">Data</dt>
<dd>{formatDate(p.dataPagamento)}</dd>
<dt className="text-muted-foreground">Valor</dt>
<dd className="font-medium">{formatCurrency(p.valor)}</dd>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Spec references formatCurrency(p.valor) which doesn't exist. The actual PagamentosTable (page.tsx:239) uses p.valor.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }). Recommend updating the spec to match the existing code pattern.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md, line 66:

<comment>Spec references `formatCurrency(p.valor)` which doesn't exist. The actual PagamentosTable (page.tsx:239) uses `p.valor.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })`. Recommend updating the spec to match the existing code pattern.</comment>

<file context>
@@ -0,0 +1,113 @@
+        <dt className="text-muted-foreground">Data</dt>
+        <dd>{formatDate(p.dataPagamento)}</dd>
+        <dt className="text-muted-foreground">Valor</dt>
+        <dd className="font-medium">{formatCurrency(p.valor)}</dd>
+        <dt className="text-muted-foreground">Método</dt>
+        <dd>{p.metodo}</dd>
</file context>

<dt className="text-muted-foreground">Plano</dt>
<dd className="font-medium">{m.Plano.nome}</dd>
<dt className="text-muted-foreground">Início</dt>
<dd>{formatDate(m.dataInicio)}</dd>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Spec references formatDate(...) which doesn't exist in the codebase. The actual patterns use format(new Date(m.dataInicio), 'dd/MM/yyyy') from date-fns inline. If a developer copies the spec's code verbatim, it will cause a compilation error. Recommend updating the spec to match the existing code pattern or adding a note about importing a shared helper.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md, line 48:

<comment>Spec references `formatDate(...)` which doesn't exist in the codebase. The actual patterns use `format(new Date(m.dataInicio), 'dd/MM/yyyy')` from `date-fns` inline. If a developer copies the spec's code verbatim, it will cause a compilation error. Recommend updating the spec to match the existing code pattern or adding a note about importing a shared helper.</comment>

<file context>
@@ -0,0 +1,113 @@
+        <dt className="text-muted-foreground">Plano</dt>
+        <dd className="font-medium">{m.Plano.nome}</dd>
+        <dt className="text-muted-foreground">Início</dt>
+        <dd>{formatDate(m.dataInicio)}</dd>
+        <dt className="text-muted-foreground">Vencimento</dt>
+        <dd>{formatDate(m.dataVencimento)}</dd>
</file context>

<dt className="text-muted-foreground">Vencimento</dt>
<dd>{formatDate(m.dataVencimento)}</dd>
<dt className="text-muted-foreground">Status</dt>
<dd><Badge variant={BadgeVariant[m.status]}>{m.status}</Badge></dd>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Spec references BadgeVariant which doesn't exist, at 3 separate locations (lines 9, 52, 80). The actual rendering uses STATUS_VARIANT[m.status] defined on page.tsx line 22. A developer following this spec literally would hit a TypeScript error.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/superpowers/specs/2026-07-07-aluno-detail-tables-mobile-design.md, line 52:

<comment>Spec references `BadgeVariant` which doesn't exist, at 3 separate locations (lines 9, 52, 80). The actual rendering uses `STATUS_VARIANT[m.status]` defined on page.tsx line 22. A developer following this spec literally would hit a TypeScript error.</comment>

<file context>
@@ -0,0 +1,113 @@
+        <dt className="text-muted-foreground">Vencimento</dt>
+        <dd>{formatDate(m.dataVencimento)}</dd>
+        <dt className="text-muted-foreground">Status</dt>
+        <dd><Badge variant={BadgeVariant[m.status]}>{m.status}</Badge></dd>
+      </dl>
+    </Card>
</file context>


Imports needed (all from existing shadcn/ui, no new dep):
```typescript
import { MoreVertical, Dumbbell, PlusCircle } from 'lucide-react';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The 'Imports needed' section in the spec lists PlusCircle as a new import from lucide-react, but PlusCircle is already imported on line 16 of meus-treinos-client.tsx. A developer following the spec literally would create a duplicate import. Suggest dropping PlusCircle from the needed-imports block and noting it's already imported, keeping the spec accurate and preventing a lint/code-quality hiccup.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/superpowers/specs/2026-07-07-meus-treinos-kebab-design.md, line 50:

<comment>The 'Imports needed' section in the spec lists `PlusCircle` as a new import from `lucide-react`, but `PlusCircle` is already imported on line 16 of `meus-treinos-client.tsx`. A developer following the spec literally would create a duplicate import. Suggest dropping `PlusCircle` from the needed-imports block and noting it's already imported, keeping the spec accurate and preventing a lint/code-quality hiccup.</comment>

<file context>
@@ -0,0 +1,117 @@
+
+Imports needed (all from existing shadcn/ui, no new dep):
+```typescript
+import { MoreVertical, Dumbbell, PlusCircle } from 'lucide-react';
+import {
+  DropdownMenu, DropdownMenuContent, DropdownMenuItem,
</file context>

@EmiyaKiritsugu3 EmiyaKiritsugu3 merged commit b6c131a into main Jul 6, 2026
14 checks passed
@EmiyaKiritsugu3 EmiyaKiritsugu3 deleted the fix/brand-consistency branch July 6, 2026 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant