/*
 * Copyright (c) 2023-2025 Datalayer, Inc.
 * Distributed under the terms of the Modified BSD License.
 */
import { createElement } from 'react';
import { DatabaseIcon, RowsIcon, BookIcon, DiffModifiedIcon, PencilIcon, FeedIssueDraftIcon, FeedRocketIcon, MilestoneIcon, OrganizationIcon, PeopleIcon, RocketIcon, FileIcon, StackIcon, GearIcon, GraphIcon, NumberIcon, PaperAirplaneIcon, ArchiveIcon, TagIcon, MortarBoardIcon, ContainerIcon, HomeIcon, ShareIcon, FileDirectoryIcon, TrophyIcon, QuestionIcon, PersonIcon, MailIcon, ZapIcon, } from '@primer/octicons-react';
import { GalileoIcon, CircleWhiteIcon, BookOpenIcon, CameraIcon, CellIcon, NotebookOutlineIcon, } from '@datalayer/icons-react';
const ARTIFACT_ICONS = new Map([
    ['assignment', MilestoneIcon],
    ['authoring', PencilIcon],
    ['cell', CellIcon],
    ['content', ArchiveIcon],
    ['credits', NumberIcon],
    ['dataset', StackIcon],
    ['datasource', DatabaseIcon],
    ['document', FileIcon],
    ['documentation', BookOpenIcon],
    ['environment', ContainerIcon],
    ['exercise', DiffModifiedIcon],
    ['growth', FeedRocketIcon],
    ['home', HomeIcon],
    ['invite', PaperAirplaneIcon],
    ['runtime', RocketIcon],
    ['runtime-snapshot', CameraIcon],
    ['library', BookIcon],
    ['lesson', MortarBoardIcon],
    ['mail', MailIcon],
    ['management', FeedIssueDraftIcon],
    ['notebook', RowsIcon],
    ['organization', OrganizationIcon],
    ['onboarding', ZapIcon],
    ['page', NotebookOutlineIcon],
    ['settings', GearIcon],
    ['share', ShareIcon],
    ['space', GalileoIcon],
    ['success', TrophyIcon],
    ['support', QuestionIcon],
    ['storage', FileDirectoryIcon],
    ['tag', TagIcon],
    ['team', PeopleIcon],
    ['usage', GraphIcon],
    ['user', PersonIcon],
    ['undefined', CircleWhiteIcon],
]);
export const ArtifactIconClass = (props) => {
    const { item, type } = props;
    const itemType = item?.type ?? type ?? 'undefined';
    const icon = ARTIFACT_ICONS.get(itemType);
    return icon ?? CircleWhiteIcon;
};
export function ArtifactIcon(props) {
    const { size } = props;
    const artifactIconClass = ArtifactIconClass(props);
    return createElement(artifactIconClass, {
        size: size ?? 16,
    });
}
export default ArtifactIcon;
