feat: alinha tags da sidebar dinamicamente e implementa cards de sugestao tematica de boas-vindas

This commit is contained in:
2026-05-26 17:52:00 +00:00
parent 102aa6d712
commit 63ac641c5f
2 changed files with 59 additions and 8 deletions
+36 -8
View File
@@ -150,9 +150,18 @@ const initApp = () => {
updateModelBadge();
// ==========================================================================
// MODAL DE TAGS
// MODAL DE TAGS & SIDEBAR TAGS
// ==========================================================================
const AVAILABLE_TAGS = ['HTPC', 'ATA', 'Planejamento', 'Formação', 'Projeto', 'Relatório', 'Sugestão', 'Dúvida'];
const AVAILABLE_TAGS = [
{ id: 'relatorios', label: '📋 Relatórios' },
{ id: 'planejamento', label: '📝 Planejamento' },
{ id: 'mindlab', label: '🧠 Mind Lab' },
{ id: 'estudos', label: '📚 Estudos' },
{ id: 'htpc', label: '💻 HTPC' },
{ id: 'ata', label: '📝 ATA' },
{ id: 'sugestao', label: '💡 Sugestão' },
{ id: 'duvida', label: '❓ Dúvida' }
];
const modalTagOverlay = document.getElementById('modalTagOverlay');
const modalTagList = document.getElementById('modalTagList');
const modalTagClose = document.getElementById('modalTagClose');
@@ -175,9 +184,9 @@ const initApp = () => {
const renderTagModalList = () => {
modalTagList.innerHTML = AVAILABLE_TAGS.map(tag => `
<div class="modal-tag-item ${selectedTagsState.includes(tag) ? 'selected' : ''}" data-tag="${tag}">
<input type="checkbox" ${selectedTagsState.includes(tag) ? 'checked' : ''}>
<span>${tag}</span>
<div class="modal-tag-item ${selectedTagsState.includes(tag.id) ? 'selected' : ''}" data-tag="${tag.id}">
<input type="checkbox" ${selectedTagsState.includes(tag.id) ? 'checked' : ''}>
<span>${tag.label}</span>
</div>
`).join('');
@@ -194,6 +203,17 @@ const initApp = () => {
});
};
const renderSidebarTags = () => {
if (!sidebarTags) return;
let tagsHtml = `<button class="tag-filter ${activeTag === 'all' ? 'active' : ''}" data-tag="all">Todas</button>`;
tagsHtml += AVAILABLE_TAGS.map(tag => `
<button class="tag-filter ${activeTag === tag.id ? 'active' : ''}" data-tag="${tag.id}">
${tag.label}
</button>
`).join('');
sidebarTags.innerHTML = tagsHtml;
};
modalTagClose.addEventListener('click', closeTagModal);
modalTagCancel.addEventListener('click', closeTagModal);
modalTagOverlay.addEventListener('click', (e) => {
@@ -270,8 +290,6 @@ const initApp = () => {
sidebarTags.addEventListener('click', (e) => {
const tagBtn = e.target.closest('.tag-filter');
if (!tagBtn) return;
document.querySelectorAll('.tag-filter').forEach(b => b.classList.remove('active'));
tagBtn.classList.add('active');
activeTag = tagBtn.dataset.tag;
renderHistory();
});
@@ -667,12 +685,22 @@ const initApp = () => {
// Emoji para cada tag
const getTagEmoji = (tag) => {
const emojis = { relatorios: '📋', planejamento: '📝', mindlab: '🧠', estudos: '📚' };
const emojis = {
relatorios: '📋',
planejamento: '📝',
mindlab: '🧠',
estudos: '📚',
htpc: '💻',
ata: '📝',
sugestao: '💡',
duvida: '❓'
};
return emojis[tag] || '🏷️';
};
// Renderizar histórico completo
const renderHistory = () => {
renderSidebarTags(); // Renderizar tags da sidebar de forma dinâmica e atualizada
historyItems.innerHTML = '';
if (chats.length === 0) {