igniteui-theming
Version:
A set of Sass variables, mixins, and functions for generating palettes, typography, and elevations used by Ignite UI components.
63 lines (62 loc) • 2.22 kB
JavaScript
import { PLATFORM_METADATA } from "../../knowledge/platforms/index.js";
import { SASS_USE_ASSEMBLY_NOTE } from "../../utils/sass.js";
import { generateElevations } from "../../generators/sass.js";
import { formatCssOutput, generateElevationsCss } from "../../generators/css.js";
//#region src/tools/handlers/elevations.ts
/**
* Handler for create_elevations tool.
*/
async function handleCreateElevations(params) {
if ((params.output ?? (params.platform === "angular" ? "sass" : "css")) === "css") return handleCssOutput(params);
return handleSassOutput(params);
}
async function handleCssOutput(params) {
try {
const result = await generateElevationsCss({ designSystem: params.designSystem });
const formattedCss = formatCssOutput(result.css, result.description);
const responseParts = [result.description];
responseParts.push("");
responseParts.push("Output format: CSS custom properties");
responseParts.push("");
responseParts.push("```css");
responseParts.push(formattedCss.trimEnd());
responseParts.push("```");
return { content: [{
type: "text",
text: responseParts.join("\n")
}] };
} catch (error) {
return {
content: [{
type: "text",
text: `**Error generating CSS elevations**\n\n${error instanceof Error ? error.message : String(error)}`
}],
isError: true
};
}
}
function handleSassOutput(params) {
const result = generateElevations({
platform: params.platform,
licensed: params.licensed,
designSystem: params.designSystem,
name: params.name
});
const responseParts = [result.description];
const platformNote = params.platform ? `Platform: ${PLATFORM_METADATA[params.platform]?.name ?? params.platform}` : "Platform: Not specified (generic output). Specify `platform` for optimized code.";
responseParts.push("");
responseParts.push(platformNote);
responseParts.push("");
responseParts.push(`Variables used: ${result.variables.join(", ")}`);
responseParts.push("");
responseParts.push("```scss");
responseParts.push(result.code.trimEnd());
responseParts.push("```");
responseParts.push(SASS_USE_ASSEMBLY_NOTE);
return { content: [{
type: "text",
text: responseParts.join("\n")
}] };
}
//#endregion
export { handleCreateElevations };