# Sistema de Design Monday Vibe

## Prévia da interface do sistema de design Monday Vibe

Edite o status das linhas e conclua os itens selecionados; as contagens do resumo são atualizadas localmente.

## Referência de design do sistema de design Monday Vibe

Integração com o Vibe 4, suas fontes públicas e @vibe/core. Os valores abaixo correspondem às definições verificadas do tema claro e dos estilos; as cores dos rótulos do quadro são distintas das cores semânticas de sucesso/erro. O exemplo nativo usa controles Button reais do Vibe dentro de uma tabela HTML pertencente à aplicação.

### Variáveis de espaçamento atuais

| Nome / Regra | Valor / Configuração | Uso |
| --- | --- | --- |
| --space-2 | 2px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-4 | 4px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-8 | 8px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-12 | 12px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-16 | 16px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-20 | 20px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-24 | 24px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-32 | 32px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-40 | 40px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-48 | 48px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-64 | 64px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
| --space-80 | 80px | Use no espaçamento da aplicação; o nome numérico do token corresponde à grafia atual na fonte. |
### Cores de ações e superfícies

| Nome / Regra | Valor / Configuração | Uso |
| --- | --- | --- |
| --primary-color | #0073ea | Ações primárias. |
| --primary-hover-color | #0060b9 | Ação primária ao passar o cursor. |
| --primary-selected-color | #cce5ff | Plano de fundo do conteúdo selecionado. |
| --primary-text-color | #323338 | Texto padrão legível. |
| --secondary-text-color | #676879 | Rótulos secundários. |
| --primary-background-color | #ffffff | Superfície principal. |
| --allgrey-background-color | #f6f7fb | Plano de fundo da aplicação. |
| --ui-border-color | #c3c6d4 | Limite do controle. |
| --positive-color | #00854d | Ação semanticamente positiva. |
| --negative-color | #d83a52 | Ação semanticamente negativa. |
### Paleta de rótulos do quadro

| Nome / Regra | Valor / Configuração | Uso |
| --- | --- | --- |
| --color-done-green | #00c875 | Rótulo categórico Done, não a cor semanticamente positiva. |
| --color-working_orange | #fdab3d | Rótulo categórico Working; o nome exato na fonte inclui sublinhado. |
| --color-stuck-red | #df2f4a | Rótulo categórico Stuck. |
| --color-dark_purple | #784bd1 | Exemplo de identidade de grupo. |
### Atalhos tipográficos

| Nome / Regra | Valor / Configuração | Uso |
| --- | --- | --- |
| --font-family | Figtree, Roboto, Noto script fallbacks, sans-serif | Família tipográfica do corpo; os arquivos de fontes são instalados separadamente. |
| --title-font-family | Poppins, Roboto, Noto script fallbacks, sans-serif | Família tipográfica dos títulos. |
| --font-h1-medium | 600 32px/40px; title family | Título do quadro. |
| --font-h2-medium | 600 24px/30px; title family | Cabeçalho do grupo. |
| --font-h3-medium | 600 18px/24px; title family | Subseção compacta. |
| --font-text1-normal | 400 16px/22px; body family | Conteúdo regular. |
| --font-text2-normal | 400 14px/20px; body family | Conteúdo denso das linhas. |
| --font-text3-normal | 400 12px/16px; body family | Detalhes complementares. |
### Cantos

| Nome / Regra | Valor / Configuração | Uso |
| --- | --- | --- |
| --border-radius-4 | 4px | Controles pequenos. |
| --border-radius-8 | 8px | Contêineres médios. |
| --border-radius-12 | 12px | Etapa numérica de canto disponível. |
| --border-radius-16 | 16px | Contêineres grandes. |
| --border-radius-small | var(--border-radius-4) | Alias nomeado para pequeno. |
| --border-radius-medium | var(--border-radius-8) | Alias nomeado para médio. |
| --border-radius-big | var(--border-radius-16) | Alias nomeado para grande. |
### Botão API

