import { LucideIcon } from "lucide-react";
import { ReactNode } from "react";
import { ApiDataInterface, Modules } from "../core";
import { ContentInterface } from "../features/content/data/content.interface";
import { ModuleWithPermissions } from "../permissions";
import { cn } from "./cn";
export const getIconByModule = (params: { module: ModuleWithPermissions; className?: string }): ReactNode => {
const IconComponent = getLucideIconByModule({ module: params.module });
if (!IconComponent) return null;
return ;
};
export const getIcon = (params: { element: ApiDataInterface; className?: string }): ReactNode => {
const IconComponent = getLucideIcon({ element: params.element });
if (!IconComponent) return null;
return ;
};
export const getIconByModuleName = (params: { name: string; className?: string }): ReactNode => {
return getIconByModule({ module: Modules.findByModelName(params.name), className: params.className });
};
export const getLucideIcon = (params: { element: ApiDataInterface }): LucideIcon | null => {
if (params.element.type === "contents") {
const contentType = (params.element as ContentInterface).contentType;
if (!contentType) return null;
return getLucideIconByModule({ module: Modules.findByModelName(contentType) });
}
return getLucideIconByModule({ module: Modules.findByName(params.element.type) });
};
export const getLucideIconByModule = (params: { module: ModuleWithPermissions }): LucideIcon | null => {
return params.module.icon ?? null;
};
export const getLucideIconByModuleName = (params: { name: string }): LucideIcon | null => {
return getLucideIconByModule({ module: Modules.findByModelName(params.name) });
};