Collabs, as a third configuration of one panel

The same object as a collection and a gallery piece, so it is a config in
subjects.ts and a one-line panel — no new screen.

Two differences, both deliberate. It has no SPECS: a collab is a project rather
than an object, so there is no measurement or raw material and the form is a
name, an address and a description. And its title column is `project_name`,
which is the client's word and stays — the site's API publishes both that and
`title` so this panel reads one field like every other section, and the
translation lives in one router rather than as a branch in every screen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-05 13:42:26 +01:00
co-authored by Claude Opus 5
parent 8da02e1ef6
commit 9ca6077e2c
6 changed files with 57 additions and 2 deletions
+19 -1
View File
@@ -1,5 +1,5 @@
import type { LucideIcon } from 'lucide-react';
import { Boxes, Cog, Files, FolderOpen, GalleryHorizontal, Images, Mail, PanelsTopLeft, Shapes } from 'lucide-react';
import { Boxes, Cog, Files, FolderOpen, GalleryHorizontal, Handshake, Images, Mail, PanelsTopLeft, Shapes } from 'lucide-react';
/**
* The sections of the fofos admin, in nav order.
@@ -38,6 +38,7 @@ import { Boxes, Cog, Files, FolderOpen, GalleryHorizontal, Images, Mail, PanelsT
export type SectionKey =
| 'administration'
| 'collabs'
| 'collections'
| 'pieces'
| 'carousels'
@@ -171,6 +172,23 @@ export const SECTIONS: Section[] = [
requires: 'connection',
pinned: true,
},
{
/*
Collaborations — the third section drawn through a template, and the flattest of the three.
Below Pieces because that is the order the sitemap puts them in, and it shares their panel: a
collab is the same object with the client's own word for its title and no specs.
*/
key: 'collabs',
label: 'Collabs',
icon: Handshake,
hint: 'Projects made with somebody else',
path: '/fofos-admin/collabs',
built: true,
// A collab is a ROW read through the site's admin API, like Collections and Pieces above it.
requires: 'connection',
pinned: true,
},
{
key: 'carousels',
label: 'Carousels',