| Nome / Regra | Valor / Configuração | Uso |
| --- | --- | --- |
| kind | Default: primary | Ênfase visual, incluindo as ações terciárias usadas neste exemplo. |
| size | Default: medium | Use o tamanho pequeno para ações compactas nas linhas. |
| type | Default: button | Defina explicitamente submit para enviar o formulário. |
| disabled | boolean | Desativa a ação em lote quando nenhuma linha está selecionada. |
| loading | boolean | Exibe um indicador de carregamento durante uma operação real pendente. |
| active | boolean | Estado ativo visual; para um controle de alternância, exponha também aria-pressed. |
| onClick | React mouse-event callback | Atualize o estado da aplicação aqui. |
| aria-pressed | ARIA pressed state | Comunique a seleção de alternância da linha se usar botões de alternância. |
## Guia completo do sistema de design Monday Vibe

Um guia prático para escolher, aplicar e avaliar este sistema em uma interface real.

Orientações completas, um ponto de partida para a implementação e links para o código-fonte.

## Desenvolva com os pontos de entrada atuais do Vibe no sistema de design Monday Vibe

### Os componentes principais e os tokens CSS são importados separadamente

> O Vibe 4 disponibiliza componentes React nomeados por meio de @vibe/core e as variáveis CSS por meio de @vibe/core/tokens. Importe ambos em uma nova aplicação cliente. Um componente pode injetar seus próprios estilos e ainda depender de variáveis fornecidas pelo arquivo de tokens. O exemplo do quadro usa a estrutura nativa de tabela e controles Button reais do Vibe, com dados de linhas e seleção pertencentes à aplicação.

Consulte a especificação de apoio

### Evite misturar gerações anteriores do pacote

O pacote antigo monday-ui-react-core pertence ao Vibe 2. O Vibe 3 recebe manutenção para correções críticas, não para novos recursos. Este guia usa a interface atual do Vibe 4 e as variáveis de espaçamento numeradas. A integração não é um cliente do SDK do monday.com e não tem conexão com conta, espaço de trabalho ou item API.

Consulte a especificação de apoio

## No sistema de design Monday Vibe, as cores de ação e os rótulos do quadro têm funções diferentes

### Use funções semânticas nos controles

As ações primárias usam a função primária e sua cor correspondente ao passar o cursor. A seleção usa o plano de fundo de selecionado, enquanto a leitura normal usa as funções de texto primário e secundário. Use os valores do tema como um conjunto integrado, em vez de alterar apenas o plano de fundo do corpo. Este estudo local permanece no tema claro verificado.

Consulte a especificação de apoio

### Uma célula Done não é um botão de sucesso

A fonte inclui cores categóricas do quadro, além das cores semânticas de feedback. O verde de Done é #00c875, enquanto a cor semanticamente positiva é #00854d. As células de status das linhas usam as cores do quadro com texto contrastante e legível, mantêm as palavras Working, Stuck e Done e nunca dependem apenas da cor para descrever o estado.

Consulte a especificação de apoio

## Use o atalho tipográfico completo no sistema de design Monday Vibe

### Títulos e linhas de trabalho têm estilos próprios

A fonte define Poppins para títulos e Figtree para o conteúdo do corpo, com alternativas compatíveis com diferentes sistemas de escrita. O atalho atual h1-medium é 600 32px/40px, enquanto text2-normal é 400 14px/20px. Aplique o atalho com a propriedade CSS font para manter peso, tamanho, altura da linha e família tipográfica integrados. A fonte também contém aliases de cabeçalho mais antigos; não os substitua silenciosamente por opções de escala diferente.

Consulte a especificação de apoio

### Carregue os arquivos de fontes de forma deliberada

O Vibe não importa os arquivos de fontes recomendados por você. Adicione o link documentado da folha de estilos de Figtree/Poppins à aplicação HTML ou hospede arquivos licenciados adequadamente. O exemplo offline usa explicitamente fontes substitutas do sistema; portanto, sua renderização é uma interpretação, não uma alegação de reproduzir exatamente a tipografia do monday.com.

