feat(builder): implement reusable media library
Media dashboard (real total/images/SVG/logos/unused/storage/alt-coverage, computed from actual assets + a bootstrap usage scan, no fabricated stats); gallery gets grid/list toggle, type filter, sort, drag-and-drop + multi-file upload with cancel/retry and friendly error mapping, lazy thumbnails, multi-select with bulk delete/download/export-metadata; asset details drawer shows real dimensions/size/format/date/usage locations (walks bootstrap config for exact URL matches, reports not-used rather than guessing) plus editable alt text/caption/description/decorative flag with missing-alt warning; shared MediaPickerComponent (already the one reusable picker used by content management) gains type filter, a recent shortcut, and keyboard grid navigation.
This commit is contained in:
@@ -1150,6 +1150,71 @@ export interface Translations {
|
||||
confirm: string;
|
||||
emptyTitle: string;
|
||||
emptyDescription: string;
|
||||
allFolders: string;
|
||||
newFolder: string;
|
||||
editTags: string;
|
||||
totalAssets: string;
|
||||
logos: string;
|
||||
unused: string;
|
||||
storageUsed: string;
|
||||
altCoverage: string;
|
||||
allTypes: string;
|
||||
typeImage: string;
|
||||
typeSvg: string;
|
||||
typePdf: string;
|
||||
sortRecent: string;
|
||||
sortName: string;
|
||||
sortSize: string;
|
||||
viewMode: string;
|
||||
viewGrid: string;
|
||||
viewList: string;
|
||||
dropHint: string;
|
||||
cancelUpload: string;
|
||||
retry: string;
|
||||
errorTooLarge: string;
|
||||
errorUnsupportedType: string;
|
||||
errorGeneric: string;
|
||||
selectedCount: string;
|
||||
download: string;
|
||||
exportMetadata: string;
|
||||
bulkDelete: string;
|
||||
bulkDeleteConfirm: string;
|
||||
clearSelection: string;
|
||||
guideCopy: string;
|
||||
missingAlt: string;
|
||||
usageCount: string;
|
||||
detailsTitle: string;
|
||||
filename: string;
|
||||
format: string;
|
||||
fileSize: string;
|
||||
dimensions: string;
|
||||
uploadDate: string;
|
||||
lastUsed: string;
|
||||
usageCountLabel: string;
|
||||
usedIn: string;
|
||||
notUsed: string;
|
||||
unknownValue: string;
|
||||
altText: string;
|
||||
altTextHelp: string;
|
||||
decorative: string;
|
||||
missingAltWarning: string;
|
||||
caption: string;
|
||||
description: string;
|
||||
usage: {
|
||||
brand: string;
|
||||
theme: string;
|
||||
header: string;
|
||||
footer: string;
|
||||
staticPage: string;
|
||||
homepage: string;
|
||||
catalog: string;
|
||||
productPage: string;
|
||||
widget: string;
|
||||
company: string;
|
||||
seo: string;
|
||||
navigation: string;
|
||||
other: string;
|
||||
};
|
||||
};
|
||||
// Sprint 28: only the new empty-state copy this sprint's skeleton/empty-
|
||||
// state consistency fix introduces - NOT the full adminProducts/
|
||||
|
||||
Reference in New Issue
Block a user