---
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 (
)
}
```
## 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
✅ **`