Consulte a especificação de apoio

## Um quadro compacto sem controles comprimidos no sistema de design Monday Vibe

### Os espaçamentos numerados definem o ritmo

Use --space-8 entre ações adjacentes da barra de ferramentas, --space-16 no preenchimento interno do painel e --space-24 entre as regiões do quadro. Todos são nomes exatos da fonte atual. Essas disposições são escolhas feitas para esta aplicação. A escala também inclui uma etapa de dois pixels para alinhamentos finos e valores maiores, de até oitenta pixels, para a composição.

Consulte a especificação de apoio

### Os cantos definem o contorno dos contêineres

Os aliases pequeno, médio e grande correspondem, respectivamente, a quatro, oito e dezesseis pixels. Use cantos médios no quadro externo e mantenha quadradas e alinhadas as células da tabela. Arredondar cada célula colorida como se fosse um selo dificulta a leitura rápida das relações entre colunas densas.

Consulte a especificação de apoio

## Uma tabela editável com barra de ferramentas para ações em lote no sistema de design Monday Vibe

### Mantenha explícita a estrutura dos dados

Cada item de trabalho tem um id estável, um título, um responsável e um status. Os cabeçalhos nativos das colunas explicam esses valores. A caixa de seleção de uma linha adiciona o id a um Set; ao alterar o status, o objeto correspondente é substituído, em vez de mutar o array. A ação Concluir selecionados lê o mesmo Set e atualiza apenas as linhas selecionadas. O resumo de conclusão é derivado das linhas.

- O botão primário para ações em lote fica desativado quando o Set de seleção está vazio.

- A ação terciária de cada linha percorre os status locais para fins de demonstração.

- A ação de redefinição restaura as linhas iniciais e limpa a seleção.

Consulte a especificação de apoio

## Exponha o estado por meio do componente Button API real no sistema de design Monday Vibe

### Desativado, carregando e pressionado são estados diferentes

O exemplo nativo usa disabled para uma ação em lote indisponível. Não exibe carregamento nem sucesso porque não há operação remota. Se conectar uma camada de persistência real, associe loading ao ciclo de vida da solicitação e atualize o estado de sucesso somente após a confirmação. A fonte do Button também expõe active para a aparência e aria-pressed para a semântica de alternância; um não substitui o outro.

Consulte a especificação de apoio

### Não transforme edições locais em alegações sobre um serviço

A mensagem dinâmica informa quantos itens locais foram alterados. Ela não diz que um quadro do monday.com foi atualizado. Ao recarregar a página, os dados de exemplo iniciais são restaurados. Uma integração de produção exigiria permissões explícitas do espaço de trabalho, tratamento de erros e sincronização fora da camada do sistema de design.

Consulte a especificação de apoio

## Preserve o significado das linhas em diferentes larguras no sistema de design Monday Vibe

### Adapte a demonstração de forma cuidadosa

No quadro offline, cada linha se transforma em um cartão de item identificado em telas estreitas. Os nomes das colunas são repetidos como rótulos visíveis para manter claros o responsável e o status. Essa é uma escolha de layout da aplicação, não uma alegação de que o Vibe transforma automaticamente todas as tabelas. Como alternativa para dados mais densos, o exemplo inicial nativo mantém uma tabela semântica em uma região identificada com rolagem horizontal.

Consulte a especificação de apoio

### O box sizing global é um pré-requisito

Aplique border-box a elementos e pseudoelementos antes de usar a biblioteca. Sem isso, uma célula de largura fixa com preenchimento interno pode ultrapassar o tamanho previsto, especialmente quando há um botão dentro de uma coluna densa. Mantenha flexível o contêiner externo e permita que as ações da barra de ferramentas quebrem para a linha seguinte.

Consulte a especificação de apoio

## Seleção e status precisam de nomes independentes no sistema de design Monday Vibe

### Identifique cada controle de linha

