Add footer asset selector for email customization

- New /api/assets endpoint to list available icons from assets folder
- Dynamic footer generation with multiple selectable icons
- Thumbnail grid UI for asset selection in the mail form
- Selected icons are embedded as CID attachments in emails

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-16 22:34:11 +00:00
parent 6299d4e815
commit 96bc2286a5
5 changed files with 155 additions and 28 deletions

View File

@@ -235,12 +235,64 @@ button:disabled {
background: none;
}
.empty-message {
.empty-message,
.loading-message {
text-align: center;
color: #999;
padding: 40px 20px;
}
/* Asset Grid */
.asset-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(70px, 1fr));
gap: 10px;
padding: 10px;
background: #f9f9f9;
border: 1px solid #ddd;
border-radius: 4px;
}
.asset-item {
display: flex;
flex-direction: column;
align-items: center;
padding: 8px;
border: 2px solid transparent;
border-radius: 4px;
cursor: pointer;
transition: all 0.15s ease;
}
.asset-item:hover {
background: #eee;
}
.asset-item img {
width: 40px;
height: 40px;
object-fit: contain;
}
.asset-item .asset-name {
font-size: 11px;
color: #666;
margin-top: 4px;
text-align: center;
word-break: break-all;
}
.asset-item:has(input:checked) {
border-color: #3498db;
background: #e7f3fd;
}
.asset-item input[type="checkbox"] {
position: absolute;
opacity: 0;
pointer-events: none;
}
@media (max-width: 900px) {
.container {
flex-direction: column;