diff --git a/app/templates/library.html b/app/templates/library.html index 9d96a48..df284f0 100644 --- a/app/templates/library.html +++ b/app/templates/library.html @@ -588,7 +588,7 @@ function libraryPage() { if (isFolder) { html += ''; } else { - html += '' + (item.icon || '\ud83d\udcc4') + ''; + html += '' + self._renderIcon(item.icon, 'file') + ''; } // Title or rename input if (isRenaming) { @@ -617,6 +617,13 @@ function libraryPage() { _escHtml(s) { var d=document.createElement('div'); d.textContent = s||''; return d.innerHTML; }, _escAttr(s) { return String(s||'').replace(/&/g,'&').replace(/"/g,'"').replace(//g,'>'); }, + _renderIcon(icon, fallback) { + var name = icon || fallback || 'file'; + // Only allow known icon names, otherwise use fallback + var valid = ['folder','file','star','link','trash','book','home','settings','lock','globe','image','edit','calendar','users','user','search','tag','bar-chart','grid','list','align-left','zap','paperclip','key','refresh','upload']; + if (valid.indexOf(name) === -1) name = fallback || 'file'; + return getSvgIcon(name, 14); + }, _recomputeFlatItems() { var result = []; diff --git a/static/css/app.css b/static/css/app.css index 2e4032d..73ea146 100644 --- a/static/css/app.css +++ b/static/css/app.css @@ -684,7 +684,8 @@ input, select, textarea { font-family: inherit; color: inherit; } border: 1px solid var(--border-light); border-radius: var(--radius-md); box-shadow: 0 8px 24px rgba(0,0,0,0.4); - min-width: 200px; + width: max-content; + max-width: 240px; padding: var(--space-xs) 0; z-index: 1000; display: none;