Files
lucide/docs/api/figma/data.ts
T
2026-03-05 12:27:58 +01:00

42 lines
1.3 KiB
TypeScript

import { eventHandler, setResponseHeader } from 'h3';
import iconNodes from '~/.vitepress/data/iconNodes/index.ts';
import { IconNodeWithKeys } from '~/.vitepress/theme/types';
import iconMetaData from '~/.vitepress/data/iconMetaData';
import releaseMeta from '~/.vitepress/data/releaseMetaData.json';
import categories from '~/.vitepress/data/categoriesData.json';
const dataResponse = {
icons: Object.entries(iconNodes).reduce((acc, [name, iconNode]) => {
const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => {
return [name, attrs];
});
acc[name] = {
iconNode: newIconNode,
aliases: (iconMetaData[name]?.aliases ?? []).map((alias) =>
typeof alias === 'string' ? alias : alias.name,
),
tags: iconMetaData[name].tags ?? [],
categories: iconMetaData[name].categories ?? [],
...releaseMeta[name],
};
return acc;
}, {}),
aliases: Object.entries(iconNodes).reduce((acc, [name]) => {
for (const alias of iconMetaData[name]?.aliases ?? []) {
acc[typeof alias === 'string' ? alias : alias.name] = name;
}
return acc;
}, {}),
categories,
};
export default eventHandler((event) => {
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
return dataResponse;
});