feat(media): add media management feature module
- add `ZEN_MEDIA` env flag and document it in `.env.example` - add media schema, server routes, and API handlers (`api.server.js`, `routes.server.js`, `schema.server.js`) - add `MediaPage`, `MediaGrid`, `MediaFilters`, and `MediaPicker` client components - expose `@zen/core/features/media` and `@zen/core/features/media/picker` package exports - register media navigation and permissions; wire module into `init.js` - document media API, client picker usage, and boundary rules in `MODULES.md` and `ARCHITECTURE.md` - add `src/features/media/README.md`
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* Media Feature — Admin navigation.
|
||||
*
|
||||
* Side effect : enregistre la section "Contenu" et l'item "Médias" dans la
|
||||
* sidebar admin si le module est activé via ZEN_MEDIA=true.
|
||||
*/
|
||||
|
||||
// Import direct depuis le registre pour éviter une dépendance circulaire :
|
||||
// admin/navigation.js → media/navigation.js → admin barrel → admin/navigation.js
|
||||
import { registerNavSection, registerNavItem } from '../admin/registry.js';
|
||||
import { isMediaEnabled } from '@zen/core/shared/config';
|
||||
import { MEDIA_PERMISSIONS } from './permissions.js';
|
||||
|
||||
if (isMediaEnabled()) {
|
||||
registerNavSection({ id: 'content', title: 'Contenu', icon: 'File02Icon', order: 25 });
|
||||
registerNavItem({
|
||||
id: 'media',
|
||||
label: 'Médias',
|
||||
icon: 'Image01Icon',
|
||||
href: '/admin/media',
|
||||
sectionId: 'content',
|
||||
order: 10,
|
||||
permission: MEDIA_PERMISSIONS.VIEW,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user