--- name: breadcrumb-impl description: Guia implementação de breadcrumb de navegação hierárquica seguindo padrões de acessibilidade WCAG e design system do Ultrathink allowed-tools: [Read, Edit, Write] --- # Breadcrumb Implementation Skill - Ultrathink ## Objetivo Esta skill ativa automaticamente ao implementar **sistema de breadcrumb** (navegação hierárquica) no Ultrathink, garantindo: - Estrutura semântica correta (HTML5 + ARIA) - Acessibilidade WCAG 2.1 AA - Design responsivo - Integração com React Router (quando implementado) ## Especificação (US-061) **User Story:** Implementar Sistema de Breadcrumb **Complexidade:** 8 pontos **Sprint:** 2.4 **Prioridade:** 🟠 P1 ### Critérios de Aceite ✅ Posicionado no topo da página (abaixo do header) ✅ Formato: `Hub > Curso de Bash > Aula 1.1` ✅ Cada item é clicável (exceto o atual) ✅ Item atual em negrito ✅ Separador: `>` ou `/` ✅ Responsivo: colapsa em mobile para `... > Aula 1.1` ✅ Acessibilidade: `aria-label="Breadcrumb"`, `aria-current="page"` ## Estrutura HTML Semântica ```jsx ``` ## Componente React **Criar:** `src/components/shared/Breadcrumb.jsx` ```jsx import React from 'react' import { ChevronRight } from 'lucide-react' /** * Breadcrumb - Navegação hierárquica acessível * * @param {Array} items - Array de objetos: [{label, icon, onClick, current}] * @param {string} separator - Separador visual (default: ">") * @param {boolean} collapse - Colapsar em mobile (default: true) */ export function Breadcrumb({ items, separator = '>', collapse = true }) { if (!items || items.length === 0) return null return ( ) } ``` ## Uso nos Componentes ### Nível 2: Curso (Learning System) ```jsx // BashLearningSystem.jsx import { Breadcrumb } from '../shared/Breadcrumb' export function BashLearningSystem({ onBack }) { const breadcrumbItems = [ { label: 'Hub', icon: '🏠', onClick: onBack }, { label: 'Curso de Bash', icon: '📖', current: true } ] return (
{/* Resto do componente */}
) } ``` ### Nível 3: Aula (Notes View) ```jsx // BashNotesView.jsx import { Breadcrumb } from '../shared/Breadcrumb' export function BashNotesView({ moduleTitle, onBackToCourse, onBackToHub }) { const breadcrumbItems = [ { label: 'Hub', icon: '🏠', onClick: onBackToHub }, { label: 'Curso de Bash', icon: '📖', onClick: onBackToCourse }, { label: moduleTitle || 'Aula', icon: '📝', current: true } ] return (
{/* Resto do componente */}
) } ``` ### Nível 4: Modal Flash Cards ```jsx // FlashcardModal.jsx import { Breadcrumb } from '../shared/Breadcrumb' export function FlashcardModal({ technology, section, onClose }) { const breadcrumbItems = [ { label: 'Hub', icon: '🏠', onClick: () => {} // Desabilitado em modal }, { label: `Curso de ${technology}`, icon: '📖', onClick: () => {} // Desabilitado em modal }, { label: `Praticando: ${section}`, icon: '💡', current: true } ] return (
{/* Cards */}
) } ``` ## Variações de Design ### Com Ícone Lucide React ```jsx import { Home, BookOpen, FileText } from 'lucide-react' const breadcrumbItems = [ { label: 'Hub', icon: , onClick: handleHome }, { label: 'Curso', icon: , onClick: handleCourse }, { label: 'Aula', icon: , current: true } ] ``` ### Com Separador Customizado ```jsx } /> ``` ### Sem Colapso Mobile ```jsx ``` ## Acessibilidade (WCAG 2.1 AA) ### Estrutura Semântica ✅ **`