import type { AppRegistryMeta } from 'officerdev'; import { Sparkles, GalleryHorizontalEnd, FolderOpen, KeyRound } from 'lucide-react'; import { Generate } from './Generate/Generate'; import { Gallery } from './Gallery/Gallery'; import { Collections } from './Collections/Collections'; import { Providers } from './Providers'; // No component re-exports. `panels.ts` declares PANELS — the shell mounts them by key and there is no // way to export a component from a plugin. // // The three coordinate through the URL and one refresh channel, never through props: Gallery reads // `?selected=` for its lightbox, Collections reads `?collection=` for its detail view — two // different param names on purpose, since both panels render on the same route at once and would // otherwise fight over one param. Generate bumps `useAtelierRefresh` (officerdev/src/channels.ts) when // a job finishes; Gallery subscribes to it. See plugins/atelier/PLUGIN.md. export const appRegistryMetas: AppRegistryMeta[] = [ { key: 'atelier-generate', name: 'Generate', icon: Sparkles, component: Generate, availableOnPanel: false }, { key: 'atelier-gallery', name: 'Gallery', icon: GalleryHorizontalEnd, component: Gallery, availableOnPanel: false }, { key: 'atelier-collections', name: 'Collections', icon: FolderOpen, component: Collections, availableOnPanel: false }, // Providers is a panel and not a section in Officer's settings — see Providers.tsx. A plugin that // cannot be configured without the platform shipping its settings screen is not self-contained. { key: 'atelier-providers', name: 'Providers', icon: KeyRound, component: Providers, availableOnPanel: false }, ];