Add favicon and enable sorting on all table columns

- Add custom Orchard favicon (tree with apples)
- Simplify browser tab title to "Orchard"
- Enable sorting on all columns except description:
  - Home: name, visibility, owner, created, updated
  - Project: name, format, tags, artifacts, size, created
  - Package: tag, size, type, filename, created
- Fix column keys to match API field names for proper sorting
This commit is contained in:
Mondo Diaz
2026-01-15 18:29:07 +00:00
parent ece5341199
commit 193e02baad
6 changed files with 29 additions and 8 deletions

View File

@@ -234,6 +234,7 @@ function Home() {
{
key: 'visibility',
header: 'Visibility',
sortable: true,
render: (project) => (
<Badge variant={project.is_public ? 'public' : 'private'}>
{project.is_public ? 'Public' : 'Private'}
@@ -243,6 +244,7 @@ function Home() {
{
key: 'created_by',
header: 'Owner',
sortable: true,
className: 'cell-owner',
render: (project) => project.created_by,
},

View File

@@ -193,20 +193,23 @@ function PackagePage() {
),
},
{
key: 'size',
key: 'artifact_size',
header: 'Size',
sortable: true,
render: (t: TagDetail) => <span>{formatBytes(t.artifact_size)}</span>,
},
{
key: 'content_type',
key: 'artifact_content_type',
header: 'Type',
sortable: true,
render: (t: TagDetail) => (
<span className="content-type">{t.artifact_content_type || '-'}</span>
),
},
{
key: 'original_name',
key: 'artifact_original_name',
header: 'Filename',
sortable: true,
className: 'cell-truncate',
render: (t: TagDetail) => (
<span title={t.artifact_original_name || undefined}>{t.artifact_original_name || '-'}</span>

View File

@@ -327,21 +327,25 @@ function ProjectPage() {
{
key: 'format',
header: 'Format',
sortable: true,
render: (pkg) => <Badge variant="default">{pkg.format}</Badge>,
},
{
key: 'tags',
key: 'tag_count',
header: 'Tags',
sortable: true,
render: (pkg) => pkg.tag_count ?? '—',
},
{
key: 'artifacts',
key: 'artifact_count',
header: 'Artifacts',
sortable: true,
render: (pkg) => pkg.artifact_count ?? '—',
},
{
key: 'size',
key: 'total_size',
header: 'Size',
sortable: true,
render: (pkg) =>
pkg.total_size !== undefined && pkg.total_size > 0 ? formatBytes(pkg.total_size) : '—',
},