fleet/frontend/components/graphics/index.ts
Nico b4a207fb5a
Add ability to upload custom org logos (#44390)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #44330, Resolves #44331

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.

## Testing

- [x] Added/updated automated tests. (I'd defer integration tests to a
separate PR since this one is pretty large already.)

- [x] QA'd all new/changed functionality manually. I've tested this on
both the setup flow and the organization settings page. I haven't had
the time to test this on other places where we render the logo (macOS
setup experience / MDM migration dialog).


https://github.com/user-attachments/assets/95d4eae5-3da6-40f4-98a1-8575b97d96b3

## New Fleet configuration settings

- [x] Setting(s) is/are explicitly excluded from GitOps.

Will handle GitOps in a separate PR.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
  * Organizations can upload custom logos for light and dark modes.
* Registration and Org Settings support logo file upload, preview,
per-mode replace/delete, and validation (size & image formats).
* Activity feed records logo changes/deletions; site nav displays
uploaded logos per theme.
* File uploader/preview adds a Fleet logo graphic option and improved
logo validation.
  * Config/GitOps outputs now include separate dark/light logo fields.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-05 14:42:52 +02:00

70 lines
2.4 KiB
TypeScript

import EmptyQueries from "./EmptyQueries";
import EmptyIntegrations from "./EmptyIntegrations";
import EmptyUsers from "./EmptyUsers";
import EmptyPolicies from "./EmptyPolicies";
import EmptySoftware from "./EmptySoftware";
import FileConfigurationProfile from "./FileConfigurationProfile";
import FileSh from "./FileSh";
import FilePs1 from "./FilePs1";
import FilePy from "./FilePy";
import FileScript from "./FileScript";
import FilePdf from "./FilePdf";
import FilePkg from "./FilePkg";
import FilePng from "./FilePng";
import FileP7m from "./FileP7m";
import FilePem from "./FilePem";
import FileVpp from "./FileVpp";
import FileCertificate from "./FileCertificate";
import AppStore from "./AppStore";
import EmptyHosts from "./EmptyHosts";
import EmptyTeams from "./EmptyTeams";
import EmptyPacks from "./EmptyPacks";
import EmptySchedule from "./EmptySchedule";
import EmptySearchExclamation from "./EmptySearchExclamation";
import EmptySearchCheck from "./EmptySearchCheck";
import EmptySearchQuestion from "./EmptySearchQuestion";
import CollectingResults from "./CollectingResults";
import DataError from "./DataError";
import Calendar from "./Calendar";
import Lock from "./Lock";
import Settings from "./Settings";
import FleetLogo from "./FleetLogo";
export const GRAPHIC_MAP = {
// Empty state graphics
"empty-queries": EmptyQueries,
"empty-integrations": EmptyIntegrations,
"empty-users": EmptyUsers,
"empty-policies": EmptyPolicies,
"empty-software": EmptySoftware,
"empty-hosts": EmptyHosts,
"empty-teams": EmptyTeams,
"empty-packs": EmptyPacks,
"empty-schedule": EmptySchedule,
"empty-search-exclamation": EmptySearchExclamation,
"empty-search-check": EmptySearchCheck,
"empty-search-question": EmptySearchQuestion,
// File type graphics
"file-configuration-profile": FileConfigurationProfile,
"file-sh": FileSh,
"file-ps1": FilePs1,
"file-py": FilePy,
"file-script": FileScript,
"file-pdf": FilePdf,
"file-pkg": FilePkg,
"file-png": FilePng,
"file-p7m": FileP7m,
"file-pem": FilePem,
"file-vpp": FileVpp,
"file-certificate": FileCertificate,
"app-store": AppStore, // Used in non-editable file uploader for vpp apps edit modal
// Other graphics
"collecting-results": CollectingResults,
"data-error": DataError,
calendar: Calendar,
lock: Lock,
settings: Settings,
"fleet-logo": FleetLogo,
};
export type GraphicNames = keyof typeof GRAPHIC_MAP;