Uma caixa de seleção inclui o título do item de trabalho em seu nome acessível. Cada ação de status inclui o nome do item e o status atual. Uma mensagem de status cortês informa o resultado do lote. Usuários de teclado podem selecionar linhas, ativar o comando em lote e redefinir o quadro usando controles nativos; a página não inventa o comportamento das teclas de seta de planilhas.

1. Selecione Design e confirme que a ação em lote fica disponível.

2. Conclua a seleção e verifique se o texto do status e a contagem derivada estão de acordo.

3. Redefina e verifique se os dados e a seleção das caixas de seleção voltam ao estado inicial.

Consulte a especificação de apoio

## Uma entrada completa do lado do cliente no sistema de design Monday Vibe

### Instale, importe e monte

A configuração abaixo é uma entrada main.jsx para um projeto cliente React que contém um elemento raiz. Instale react, react-dom e @vibe/core@4, carregue os tokens CSS uma vez e aplique a folha de estilos global indicada. O pacote atual usa exportações de módulos ES. A extração de estilos no servidor está documentada como experimental; este exemplo inicial usa renderização no cliente deliberadamente.

Consulte a especificação de apoio

## Exemplos de componentes do sistema de design Monday Vibe

### Exemplo interativo completo e independente

Salve o documento completo como index.html e abra-o em um navegador. Interpretação independente de HTML/CSS, com paleta, espaçamentos e dimensões tipográficas do tema claro do Vibe verificados; fonte substituta do sistema.

