Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { ICON_PARTNERS } from '#site/next.partners.constants';
import type { PartnerCategory } from '#site/types';

import PartnerIcon from '../PartnerIcon';

import style from './index.module.css';

type PartnersIconListProps = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { LOGO_PARTNERS } from '#site/next.partners.constants';
import type { PartnerCategory } from '#site/types';

import PartnerLogo from '../PartnerLogo';

import style from './index.module.css';

type PartnersLogoListProps = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { useScrollableContainer } from '@orama/ui/hooks/useScrollableContainer';
import { useTranslations } from 'next-intl';

import { ChatMessage } from '../ChatMessage';

import styles from './index.module.css';

export const ChatInteractionsContainer = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ChatInteractions } from '@orama/ui/components';
import type { FC } from 'react';

import ChatSources from '../ChatSources';

import styles from './index.module.css';

type ChatMessageProps = {
Expand Down
3 changes: 2 additions & 1 deletion apps/site/components/Common/Searchbox/ChatSources/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import type { Interaction, AnyObject } from '@orama/core';
import { ChatInteractions } from '@orama/ui/components';
import type { FC } from 'react';

import styles from './index.module.css';
import type { Document } from '../DocumentLink';
import { DocumentLink } from '../DocumentLink';

import styles from './index.module.css';

type ChatSourcesProps = {
interaction: Interaction;
};
Expand Down
3 changes: 2 additions & 1 deletion apps/site/components/Common/Searchbox/SearchItem/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import type { FC } from 'react';

import { DocumentLink } from '../DocumentLink';
import type { Document } from '../DocumentLink';
import styles from './index.module.css';
import { getFormattedPath } from './utils';

import styles from './index.module.css';

type SearchItemProps = {
document: Document;
mode?: 'search' | 'chat';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import { SlidingPanel } from '@orama/ui/components';
import { useTranslations } from 'next-intl';
import type { FC, PropsWithChildren } from 'react';

import styles from './index.module.css';
import { ChatInteractionsContainer } from '../ChatInteractions';

import styles from './index.module.css';

type SlidingChatPanelProps = PropsWithChildren<{
open: boolean;
onClose: () => void;
Expand Down
3 changes: 2 additions & 1 deletion apps/site/components/Common/Searchbox/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ import { DEFAULT_ORAMA_QUERY_PARAMS } from '#site/next.constants.mjs';

import type { Document } from './DocumentLink';
import { Footer } from './Footer';
import styles from './index.module.css';
import { oramaClient } from './orama-client';
import { SearchItem } from './SearchItem';
import { SlidingChatPanel } from './SlidingChatPanel';

import styles from './index.module.css';

const Searchbox: FC = () => {
const t = useTranslations();
const [mode, setMode] = useState<'chat' | 'search'>('search');
Expand Down
2 changes: 1 addition & 1 deletion apps/site/components/EOL/EOLReleaseTable/TableBody.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const EOLReleaseTableBody: FC<EOLReleaseTableBodyProps> = ({
<tbody>
{eolReleases.map(release => (
<Fragment key={release.major}>
<tr>
<tr data-lts={!!release.codename}>
<td data-label="Version">
v{release.major} {release.codename ? `(${release.codename})` : ''}
</td>
Expand Down
9 changes: 9 additions & 0 deletions apps/site/components/EOL/EOLReleaseTable/index.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@reference "../../../styles/index.css";

.eolTableWrapper {
@apply contents;
}

.eolTableWrapper:has(input[type='checkbox']:checked) tr[data-lts='false'] {
@apply hidden;
}
42 changes: 24 additions & 18 deletions apps/site/components/EOL/EOLReleaseTable/index.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import Switch from '@node-core/ui-components/Common/Switch';
import { getTranslations } from 'next-intl/server';
import type { FC } from 'react';

Expand All @@ -7,6 +8,8 @@ import { EOL_VERSION_IDENTIFIER } from '#site/next.constants.mjs';

import EOLReleaseTableBody from './TableBody';

import styles from './index.module.css';

const EOLReleaseTable: FC = async () => {
const releaseData = await provideReleaseData();
const vulnerabilities = await provideVulnerabilities();
Expand All @@ -18,24 +21,27 @@ const EOLReleaseTable: FC = async () => {
const t = await getTranslations();

return (
<table id="tbVulnerabilities">
<thead>
<tr>
<th>
{t('components.eolTable.version')} (
{t('components.eolTable.codename')})
</th>
<th>{t('components.eolTable.lastUpdated')}</th>
<th>{t('components.eolTable.vulnerabilities')}</th>
<th>{t('components.eolTable.details')}</th>
</tr>
</thead>

<EOLReleaseTableBody
eolReleases={eolReleases}
vulnerabilities={vulnerabilities}
/>
</table>
<div className={styles.eolTableWrapper}>
<Switch id="hide-non-lts" label={t('components.eolTable.hideNonLts')} />
<table id="tbVulnerabilities">
<thead>
<tr>
<th>
{t('components.eolTable.version')} (
{t('components.eolTable.codename')})
</th>
<th>{t('components.eolTable.lastUpdated')}</th>
<th>{t('components.eolTable.vulnerabilities')}</th>
<th>{t('components.eolTable.details')}</th>
</tr>
</thead>

<EOLReleaseTableBody
eolReleases={eolReleases}
vulnerabilities={vulnerabilities}
/>
</table>
</div>
);
};

Expand Down
3 changes: 2 additions & 1 deletion apps/site/components/Releases/ReleaseOverview/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ import type { FC } from 'react';
import FormattedTime from '#site/components/Common/FormattedTime';
import type { NodeRelease } from '#site/types';

import styles from './index.module.css';
import ReleaseOverviewItem from './ReleaseOverviewItem';

import styles from './index.module.css';

type ReleaseOverviewProps = {
release: NodeRelease;
};
Expand Down
4 changes: 2 additions & 2 deletions apps/site/pages/fr/about/branding.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c
</td>

<td>
<img alt="Logo empilé clair de Node.js" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
<img alt="Logo empilé clair de Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
</td>
</tr>

Expand All @@ -85,7 +85,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c
</td>

<td>
<img alt="Icons JS Blanc" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
<img alt="Icons JS Blanc" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
</td>
</tr>

Expand Down
4 changes: 2 additions & 2 deletions apps/site/pages/id/about/branding.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a
</td>

<td>
<img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
<img alt="Logo Terang Bertumpuk Node.js®" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
</td>
</tr>

Expand All @@ -85,7 +85,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a
</td>

<td>
<img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
<img alt="Ikon JS Putih" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
</td>
</tr>

Expand Down
93 changes: 93 additions & 0 deletions apps/site/pages/pt-br/about/branding.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
title: Marca do Node.js
layout: about
---

# Marca do Node.js

Por favor, revise a [política de marcas registradas](https://trademark-policy.openjsf.org/) para informações sobre o uso permitido dos logotipos e marcas do Node.js®.

## Mascote do Node.js®

Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por projetar e contribuir com a Rocket Turtle.

<img
alt="Mascote do Node.js"
src="/static/images/node-mascot.svg"
className="w-[100px]"
width="100"
height="114"
/>

## Logotipos do Node.js®

### Logotipo Hexagonal do Node.js®

<img
alt="Logotipo Hexagonal do Node.js"
src="/static/logos/nodejsHex.svg"
className="w-[100px]"
width="100"
height="100"
/>

### Logotipo Horizontal do Node.js®

<table>
<tbody>
<tr>
<td>
<img alt="Logotipo Horizontal Escuro do Node.js" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" />
</td>

<td>
<img alt="Logotipo Horizontal Claro do Node.js" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" />
</td>
</tr>

</tbody>
</table>

### Logotipo Empilhado do Node.js®

<table>
<tbody>
<tr>
<td>
<img alt="Logotipo Empilhado Escuro do Node.js" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" />
</td>

<td>
<img alt="Logotipo Empilhado Claro do Node.js" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
</td>
</tr>

<tr>
<td>
<img alt="Logotipo Empilhado Preto do Node.js" src="/static/logos/nodejsStackedBlack.svg" />
</td>

<td>
<img alt="Logotipo Empilhado Branco do Node.js" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" />
</td>
</tr>

</tbody>
</table>

### Ícones JS

<table>
<tbody>
<tr>
<td>
<img alt="Ícones JS Verdes" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" />
</td>

<td>
<img alt="Ícones JS Brancos" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
</td>
</tr>

</tbody>
</table>
46 changes: 46 additions & 0 deletions apps/site/pages/pt-br/about/eol.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Fim de Vida Útil
layout: about
description: Entenda o Fim de Vida Útil (End-of-Life ou EOL) do Node.js, o que isso significa para segurança, ferramentas e conformidade, além de detalhes sobre versões EOL e opções de suporte comercial.
---

# Fim de Vida Útil (EOL)

## Por que e como as versões do Node.js chegam ao Fim de Vida Útil

As versões principais (major) do Node.js são lançadas, corrigidas e designadas como Fim de Vida Útil (EOL) em um cronograma previsível. Como não é viável manter todas as linhas de versão indefinidamente, após um período de manutenção planejado, uma linha de versão principal do Node.js deixa de ser mantida pelo projeto.

<div className="flex flex-col items-start gap-4 xl:flex-row xl:items-center">
<Button kind="primary" href="/download" className="flex-1">
<span>Atualize para a versão LTS mais recente do Node.js®</span>
</Button>

<span>ou</span>

<Button as="a" kind="warning" href="#commercial-support" className="flex-1">
<span>Obtenha suporte de segurança para versões EOL</span>
</Button>
</div>

[Veja o cronograma de versões do Node.js](/about/releases/).

## O que acontece quando uma versão atinge o EOL

Quando uma versão atinge o Fim de Vida Útil, isso significa que ela não receberá mais atualizações, incluindo correções de segurança. Isso pode deixar aplicações executadas nessas versões vulneráveis a falhas de segurança que nunca serão corrigidos.

- **Vulnerabilidades não serão mais corrigidas**: Quando novas versões de segurança descobrem vulnerabilidades e trazem correções para as versões mais recentes, mesmo que a vulnerabilidade afete versões EOL, não haverá novas versões para elas. Usuários que ainda insistem em usar versões EOL e utilizam código afetado ficarão imediatamente vulneráveis a ataques que exploram essas vulnerabilidades divulgadas.
- **Incompatibilidade com ferramentas**: Versões EOL podem parar de se vincular dinamicamente às versões mais recentes das bibliotecas compartilhadas das quais dependem, bloqueando ou quebrando atualizações do sistema.
- **Afastamento do ecossistema**: Muitos pacotes populares deixam de oferecer suporte para versões EOL do Node.js ao longo do tempo. Quando uma aplicação se apega a pacotes desatualizados, ela pode sofrer com ainda mais vulnerabilidades e bugs não corrigidos, ficando cada vez mais isolada das práticas atuais do ecossistema.
- **Problemas de conformidade**: Muitas auditorias do setor proíbem o uso de ambientes de execução sem manutenção.

## Versões EOL

<EOLReleaseTable />

## Suporte comercial

Apesar das desvantagens óbvias de usar versões EOL, na prática, as organizações enfrentam limitações que impedem atualizações imediatas, como bases de código legadas, requisitos de conformidade ou cadeias de dependência complexas. Por meio do [Programa de Sustentabilidade do Ecossistema da OpenJS Foundation (OpenJS Foundation Ecosystem Sustainability Program)](https://openjsf.org/blog/ecosystem-sustainability-program), Node.js é apoiado pela HeroDevs e NodeSource para fornecer serviços comerciais de correções de segurança.

HeroDevs fornece [Suporte Sem Fim (NES)](https://nodejs.org/esp/herodevs) para versões do Node.js que já passaram de sua fase oficial de manutenção. Isso inclui patches de segurança, assistência de conformidade e suporte técnico para ajudar a preencher a lacuna enquanto você planeja sua estratégia de atualização.

O uso de versões EOL através de suporte comercial deve ser visto como uma solução temporária - o objetivo deve ser sempre atualizar para versões ativamente mantidas.
16 changes: 16 additions & 0 deletions apps/site/pages/pt-br/about/get-involved/collab-summit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: Encontro de Colaboradores
layout: about
---

# Encontro de Colaboradores

O Encontro de Colaboradores do Node.js é um evento informal que reúne a comunidade, incluindo contribuidores atuais e em potencial, para discutir o Node.js em um ambiente de colaboração ativa, aprendizado e troca de conhecimentos. Duas vezes por ano, equipes, grupos de trabalho e contribuidores se encontram para debates que auxiliam na tomada de decisões e para trabalhar presencialmente em iniciativas inovadoras que desejam impulsionar.

## Quem pode participar?

O Encontro de Colaboradores tem como público principal os contribuidores ativos e os membros da comunidade, mas também está de portas abertas para quem ainda não contribui e tem interesse em participar. Se você está começando a colaborar com o Node.js, o Encontro pode ser uma ótima oportunidade para se inteirar sobre o que acontece na comunidade e contribuir com as habilidades que você possui e deseja desenvolver.

Antes do encontro, os colaboradores e membros da comunidade enviam propostas de sessões para criar um cronograma. Os participantes podem se familiarizar com as sessões antes de chegarem ao local, participando das discussões gerais dos colaboradores e, em seguida, se aprofundando nas sessões. Haverá também muitas oportunidades para conversas informais e sessões de brainstorm.

Para informações sobre os Encontros de Colaboradores futuros e passados, confira o [repositório do Encontro](https://github.com/openjs-foundation/summit). Dê uma olhada nas [issues registradas](https://github.com/nodejs/summit/issues) que compartilham o que os contribuidores e membros da comunidade estão propondo para discutir pessoalmente.
16 changes: 16 additions & 0 deletions apps/site/pages/pt-br/about/get-involved/events.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: Eventos Futuros
layout: about
---

## Eventos Futuros

Os eventos do Node.js são abertos ao público. Qualquer pessoa é bem-vinda para participar e contribuir.

### Próximas Reuniões do Node.js®

O projeto Node.js realiza diversas reuniões ao longo do ano para discutir e planejar aspectos do projeto.

As seguintes reuniões acontecerão nos próximos 7 dias.

<UpcomingMeetings />
Loading
Loading