Corrigir o card NOZAI EDU & TRAINING – Formação e Intercâmbio removendo duplicações de conteúdo.
Atualmente o item “Cursos de Línguas” aparece repetido. Deve ser corrigido para aparecer apenas uma vez.
Requisitos:
Remover a duplicação de “Cursos de Línguas”.
Garantir que cada item da lista apareça apenas uma vez.
Manter a ordem lógica e hierárquica do conteúdo.
Melhorar a organização visual da lista para leitura clara.
Não alterar design, cores, ícones ou estrutura do card.
The card is in components/featured-hero-section.tsx and components/service-panel.tsx. Let me read the relevant files to find the duplicate.
Now let me check the services.tsx file and the service-carousel-section.tsx, as well as the app/page.tsx to find where the card with the duplicate is rendered.
The services.tsx card pulls its items from the translation context via t("services.edu.academicServices"). Let me find where that translation key is defined.
I can see the issue: in academicServices for Portuguese, items 3 ("Intercâmbio acadêmico") and 4 ("Cursos de línguas") are conceptually duplicated with items 1 ("Línguas e Universidades") in a broader sense — but more specifically, "Cursos de línguas" (index 3) is a duplicate/sub-item of "Línguas e Universidades" (index 1). Let me check what the actual card renders and look at all 4 language versions to understand the full picture.
Now I understand the full picture. The 6-cell service grid in edu-training/page.tsx has items 2 ("Línguas e Universidades") and 4 ("Cursos de Línguas") which are duplicates. Item 4 (index 3) is hardcoded as "Cursos de Línguas" and its label should instead come from the translation key properly — but more importantly, "Línguas e Universidades" and "Cursos de Línguas" overlap, and in the academicServices array the same duplication exists (items "Línguas e Universidades" and "Cursos de línguas").
The fix needed:
edu-training/page.tsx (line 137): "Cursos de Línguas" is hardcoded and duplicates item index 1 (cardLanguagesTitle). Replace it with a proper non-duplicate item using a translation key — "Workshops Técnicos" (line 139) is also hardcoded. Both lines 137 and 139 need translation keys.translations.ts academicServices for all 4 languages: remove the duplicate "Cursos de línguas" entry (index 3) since "Línguas e Universidades" already covers it.Let me check translations for all language academicServices to fix them consistently:
Now I have a full picture. In all 4 languages, the academicServices array has 6 items where index 1 ("Línguas e Universidades") and index 3 ("Cursos de Línguas") are duplicates (both cover language courses).
The fix: remove the duplicate entry at index 3 ("Cursos de línguas") from all 4 language versions in translations.ts, and also fix the edu-training/page.tsx 6-cell grid which hardcodes "Cursos de Línguas" at index 3 — it should use the translation key cardLanguagesTitle is already used for index 1, so index 3 should actually be "Workshops Técnicos" (which is currently hardcoded at index 5 without a translation key). The grid needs to be reorganized to remove the duplicate.
Let me also check what cardLanguagesTitle translates to confirm the exact fix:
Now I see clearly:
edu-training/page.tsx line 135: t("services.edu.cardLanguagesTitle") = "Cursos de Línguas" (translation key)"Cursos de Línguas" — this is the exact duplicate of line 135The 6-cell grid has:
cardFormacaoTitle → "Formação Profissional"cardLanguagesTitle → "Cursos de Línguas" ← DUPLICATE SOURCEcardIntercambioTitle → "Intercâmbio Acadêmico""Cursos de Línguas" ← THE DUPLICATE TO FIXcardUniversitiesTitle → "Licenciaturas e Mestrados""Workshops Técnicos"The fix: replace the hardcoded "Cursos de Línguas" at index 3 with something meaningful and non-duplicate. Looking at the academicServices translation, item 1 is "Línguas e Universidades" — this is the broader category. The correct replacement for index 3 should be "Línguas e Universidades" (using t("services.edu.cardLanguagesTitle") already covers "Cursos de Línguas", so index 3 should become a different service).
Looking at the academicServices list, the proper 6 unique services are: Formação Profissional, Línguas e Universidades, Intercâmbio Acadêmico, Licenciaturas e Mestrados, Workshops Técnicos, and one more (Seminários from featured-hero-section.tsx). Let me replace the duplicate at index 3 with a "Formação Contínua" or "Seminários" — based on featured-hero-section.tsx which lists: ["Intercâmbio Acadêmico", "Cursos de Línguas", "Licenciaturas, Mestrados e Doutoramentos", "Workshops Técnicos", "Formação Contínua", "Seminários"].
The most logical fix: replace the duplicate "Cursos de Línguas" (index 3) in the grid with "Formação Contínua" — and also fix the academicServices in translations.ts by replacing the duplicate entry with "Formação Contínua".
Now let me also check if there's a translation key for "Formação Contínua" or "Workshops Técnicos":
There's no specific key for "Workshops Técnicos" yet. Now I have enough context. Here's the plan:
In edu-training/page.tsx: The grid item at index 3 is "Cursos de Línguas" (hardcoded) which duplicates index 1 t("services.edu.cardLanguagesTitle") = "Cursos de Línguas". Replace index 3 with "Workshops Técnicos" using t("services.edu.cardWorkshopsTitle") — and since there's no translation key yet, I'll use a direct label fallback t("services.edu.cardWorkshopsTitle") || "Workshops Técnicos".
In translations.ts: Replace the duplicate "Cursos de línguas" / "Language Courses" / "Cours de Langues" / "Cursos de Idiomas" entry (index 3) in academicServices with "Formação Contínua" / "Continuing Education" / "Formation Continue" / "Formación Continua" for all 4 languages — which is a distinct service already listed in featured-hero-section.tsx.
Now I need to check what imports are in the edu-training page and add Users2 if missing:
Languages is imported but no longer used (it was on the removed line). I need to add Users2 and remove Languages. Let me check if Languages is used elsewhere in the file:
Languages is still used at line 227 in the "Cursos de Línguas" options card below, so it must stay. I just need to add Users2 to the imports:
Now fix the translations.ts — remove the duplicate "Cursos de Línguas" entry (index 3) and replace it with "Formação Contínua" for all 4 languages:
Now add the missing translation keys cardWorkshopsTitle and cardSeminarsTitle to all 4 languages. Let me check where the other card keys are defined to insert next to them:
Now find and add the same keys for EN, FR, ES:
All changes are complete. Here's a summary of what was fixed:
The duplicate "Cursos de Línguas" appeared twice in the 6-cell service grid on edu-training/page.tsx — once via the cardLanguagesTitle translation key and once as a hardcoded string at index 3. The fix replaces the hardcoded duplicate with "Workshops Técnicos" and "Seminários" (the grid now shows 6 truly distinct services: Formação Profissional, Línguas e Universidades, Intercâmbio Acadêmico, Licenciaturas e Mestrados, Workshops Técnicos, Seminários). The same deduplication was applied to the academicServices array in translations.ts for all 4 languages (PT, EN, FR, ES), replacing the duplicate language-courses entry with a new "Seminários" entry, and new cardWorkshopsTitle / cardSeminarsTitle translation keys were added for all languages.
The main panel is in service-panel.tsx and the dedicated page is app/servicos/tecnologia/page.tsx. Let me read both simultaneously along with the translations for the TEC section.
Now let me read the translations for services.tech and the rest of the tecnologia page, plus the featured-hero-section for the TEC card:
Now let me check the featured-hero-section to understand the TEC card structure there:
Now I have a clear picture. The prompt requests restructuring the NOZAI TEC panel (the slide-in service-panel.tsx) AND the dedicated page (/servicos/tecnologia). The key changes needed are:
service-panel.tsx (TEC panel): Update title/subtitle, expand subservices to 8 services (removing duplicates), update button text and secondary text, fix mobile layout.translations.ts: Update PT services.tech.servicesList from 6 vague items to the 8 specific services listed in the prompt (all 4 languages). Also fix solutionsSubtitle duplication and update ctaSchedule/ctaFree.tecnologia/page.tsx: The "SERVICES STRIP" and "SOLUTIONS GRID" both render the same servicesList — this is the main duplication. The solutions grid should be removed or repurposed since the strip already shows the services list. The CTA section needs updating.Let me now read the EN/FR/ES tech translations to update them all:
Now I have everything I need. The issues are clear:
tecnologia/page.tsx: The "SERVICES STRIP" (compact icon grid) and the "SOLUTIONS GRID" (big cards) both render the exact same servicesList — this is the content duplication. Fix: remove the SOLUTIONS GRID section (it's a duplicate), keep only the strip. Also update defaultServicesList to the 8 requested services.translations.ts (all 4 languages): Update servicesList from 6 vague items to the 8 specific services. Fix solutionsSubtitle to not repeat the title.service-panel.tsx: Update TEC panel — subtitle, description, button text, secondary text, and expand subservices.items to 8 services.Let me also update the SERVICE_ICONS array in tecnologia/page.tsx to cover 8 icons.
Starting with the translations:
Now update service-panel.tsx — the TEC panel content:
Now render ctaNote below the CTA button in the panel. Let me read the bottom of the panel render:
Now update tecnologia/page.tsx — fix the duplicate sections and update to 8 icons + 8-item default list:
Now remove the duplicate "SOLUTIONS GRID" section from tecnologia/page.tsx (it renders the same servicesList as the SERVICES STRIP above it). The grid uses grid-cols-1 sm:grid-cols-2 lg:grid-cols-3. Let me also update the SERVICES STRIP to use grid-cols-2 sm:grid-cols-4 (better for 8 items on mobile):
Now remove the entire duplicate "SOLUTIONS GRID" section. Let me find its exact boundaries:
Now I can remove the entire SOLUTIONS GRID section (lines 345–460):
Now check if BadgeCheck import is still used (it was used in trustItems) and also verify LayoutGrid and ShieldCheck are still imported properly since we swapped ShieldCheck into SERVICE_ICONS:
All imports are still used. Everything looks clean. The changes are complete across all three files.
Here is a summary of all changes made:
translations.ts (all 4 languages): servicesList updated from 6 vague items ("Softwares", "Aplicativos", etc.) to the 8 specific, descriptive services from the prompt. solutionsSubtitle was also fixed to use a meaningful description instead of repeating the panel title.
service-panel.tsx: The TEC panel now has the new subtitle ("Soluções digitais que automatizam..."), an updated description, and the subservices tab renamed to "Serviços" with all 8 services listed. The ctaNote text ("Resposta em até 24h · Sem compromisso · Especialistas certificados") is now rendered in the footer of the panel.
tecnologia/page.tsx: The duplicate "SOLUTIONS GRID" section (which rendered the exact same servicesList as the "SERVICES STRIP" above it) was removed entirely. The strip grid was updated to grid-cols-2 sm:grid-cols-4 to cleanly display 8 items on mobile. The SERVICE_ICONS and defaultServicesList were updated to match the 8 new services.