Customization
Configure admin panel behavior, plugin placement, and sidebar organization.
The admin panel is configured through the admin key in your nextly.config.ts. This page covers structural customization, specifically how you control what appears in the sidebar and where. For visual customization (logo, colors, favicon), see Branding.
Admin Configuration
The admin block in defineConfig() accepts two top-level keys:
import { defineConfig } from '@nextlyhq/nextly';
export default defineConfig({
admin: {
branding: { /* logo, colors, favicon -- see Branding page */ },
pluginOverrides: { /* per-plugin sidebar overrides */ },
},
});Collection Sidebar Options
Each collection definition can control how it appears in the admin sidebar through its admin property:
import { defineCollection, text, richText } from '@nextlyhq/nextly';
export default defineCollection({
slug: 'posts',
labels: { singular: 'Post', plural: 'Posts' },
admin: {
icon: 'FileText', // Lucide icon name for the sidebar
group: 'Content', // Group label in the sidebar
hidden: false, // Hide from sidebar (still accessible via URL)
order: 10, // Sort position (lower = higher, default: 100)
useAsTitle: 'title', // Field to display as entry title in list view
defaultColumns: ['title', 'status', 'createdAt'],
},
fields: [
text({ name: 'title', required: true }),
richText({ name: 'content' }),
],
});| Option | Type | Default | Description |
|---|---|---|---|
icon | string | "FileText" | Lucide icon name shown in the sidebar |
group | string | - | Groups collections under a label in the sidebar |
hidden | boolean | false | Hides the collection from sidebar navigation |
order | number | 100 | Sort position within the sidebar section |
useAsTitle | string | - | Field name used as the entry title in list views |
defaultColumns | string[] | - | Columns shown by default in the list view |
Plugin Overrides
When a plugin registers sidebar entries, you can override their placement and appearance without modifying the plugin's source code. Overrides are keyed by the plugin's slug.
import { defineConfig } from '@nextlyhq/nextly';
export default defineConfig({
admin: {
pluginOverrides: {
'form-builder': {
placement: 'settings', // Move to Settings section
order: 80, // Sort position within that section
after: 'media', // For standalone placement: appear after Media
appearance: {
icon: 'FileText', // Override the sidebar icon
},
},
},
},
});Override Options
| Option | Type | Description |
|---|---|---|
placement | string | Target sidebar section ("collections", "singles", "media", "plugins", "settings") |
order | number | Sort position within the target section |
after | string | For standalone plugins: which built-in section to appear after ("dashboard", "collections", "singles", "media", "plugins", "users", "settings") |
appearance | object | Partial override of the plugin's sidebar appearance (icon, label) |
Overrides use a shallow merge, so only the fields you specify are changed. Everything else keeps the plugin author's defaults.
Navigation Permissions
The admin sidebar is permission-gated. Navigation items only appear for users who have the required permission. The built-in permission mapping:
| Section | Required Permission |
|---|---|
| Dashboard | Always visible |
| Collections | Based on per-collection read permissions |
| Singles | Based on per-single read permissions |
| Media Library | read-media |
| Users | read-users |
| Roles | read-roles |
| Custom Fields | manage-settings |
| Settings | manage-settings |
| Schema Builder | manage-settings |
Assign permissions through the Roles management page at /admin/security/roles.
Responsive Behavior
The admin panel adapts to screen size:
- Desktop (1024px and above) uses a dual-sidebar layout with icon sidebar and detail sidebar
- Mobile (below 768px) uses a hamburger menu with a slide-in drawer navigation
No configuration is needed. The layout switches automatically.
Next Steps
- Branding -- Customize logo, colors, and favicon
- Admin Panel Overview -- Full navigation guide
- Schema Builder -- Create content types visually
- Collections -- Define collections with admin options