```
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Weekly delivery — Vibe study</title><style>*{box-sizing:border-box}body{margin:0;background:#f6f7fb;color:#323338;font:14px/20px Arial,sans-serif}button,input{font:inherit}button{cursor:pointer;border:0;border-radius:4px;padding:8px 16px;background:white;color:#323338}button:hover{background:#e7e9ef}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible{outline:3px solid #0073ea;outline-offset:2px}.shell{display:grid;grid-template-columns:180px minmax(0,1fr);min-height:600px}aside{padding:24px 16px;border-right:1px solid #d0d4e4;background:#fff}.brand{font-size:20px;font-weight:bold;margin-bottom:40px}.brand span{color:#0073ea}aside p{font-size:12px;color:#676879}aside strong{display:block;background:#cce5ff;padding:12px;border-radius:4px;color:#323338}main{padding:32px;min-width:0}h1{font-size:32px;line-height:40px;font-weight:600;margin:0 0 8px}.sub{color:#676879}.overview{margin:24px 0;display:grid;grid-template-columns:1fr 2fr;gap:24px;align-items:center}.count{font-size:32px;line-height:40px}.count small{font-size:14px;color:#676879}.bar{display:flex;border-radius:8px;overflow:hidden;height:16px;background:#e7e9ef}.bar span{transition:width .15s}.legend{display:flex;gap:16px;font-size:12px;margin-top:8px}.legend span:before{content:'●';color:var(--c);margin-right:4px}.tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.primary{background:#0073ea;color:white}.primary:hover{background:#0060b9}h2{font-size:18px;line-height:24px;color:#784bd1;font-weight:600}.board{border-left:6px solid #784bd1;border-radius:8px;background:white;overflow:hidden}.row,.head{display:grid;grid-template-columns:36px minmax(180px,1fr) 90px 130px;align-items:center;min-height:52px;border-bottom:1px solid #d0d4e4}.head{color:#676879;min-height:36px;font-size:12px}.row>*{padding:12px}.head>*{padding:8px}.row label{display:flex;align-items:center;justify-content:center}.row input{accent-color:#0073ea}.row .status{border-radius:0;height:100%;font-weight:500}.status[data-status=Working]{background:#fdab3d}.status[data-status=Stuck]{background:#df2f4a;color:white}.status[data-status=Done]{background:#00c875}.person{display:inline-flex;align-items:center;gap:8px}.avatar{width:24px;height:24px;border-radius:50%;background:#eceff8;display:inline-grid;place-items:center;font-size:11px}.row.selected{background:#f0f7ff}#message{min-height:24px;margin-top:16px;color:#676879}.mobile-label{display:none}footer{padding:16px 24px;color:#676879;font-size:11px;border-top:1px solid #d0d4e4}@media(max-width:800px){.shell{grid-template-columns:1fr}aside{display:none}main{padding:24px}}@media(max-width:560px){main{padding:16px}.overview{grid-template-columns:1fr;gap:12px}.head{display:none}.row{grid-template-columns:36px 1fr}.row .person,.row .status{grid-column:2}.row .status{margin:0 12px 12px;width:calc(100% - 24px);border-radius:4px}.mobile-label{display:inline;color:#676879;margin-right:8px}.row{padding:8px 0}.legend{flex-wrap:wrap}}</style><div class="shell"><aside><div class="brand"><span>▰</span> workroom</div><p>TEAM WORKSPACE</p><strong>Weekly delivery</strong><p>Sample project<br>No external account</p></aside><main><h1>Weekly delivery</h1><div class="sub">A shared view of the work moving this week.</div><section class="overview" aria-label="Completion summary"><div class="count"><span id="done">1</span><small> / 3 completed</small></div><div><div class="bar" aria-hidden="true"><span id="working-bar" style="background:#fdab3d"></span><span id="stuck-bar" style="background:#df2f4a"></span><span id="done-bar" style="background:#00c875"></span></div><div class="legend"><span style="--c:#fdab3d">Working</span><span style="--c:#df2f4a">Stuck</span><span style="--c:#00c875">Done</span></div></div></section><div class="tools"><button class="primary" id="complete" disabled>Complete selected</button><button id="reset">Reset board</button><span id="selection" style="padding:8px;color:#676879">0 selected</span></div><h2>▼ This week</h2><div class="board"><div class="head" aria-hidden="true"><span></span><span>Item</span><span>Owner</span><span>Status</span></div><div id="rows"></div></div><p id="message" role="status">Select items or click a status to change it locally.</p></main></div><footer>Independent Vibe 4 HTML/CSS study. Published light-theme and board-label colors; system fallback fonts. No monday.com workspace connection.</footer><script>
const initial=[{id:1,title:'Design handoff',owner:'Maya',status:'Working'},{id:2,title:'Accessibility review',owner:'Theo',status:'Stuck'},{id:3,title:'Release notes',owner:'Sam',status:'Done'}],states=['Working','Stuck','Done'];let items=structuredClone(initial),selection=new Set();const $=id=>document.getElementById(id);function totals(){$('done').textContent=items.filter(x=>x.status==='Done').length;for(const state of states)$(state.toLowerCase()+'-bar').style.width=items.filter(x=>x.status===state).length/items.length*100+'%';$('complete').disabled=!selection.size;$('selection').textContent=selection.size+' selected'}function render(){$('rows').replaceChildren();for(const item of items){const row=document.createElement('div');row.className='row'+(selection.has(item.id)?' selected':'');const label=document.createElement('label'),check=document.createElement('input');check.type='checkbox';check.checked=selection.has(item.id);check.setAttribute('aria-label','Select '+item.title);check.onchange=()=>{check.checked?selection.add(item.id):selection.delete(item.id);row.classList.toggle('selected',check.checked);totals()};label.append(check);const name=document.createElement('span');name.textContent=item.title;const person=document.createElement('span');person.className='person';const av=document.createElement('span');av.className='avatar';av.setAttribute('aria-hidden','true');av.textContent=item.owner[0];const pl=document.createElement('span');pl.className='mobile-label';pl.textContent='Owner';person.append(pl,av,document.createTextNode(item.owner));const status=document.createElement('button');status.className='status';status.dataset.status=item.status;status.textContent=item.status;status.setAttribute('aria-label',item.title+': '+item.status+'. Change status');status.onclick=()=>{item.status=states[(states.indexOf(item.status)+1)%states.length];status.dataset.status=item.status;status.textContent=item.status;status.setAttribute('aria-label',item.title+': '+item.status+'. Change status');totals();$('message').textContent=item.title+' is now '+item.status+' locally.'};row.append(label,name,person,status);$('rows').append(row)}totals()}
$('complete').onclick=()=>{let n=selection.size;items.forEach(x=>{if(selection.has(x.id))x.status='Done'});selection.clear();render();$('message').textContent=n+' local items completed.'};$('reset').onclick=()=>{items=structuredClone(initial);selection.clear();render();$('message').textContent='Board reset.'};render();
</script></html>
```

