UNPKG

tinte

Version:

An opinionated tool for generating multi-platform color themes

45 lines (41 loc) 1.43 kB
import { mappedPalette } from "../../mapped-palette.ts"; import { Color } from "../../utils/color.ts"; import { entries, getThemeName, writeFile } from "../../utils/index.ts"; import { ThemeType } from "../types.ts"; import { mapITerm2Color } from "./mappers.ts"; export const generateITerm2Theme = ({ name, themeType, }: { name: string; themeType: ThemeType; }) => { const themeName = getThemeName(name, themeType); const slugifiedName = getThemeName(name); const theme = `<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ${entries(mapITerm2Color) .map(([key, color]) => { const rgbaColor = Color.fromHex(mappedPalette[color][themeType]); return ` <key>${key}</key> <dict> <key>Color Space</key> <string>sRGB</string> <key>Red Component</key> <real>${rgbaColor.asFloat.red}</real> <key>Green Component</key> <real>${rgbaColor.asFloat.green}</real> <key>Blue Component</key> <real>${rgbaColor.asFloat.blue}</real> <key>Alpha Component</key> <real>${rgbaColor.asFloat.alpha}</real> </dict>`; }) .join("\n")} </dict> </plist>`; const filePath = `./_generated/${slugifiedName}/iterm2/${themeName}-iterm2.xml`; writeFile(filePath, theme); };