Update botui: Knowledge Base group permissions tab and Drive UI enhancements.
Some checks failed
BotUI CI / build (push) Failing after 1h42m24s

This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2026-04-05 09:12:17 -03:00
parent 3919a857b2
commit 45f56f0f6e
3 changed files with 40 additions and 2 deletions

View file

@ -100,6 +100,7 @@
<button class="tab-btn active" data-tab="overview" onclick="switchTab(this, 'overview')">Overview</button>
<button class="tab-btn" data-tab="members" onclick="switchTab(this, 'members')">Members</button>
<button class="tab-btn" data-tab="permissions" onclick="switchTab(this, 'permissions')">Permissions</button>
<button class="tab-btn" data-tab="kbs" onclick="switchTab(this, 'kbs')">Knowledge Bases</button>
<button class="tab-btn" data-tab="settings" onclick="switchTab(this, 'settings')">Settings</button>
<button class="tab-btn" data-tab="analytics" onclick="switchTab(this, 'analytics')">Analytics</button>
</div>
@ -463,6 +464,7 @@
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}

View file

@ -1000,3 +1000,36 @@
border-radius: 0;
}
}
/* KB Tags */
.kb-tag {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 6px;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
margin-left: 8px;
text-transform: uppercase;
}
.kb-tag.public {
background: rgba(34, 197, 94, 0.15);
color: #22c55e;
border: 1px solid rgba(34, 197, 94, 0.3);
}
.kb-tag.private {
background: rgba(245, 158, 11, 0.15);
color: #f59e0b;
border: 1px solid rgba(245, 158, 11, 0.3);
}
.file-card-preview .kb-tag {
position: absolute;
top: 8px;
right: 8px;
margin: 0;
backdrop-filter: blur(4px);
}

View file

@ -348,7 +348,8 @@
const checked = selectedFiles.has(file.path) ? "checked" : "";
const selected = selectedFiles.has(file.path) ? "selected" : "";
return `<div class="file-card ${selected}" data-path="${escapeHtml(file.path)}" data-name="${escapeHtml(file.name)}" data-type="${file.is_dir ? "folder" : "file"}" data-size="${file.size || 0}"><input type="checkbox" class="file-checkbox" ${checked} onchange="DriveModule.toggleSelection('${escapeJs(file.path)}')"><div class="file-card-preview ${iconClass}">${iconSvg}</div><div class="file-card-info"><div class="file-card-name" title="${escapeHtml(file.name)}">${escapeHtml(file.name)}</div><div class="file-card-meta">${sizeText}</div></div></div>`;
const kbTag = file.is_kb ? `<span class="kb-tag ${file.is_public ? "public" : "private"}" title="${file.is_public ? "Public KB" : "Restricted KB"}">KB</span>` : "";
return `<div class="file-card ${selected}" data-path="${escapeHtml(file.path)}" data-name="${escapeHtml(file.name)}" data-type="${file.is_dir ? "folder" : "file"}" data-size="${file.size || 0}"><input type="checkbox" class="file-checkbox" ${checked} onchange="DriveModule.toggleSelection('${escapeJs(file.path)}')"><div class="file-card-preview ${iconClass}">${iconSvg}${kbTag}</div><div class="file-card-info"><div class="file-card-name" title="${escapeHtml(file.name)}">${escapeHtml(file.name)}</div><div class="file-card-meta">${sizeText}</div></div></div>`;
}
function renderFileRow(file) {
@ -365,7 +366,9 @@
? `<button class="btn-icon-sm" title="Download" onclick="event.stopPropagation(); DriveModule.downloadFile('${escapeJs(file.path)}')">${downloadIcon}</button>`
: "";
return `<div class="drive-file-item ${file.is_dir ? "folder" : ""} ${selected}" data-path="${escapeHtml(file.path)}" data-name="${escapeHtml(file.name)}" data-type="${file.is_dir ? "folder" : "file"}" data-size="${file.size || 0}"><div class="file-col file-name-col"><input type="checkbox" class="file-checkbox" ${checked} onclick="event.stopPropagation()" onchange="DriveModule.toggleSelection('${escapeJs(file.path)}')">${iconSvg}<span>${escapeHtml(file.name)}</span></div><div class="file-col file-modified-col">${modifiedText}</div><div class="file-col file-size-col">${sizeText}</div><div class="file-col file-actions-col">${downloadBtn}<button class="btn-icon-sm" title="More" onclick="event.stopPropagation(); DriveModule.showContextMenuFor(event, '${escapeJs(file.path)}')">${moreIcon}</button></div></div>`;
const kbTag = file.is_kb ? `<span class="kb-tag ${file.is_public ? "public" : "private"}" title="${file.is_public ? "Public KB" : "Restricted KB"}">${file.is_public ? "🔓" : "🔒"} KB</span>` : "";
return `<div class="drive-file-item ${file.is_dir ? "folder" : ""} ${selected}" data-path="${escapeHtml(file.path)}" data-name="${escapeHtml(file.name)}" data-type="${file.is_dir ? "folder" : "file"}" data-size="${file.size || 0}"><div class="file-col file-name-col"><input type="checkbox" class="file-checkbox" ${checked} onclick="event.stopPropagation()" onchange="DriveModule.toggleSelection('${escapeJs(file.path)}')">${iconSvg}<span>${escapeHtml(file.name)}</span>${kbTag}</div><div class="file-col file-modified-col">${modifiedText}</div><div class="file-col file-size-col">${sizeText}</div><div class="file-col file-actions-col">${downloadBtn}<button class="btn-icon-sm" title="More" onclick="event.stopPropagation(); DriveModule.showContextMenuFor(event, '${escapeJs(file.path)}')">${moreIcon}</button></div></div>`;
}
function bindFileEvents() {