Referência de código

- A barra de ferramentas para ações em lote altera os status das tarefas de exemplo. As cores dos rótulos descrevem o fluxo de trabalho deste quadro e não substituem os tokens semânticos de ação do Vibe.

### Entrada da implementação nativa completa

A implementação completa, desde a configuração, reunida aqui com as explicações específicas de API. Siga os pré-requisitos documentados de pacote e compilação na configuração.

```
// npm install react react-dom @vibe/core@4
// main.jsx in a client React project with <div id="root"></div>
import React, { useState } from 'react';
import { createRoot } from 'react-dom/client';
import { Button } from '@vibe/core';
import '@vibe/core/tokens';
import './board.css';
const initial=[{id:1,title:'Design handoff',owner:'Maya',status:'Working'},
{id:2,title:'Accessibility review',owner:'Theo',status:'Stuck'},
{id:3,title:'Release notes',owner:'Sam',status:'Done'}];
const states=['Working','Stuck','Done'];
function Board(){
 const [items,setItems]=useState(initial),[selected,setSelected]=useState(new Set()),[message,setMessage]=useState('');
 const toggle=id=>setSelected(old=>{const next=new Set(old);next.has(id)?next.delete(id):next.add(id);return next});
 const complete=()=>{setItems(old=>old.map(item=>selected.has(item.id)?{...item,status:'Done'}:item));setMessage(selected.size+' local items completed');setSelected(new Set())};
 return <main className="board"><h1>Weekly delivery</h1>
 <p>{items.filter(x=>x.status==='Done').length} of {items.length} items completed</p>
 <div className="toolbar"><Button disabled={!selected.size} onClick={complete}>Complete selected</Button>
 <Button kind="tertiary" onClick={()=>{setItems(initial);setSelected(new Set());setMessage('Board reset')}}>Reset</Button></div>
 <div className="table-scroll" role="region" aria-label="Delivery items" tabIndex={0}>
 <table><thead><tr><th>Select</th><th>Item</th><th>Owner</th><th>Status</th></tr></thead><tbody>
 {items.map(item=><tr key={item.id}><td><input type="checkbox" aria-label={'Select '+item.title} checked={selected.has(item.id)} onChange={()=>toggle(item.id)}/></td>
 <th scope="row">{item.title}</th><td>{item.owner}</td><td><Button kind="tertiary" size="small" aria-label={item.title+': '+item.status+'. Change status'} onClick={()=>setItems(old=>old.map(x=>x.id===item.id?{...x,status:states[(states.indexOf(x.status)+1)%states.length]}:x))}>{item.status}</Button></td></tr>)}
 </tbody></table></div><p role="status">{message}</p></main>
}
createRoot(document.getElementById('root')).render(<Board/>);
```

Referência de código

- Entrada completa para o board local; adicione board.css do exemplo do componente. As fontes não são incluídas automaticamente. O pacote nativo API foi conferido com a fonte oficial; este ambiente não compilou o exemplo do pacote.

### Folha de estilos do board baseada em tokens

Use a exportação de tokens para layout e tipografia. A região pai mantém a tabela semântica utilizável em larguras estreitas.

```
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--allgrey-background-color);color:var(--primary-text-color);font:var(--font-text2-normal)}
.board{max-width:960px;margin:auto;padding:var(--space-24)}
h1{font:var(--font-h1-medium)}
.toolbar{display:flex;flex-wrap:wrap;gap:var(--space-8);margin-bottom:var(--space-16)}
.table-scroll{overflow:auto;border:1px solid var(--layout-border-color);border-radius:var(--border-radius-medium)}
table{width:100%;min-width:560px;border-collapse:collapse;background:var(--primary-background-color)}
th,td{text-align:left;padding:var(--space-12);border-bottom:1px solid var(--layout-border-color)}
```

