Files
devplacepy/devplacepy/static/css/issues.css
T
retoor 7bbaf51450 feat: add file attachment support to issue tracker with Gitea mirroring
Implement full attachment CRUD for issues and comments, restricted to open issues only. Attachments are stored locally and mirrored to the Gitea tracker via new `mirror_attachment_to_gitea` and `set_gitea_asset_id` functions. Add `gitea_asset_id` column to the attachments table, extend `IssueForm` and `IssueCommentForm` with `attachment_uids` field, and expose new API endpoints for listing, adding, and deleting issue attachments. Update agent configuration to include web research tools, and document the new capability in README, AGENTS.md, and CLAUDE.md.
2026-06-19 11:22:05 +00:00

246 lines
4.8 KiB
CSS

/* retoor <retoor@molodetz.nl> */
.issues-layout {
max-width: 720px;
margin: 0 auto;
}
.issues-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 1rem;
}
.issues-header h1 {
font-size: 1.5rem;
font-weight: 700;
}
.issues-header-actions {
display: flex;
align-items: center;
gap: 0.5rem;
flex-wrap: wrap;
}
.issues-filters {
display: flex;
gap: 0.5rem;
margin-bottom: 1rem;
}
.issues-filter {
font-size: 0.8125rem;
font-weight: 600;
color: var(--text-secondary);
padding: 0.35rem 0.85rem;
border-radius: 999px;
border: 1px solid var(--border);
text-decoration: none;
}
.issues-filter:hover {
background: var(--bg-hover);
}
.issues-filter.active {
background: var(--accent);
color: var(--white);
border-color: var(--accent);
}
.issues-modal-hint {
font-size: 0.8125rem;
color: var(--text-muted);
margin-bottom: 0.75rem;
}
.issue-card {
display: block;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 1.25rem;
margin-bottom: 1rem;
text-decoration: none;
transition: border-color 0.15s ease;
}
.issue-card:hover {
border-color: var(--accent);
}
.issue-card-header {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 0.5rem;
}
.issue-number {
font-size: 0.8125rem;
font-weight: 700;
color: var(--text-muted);
}
.issue-title {
flex: 1;
}
.issue-title {
font-size: 1rem;
font-weight: 600;
color: var(--text-primary);
}
.issue-status {
font-size: 0.6875rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 0.125rem 0.5rem;
border-radius: 999px;
}
.issue-status.open {
background: var(--accent-light);
color: var(--accent);
}
.issue-status.closed {
background: rgba(76, 175, 80, 0.1);
color: var(--success);
}
.issue-desc {
font-size: 0.875rem;
color: var(--text-secondary);
line-height: 1.5;
margin-bottom: 0.5rem;
}
.issue-meta {
display: flex;
align-items: center;
gap: 0.4rem;
font-size: 0.75rem;
color: var(--text-muted);
}
.issue-dot {
color: var(--border);
}
.issue-detail-nav {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 1rem;
}
.issue-back,
.issue-gitea-link {
font-size: 0.8125rem;
font-weight: 600;
color: var(--accent);
text-decoration: none;
}
.issue-detail-card {
padding: 1.5rem;
margin-bottom: 1.5rem;
}
.issue-detail-header {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 0.75rem;
}
.issue-detail-title {
flex: 1;
font-size: 1.25rem;
font-weight: 700;
}
.issue-admin-actions {
margin: 1rem 0;
}
.issue-detail-body {
margin-top: 1rem;
color: var(--text-primary);
line-height: 1.6;
}
.issue-comment {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 1rem 1.25rem;
margin-bottom: 0.75rem;
}
.issue-comment-head {
display: flex;
align-items: center;
gap: 0.4rem;
font-size: 0.75rem;
color: var(--text-muted);
margin-bottom: 0.5rem;
}
.issue-comment-badge {
font-size: 0.625rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 0.1rem 0.45rem;
border-radius: 999px;
background: var(--accent-light);
color: var(--accent);
}
.issue-comment-body {
font-size: 0.9375rem;
color: var(--text-primary);
line-height: 1.55;
}
.issue-comment-form {
margin-top: 1rem;
}
.issue-comment-form textarea {
width: 100%;
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 0.75rem;
font: inherit;
background: var(--bg-input);
color: var(--text-primary);
resize: vertical;
}
.issue-comment-form-footer {
display: flex;
justify-content: flex-end;
margin-top: 0.5rem;
}
@media (max-width: 480px) {
.issues-header {
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
}
.issues-header h1 {
font-size: 1.25rem;
}
.issue-card {
padding: 1rem;
}
.issue-card-header {
flex-wrap: wrap;
gap: 0.5rem;
}
}
.attachment-gallery-item .issue-att-delete {
position: absolute;
top: 4px;
right: 4px;
width: 22px;
height: 22px;
border: none;
border-radius: 50%;
background: rgba(0, 0, 0, 0.6);
color: #fff;
font-size: 1rem;
line-height: 1;
cursor: pointer;
z-index: 1;
}
.attachment-gallery-item .issue-att-delete:hover {
background: var(--danger, #c0392b);
}
.issue-attach-form {
display: flex;
align-items: center;
gap: 0.5rem;
margin-top: 1rem;
flex-wrap: wrap;
}