function

defineAdmin

Configure the custom components, installed plugins, and translations used by your application’s admin.

Example

ts
import { defineAdmin } from '@riducms/plugin/admin';
import { generatedAdminPlugins } from './ridu.plugins.generated';
import WelcomePanel from './components/welcome-panel.svelte';

export default defineAdmin({
  plugins: generatedAdminPlugins,
  dashboard: [
    { key: 'welcome', component: WelcomePanel, position: 'before' }
  ]
});

Arguments

ArgumentDescription
configRequired configuration object. Every property inside it is optional; choose the parts of the admin you want to customize below.

Admin options

PropertyTypeDescription
pluginsreadonly AdminPlugin[]Optional. Installed admin packages. Keep generatedAdminPlugins here so plugins installed through the CLI, such as rich text, are loaded.
fieldsReadonly<Record<`app:${string}`, RegisteredFieldEditor>>Optional. Custom inputs made with defineFieldEditor. Register under app:name, then select that name in the Go field’s Admin.Editor setting.
rowLabelsReadonly<Record<`app:${string}`, RegisteredRowLabel>>Optional. Array and block headings made with defineRowLabel. Select their app:name keys through Admin.RowLabel in Go.
messagesPluginMessageCatalogOptional. Application interface messages made with defineAdminMessages; use app:messageName to translate them.
languagesreadonly TranslationLanguage[]Optional. Bundled translations for the admin interface. These are separate from the locales used for document content.
routesreadonly AdminRoute[]Optional. Add pages inside the admin, each with a relative path, component, and optional navigation link. Plugin routes must also appear in the Go descriptor.
dashboardreadonly AdminDashboardPanel[]Optional. Add panels before or after the dashboard, or replace it. Each entry names a key, component, and position; the default position is after.
listCellsreadonly AdminListCell[]Optional. Change how a field appears in a collection table. Each entry selects a collection, field path, and component.
documentViewsreadonly AdminDocumentView[]Optional. Add tabs beside Edit and API on saved documents or globals. Each entry includes a key, label, and component; collection can limit where it appears.
documentActionsreadonly AdminDocumentAction[]Optional. Add buttons to saved collection documents. A component implements the action; an optional requires permission hides it when the user lacks that permission.
viewsreadonly AdminCoreView[]Optional. Wrap or replace collection lists, create/edit forms, global editors, or the not-found page. The component can render defaultView to keep the built-in screen.
brandingreadonly AdminBrandComponent[]Optional. Replace the login logo, navigation logo, or account avatar. Each location accepts one replacement.
navigationreadonly AdminNavigationComponent[]Optional. Add content around the navigation links or replace navigation. Use routes for a new page with its own navigation link.
loginreadonly AdminLoginComponent[]Optional. Add content before or after sign-in, or replace the screen. A replacement can render defaultView to retain the login form.
accountreadonly AdminAccountComponent[]Optional. Add content to or replace the profile or security screen, selected by surface.
logoutButtonAdminLogoutButtonOptional. Replace the account menu’s sign-out control. The component receives host.logout() to end the session.
shellreadonly AdminShellComponent[]Optional. Add a component to the header, global actions, or account settings menu.
providersreadonly AdminProvider[]Optional. Share context between components by wrapping the admin. The first provider is outermost; every provider must render defaultView.

Returns

The same AdminConfig object after checking its registrations. Export it as the default from admin/src/admin.config.ts; calling defineAdmin does not render components or send requests.

AdminConfig

How it works

Use this function once in admin/src/admin.config.ts. Keep plugins: generatedAdminPlugins when adding your own settings so installed plugins continue to load.

The fields map contains application inputs made with defineFieldEditor. It is different from defineAdminPlugin’s fields map, which contains editors for new Go plugin field types.

Installed plugins are processed first, followed by application entries. Keys must be unique, and conflicting replacements cause an error rather than silently replacing one another.

The helper checks JavaScript registrations immediately. Run ridu check to also compare them with the Go schema, including component selections, supported field types, routes, and settings.

The example adds WelcomePanel above the dashboard. The Custom components tutorial includes the Svelte component and shows how to try it.

Full signature

Related types

Related guides