@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
71 lines (63 loc) • 1.86 kB
text/typescript
import { getOption } from "./config";
import { merge } from "./helpers";
export type IconConfig = {
sizes?: { default: string; [key: string]: string };
iconPrefix?: string;
internalIcons?: Record<string, string>;
};
const mdiIcons = {
sizes: {
default: "mdi-24px",
small: "",
medium: "mdi-36px",
large: "mdi-48px",
},
iconPrefix: "mdi-",
};
const faIcons = (): IconConfig => {
const iconComponent = getOption("iconComponent");
const faIconPrefix = iconComponent ? "" : "fa-";
return {
sizes: {
default: "",
small: "sm",
medium: "lg",
large: "xl",
},
iconPrefix: faIconPrefix,
internalIcons: {
check: "check",
information: "info-circle",
alert: "exclamation-triangle",
"alert-circle": "exclamation-circle",
"arrow-up": "arrow-up",
"chevron-right": "angle-right",
"chevron-left": "angle-left",
"chevron-down": "angle-down",
"chevron-up": "angle-up",
eye: "eye",
"eye-off": "eye-slash",
"caret-down": "caret-down",
"caret-up": "caret-up",
"close-circle": "times-circle",
close: "times",
loading: "circle-notch",
"emoticon-sad": "frown",
},
};
};
const getIcons = (): Record<string, IconConfig> => {
let icons: Record<string, IconConfig> = {
mdi: mdiIcons,
fa: faIcons(),
fas: faIcons(),
far: faIcons(),
fad: faIcons(),
fab: faIcons(),
fal: faIcons(),
};
const customIconPacks = getOption("customIconPacks");
if (customIconPacks) icons = merge(icons, customIconPacks, true);
return icons;
};
export default getIcons;