JS Module

Y2Code Framework

Syntax highlighting zero-dependência para JS/TS, CSS, HTML, JSON, PHP e Bash. 5 temas built-in (One-Dark padrão), botão de copiar, numeração de linhas - tudo auto-inicializado e sem necessidade de escapar caracteres.

? Esta página inteira — uma demo ao vivo - todos os blocos de código abaixo foram processados automaticamente pelo Y2Code ao carregar.

1. Como Usar

Integre o Y2Code em seu projeto em apenas 2 passos.

Passo 1: Incluir Arquivos


Passo 2: Markup Semântico

Escrita Normal (No-Escape)

O Y2Code permite escrever código sem precisar converter < em <. Para linguagens com tags (HTML/PHP), envolva o código em uma tag <script type="text/plain"> dentro do <pre>.

2. Uso Básico

Escreva seu código normalmente dentro de um <pre> com o atributo y2code="linguagem".

JavaScript (Escrita Normal)
const soma = (a, b) => a + b;
console.log(soma(2, 3)); // 5
HTML/PHP (Sem Escapar - Usando Script Tag)

Para códigos que contêm tags (como HTML), use <script type="text/plain"> para evitar que o navegador interprete o código antes do realce.

3. JavaScript / TypeScript

Keywords, funções, strings, template literals, comentários, números, constantes.

// Classe com TypeScript
class UserService {
    private readonly users: Map = new Map();

    async findById(id: string): Promise {
        if (!id) throw new Error('ID obrigatório');
        return this.users.get(id) ?? null;
    }

    static create(data: Partial): User {
        return {
            id: crypto.randomUUID(),
            createdAt: new Date(),
            ...data
        };
    }
}

// Arrow functions + desestruturação
const { nome, idade = 18 } = usuario;
const ativo = idade >= 18 && nome !== null;

// Template literal
const msg = `Usuário ${nome} tem ${idade} anos.`;

4. CSS / SCSS

Seletores, propriedades, valores, variáveis, @-rules e cores.

/* Componente de Card com CSS custom properties */
@layer components {
    .crd {
        --cd-bg:  var(--y2-bg-sur);
        --cd-r:   var(--y2-r-m);
        --cd-pad: 2.4rem;

        background: var(--cd-bg);
        border-radius: var(--cd-r);
        padding: var(--cd-pad);
        transition: transform .2s, box-shadow .2s;
    }

    .crd.is-int:hover {
        transform: translateY(-4px);
        box-shadow: 0 12px 40px rgba(0, 0, 0, .3);
    }

    @media (max-width: 576px) {
        .crd { --cd-pad: 1.6rem; }
    }
}

5. HTML / Markup

Tags, atributos, valores e comentários.

6. JSON

Chaves, valores, types primitivos e aninhamento.

{
    "framework": "Y2",
    "version": "2.0.0",
    "modules": ["Y2Anime", "Y2Modal", "Y2Nav", "Y2Alert", "Y2Day", "Y2Ajax", "Y2Code"],
    "config": {
        "theme": "dark",
        "scale": "62.5%",
        "breakpoints": {
            "pp": 380,
            "p": 576,
            "m": 768,
            "g": 992,
            "gg": 1200
        }
    },
    "active": true,
    "license": null
}

7. PHP

Keywords, variáveis, funções, strings e comentários.

8. Bash / Shell

Keywords, variáveis, strings e comentários.

#!/bin/bash
# Deploy script - Y2 Framework

set -euo pipefail

APP_DIR="/var/www/y2"
BACKUP_DIR="/var/backups/y2"
DATE=$(date +%Y%m%d_%H%M%S)

echo "⚡Y⚡T Deploy Y2 - $DATE"

# Backup
if [ -d "$APP_DIR" ]; then
    tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$APP_DIR"
    echo "✓ Backup criado"
fi

# Pull + build
cd "$APP_DIR"
git pull origin main
npm ci --production
npm run build

# Restart
if command -v pm2 &> /dev/null; then
    pm2 restart y2
    echo "✓ PM2 reiniciado"
else
    echo "✗ só PM2 não encontrado"
fi

echo "✓ Deploy concluído"

9. Numeração de Linhas

Adicione lines no <pre> para ativar.

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';

// Criar aplicação
const app = createApp(App);

// Plugins
app.use(router);
app.use(store);

// Mount
app.mount('#app');

console.log('?? App iniciado com sucesso!');

10. Temas

Use theme="..." no <pre> para definir o tema inicial. O botão no header cicla pelos 5 temas.

One Dark (padrão)

kw
fn
str
com
num
bln
tag
atr
prp
var
// One Dark - Atom inspired (Default)
async function fetchUser(id) {
    const res = await fetch(`/api/users/${id}`);
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return res.json(); // { id, name, email }
}

Palenight

kw
fn
str
com
num
bln
tag
atr
prp
var
// Palenight - Material inspired
async function fetchUser(id) {
    const res = await fetch(`/api/users/${id}`);
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return res.json(); // { id, name, email }
}

Dracula

kw
fn
str
com
num
bln
tag
atr
prp
var
// Dracula - Dark with vibrant accents
async function fetchUser(id) {
    const res = await fetch(`/api/users/${id}`);
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return res.json(); // { id, name, email }
}

11. Quick Reference

Atributo / Elemento Descrição
pre[y2code="lang"] Ativa o highlight na linguagem especificada
pre[y2code-lines] Ativa numeração de linhas
pre[y2code-theme="nome"] Define o tema inicial: one-dark — palenight — dracula — github-dark — monokai
script[type="text/plain"] Use dentro do pre para NÃO precisar escapar caracteres como < e >
[y2code] Container externo gerado pelo módulo (estilização via atributo)
[y2code-hdr] Barra superior (lang badge + botão tema + botão copiar)
[y2code-thm] Botão de troca de tema (cicla pelos 5 temas)
[y2code-cpy] Botão de copiar
Linguagem Valores aceitos
JavaScript js — javascript — ts — typescript
CSS css — scss — less
HTML html — markup — xml — svg
JSON json
PHP php
Bash bash — sh — shell