Referência de código

- Esta é uma aplicação CSS que usa variáveis Vibe reais.

- A prévia incorporada usa uma interpretação HTML independente e responsiva.

### Carregamento de fontes na aplicação HTML

Carregue explicitamente as duas famílias recomendadas; a importação de tokens CSS não faz o download delas.

```
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700&family=Poppins:wght@400;500;600;700&display=swap">
```

Referência de código

- Uma configuração de fontes licenciadas e hospedadas localmente pode substituir esta folha de estilos externa.

## Configuração do agente de IA do sistema de design Monday Vibe

### Ponto de partida para implementação

Entrada completa para o board local; adicione board.css do exemplo do componente. As fontes não são incluídas automaticamente. O pacote nativo API foi conferido com a fonte oficial; este ambiente não compilou o exemplo do pacote.

```
// npm install react react-dom @vibe/core@4
// main.jsx in a client React project with <div id="root"></div>
import React, { useState } from 'react';
import { createRoot } from 'react-dom/client';
import { Button } from '@vibe/core';
import '@vibe/core/tokens';
import './board.css';
const initial=[{id:1,title:'Design handoff',owner:'Maya',status:'Working'},
{id:2,title:'Accessibility review',owner:'Theo',status:'Stuck'},
{id:3,title:'Release notes',owner:'Sam',status:'Done'}];
const states=['Working','Stuck','Done'];
function Board(){
 const [items,setItems]=useState(initial),[selected,setSelected]=useState(new Set()),[message,setMessage]=useState('');
 const toggle=id=>setSelected(old=>{const next=new Set(old);next.has(id)?next.delete(id):next.add(id);return next});
 const complete=()=>{setItems(old=>old.map(item=>selected.has(item.id)?{...item,status:'Done'}:item));setMessage(selected.size+' local items completed');setSelected(new Set())};
 return <main className="board"><h1>Weekly delivery</h1>
 <p>{items.filter(x=>x.status==='Done').length} of {items.length} items completed</p>
 <div className="toolbar"><Button disabled={!selected.size} onClick={complete}>Complete selected</Button>
 <Button kind="tertiary" onClick={()=>{setItems(initial);setSelected(new Set());setMessage('Board reset')}}>Reset</Button></div>
 <div className="table-scroll" role="region" aria-label="Delivery items" tabIndex={0}>
 <table><thead><tr><th>Select</th><th>Item</th><th>Owner</th><th>Status</th></tr></thead><tbody>
 {items.map(item=><tr key={item.id}><td><input type="checkbox" aria-label={'Select '+item.title} checked={selected.has(item.id)} onChange={()=>toggle(item.id)}/></td>
 <th scope="row">{item.title}</th><td>{item.owner}</td><td><Button kind="tertiary" size="small" aria-label={item.title+': '+item.status+'. Change status'} onClick={()=>setItems(old=>old.map(x=>x.id===item.id?{...x,status:states[(states.indexOf(x.status)+1)%states.length]}:x))}>{item.status}</Button></td></tr>)}
 </tbody></table></div><p role="status">{message}</p></main>
}
createRoot(document.getElementById('root')).render(<Board/>);
```

### Um prompt para seu projeto

```
Crie o board de entregas Vibe 4 fornecido. Importe @vibe/core/tokens, use as variáveis de espaçamento numeradas atuais e as declarações abreviadas completas de fonte, e mantenha as cores semânticas de feedback distintas das cores dos rótulos do board. Implemente a seleção local de linhas, a edição de status e uma contagem derivada de conclusão. Use disabled no botão de ação em lote; não simule salvamento remoto.
```

## Fontes e escopo do sistema de design Monday Vibe

