/** 面板 Tab Demo 通用交互 */
function initPanelTabs(rootId) {
const root = document.getElementById(rootId)
if (!root) return
const tabBtns = root.querySelectorAll('[data-tab]')
const panels = root.querySelectorAll('[data-panel]')
const track = root.querySelector('.tabs-06')
const singleContent = root.querySelector('#content')
function activate(name, index) {
tabBtns.forEach((btn) => {
btn.classList.toggle('is-active', btn.dataset.tab === name)
})
panels.forEach((panel) => {
panel.classList.toggle('is-active', panel.dataset.panel === name)
})
if (track) {
track.dataset.active = String(index)
}
if (singleContent && typeof mockContent === 'function') {
singleContent.innerHTML = mockContent(name)
}
}
tabBtns.forEach((btn, index) => {
btn.addEventListener('click', () => activate(btn.dataset.tab, index))
})
}
function buildBanner(currentFile, styleName, styleDesc) {
const files = [
{ id: '01', file: '01-underline-default.html', label: '01 下划线' },
{ id: '02', file: '02-pill-segmented.html', label: '02 胶囊分段' },
{ id: '03', file: '03-card-tabs.html', label: '03 卡片 Tab' },
{ id: '04', file: '04-icon-blocks.html', label: '04 图标块' },
{ id: '05', file: '05-bar-accent.html', label: '05 竖条强调' },
{ id: '06', file: '06-full-track.html', label: '06 全宽滑轨' },
{ id: '07', file: '07-minimal-dot.html', label: '07 极简圆点' }
]
const links = files
.map((f) => {
const current = f.file === currentFile ? ' is-current' : ''
return `${f.label}`
})
.join('')
return `
${styleDesc} · 点击下方 Tab 可切换模拟内容${styleName} 质检物料库 · Tab 样式 Demo
当前 Tab:${labels[tabName] || tabName}(示意内容相同,仅 Tab 样式不同)