Referência independente do Vibe 4 e demonstração de um board local. Sem conta monday.com, dados de workspace ou conexão com SDK. O starter nativo usa controles Button reais do Vibe e marcação de tabela mantida pela aplicação.

- Visão geral do sistema de design Vibe 4 Pacote atual, entrada de tokens e limites de versões anteriores.

- Integração principal Importações na raiz, box sizing global e fontes carregadas separadamente.

- Origem do tema claro Cores semânticas, cores dos rótulos do board e sombras.

- Origem do espaçamento Variáveis de espaçamento numeradas atuais.

- Origem da tipografia Famílias Figtree/Poppins e estilos abreviados.

- Origem dos raios Tokens numéricos e nomeados para cantos.

- Origem dos botões Semântica de ação controlada, desativada, em carregamento e pressionada.

- Exportações do pacote Entrada ES module e exportação de tokens CSS.

## Recursos relacionados ao sistema de design Monday Vibe

### Morningstar sistema de design

Crie uma interface de pesquisa em que os números se alinham, as cores dos recursos mantêm seu significado e a tipografia permanece legível. Explore as constantes do MDS, a adoção do Vue 3, a transição do Morningstar Intrinsic e um caderno fictício de alocação com opções de ordenação.

### Mozilla Protocol

Um guia editorial do Protocol com pilhas de fontes e escalas de espaçamento e largura de contêiner reais, uma página de leitura ilustrada e responsiva e um exemplo completo de formulário nativo de CSS.

### Nord sistema de design

Inspecione os tokens do tema Therapy do Nord e os contratos de Web Components por meio de um rascunho de solicitação de sala: funções de cor reais, dimensionamento responsivo de campos, validação explícita e resultados preparados localmente.


- [Referência de implementação](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/themes/light-theme.scss)
- [Fonte](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/spacing.scss)
- [Fonte](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/themes/light-theme.scss)
- [Fonte](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/typography.scss)
- [Fonte](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/border-radius.scss)
- [Fonte](https://github.com/mondaycom/vibe/blob/master/packages/components/button/src/Button/Button.tsx)
- [Consulte a especificação de apoio](https://github.com/mondaycom/vibe)
- [Consulte a especificação de apoio](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/themes/light-theme.scss)
- [Consulte a especificação de apoio](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/typography.scss)
- [Consulte a especificação de apoio](https://github.com/mondaycom/vibe/blob/master/packages/core/README.md)
- [Consulte a especificação de apoio](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/spacing.scss)
- [Consulte a especificação de apoio](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/border-radius.scss)
- [Consulte a especificação de apoio](https://github.com/mondaycom/vibe/blob/master/packages/components/button/src/Button/Button.tsx)
- [Consulte a especificação de apoio](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/core/package.json)
- [Referência de código](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/themes/light-theme.scss)
- [Referência de código](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/spacing.scss)
- [Referência de código](https://github.com/mondaycom/vibe/blob/master/packages/core/README.md)
- [Visão geral do sistema de design Vibe 4 Pacote atual, entrada de tokens e limites de versões anteriores.](https://github.com/mondaycom/vibe)
- [Integração principal Importações na raiz, box sizing global e fontes carregadas separadamente.](https://github.com/mondaycom/vibe/blob/master/packages/core/README.md)
- [Origem do tema claro Cores semânticas, cores dos rótulos do board e sombras.](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/themes/light-theme.scss)
- [Origem do espaçamento Variáveis de espaçamento numeradas atuais.](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/spacing.scss)
- [Origem da tipografia Famílias Figtree/Poppins e estilos abreviados.](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/typography.scss)
- [Origem dos raios Tokens numéricos e nomeados para cantos.](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/style/src/border-radius.scss)
- [Origem dos botões Semântica de ação controlada, desativada, em carregamento e pressionada.](https://github.com/mondaycom/vibe/blob/master/packages/components/button/src/Button/Button.tsx)
- [Exportações do pacote Entrada ES module e exportação de tokens CSS.](https://raw.githubusercontent.com/mondaycom/vibe/master/packages/core/package.json)
