import Color from 'color'; import type { Template } from './index.js'; import { colorSetToVariants } from '../color-set/index.js'; import { source } from 'common-tags'; function colorEntry(title: string, color: Color): string { return source` ${title} Color Space sRGB Red Component ${color.red() / 255} Green Component ${color.green() / 255} Blue Component ${color.blue() / 255} `; } const template: Template = { name: 'iTerm', render: async function* (colorSet) { const variants = colorSetToVariants(colorSet); for (const variant of variants) { yield { path: `${variant.title.human}.itermcolors`, content: source` ${colorEntry( 'Ansi 0 Color', Color( variant.isDark ? variant.colors.shade0 : variant.colors.shade7, ), )} ${colorEntry('Ansi 1 Color', Color(variant.colors.accent0))} ${colorEntry('Ansi 2 Color', Color(variant.colors.accent3))} ${colorEntry('Ansi 3 Color', Color(variant.colors.accent2))} ${colorEntry('Ansi 4 Color', Color(variant.colors.accent5))} ${colorEntry('Ansi 5 Color', Color(variant.colors.accent7))} ${colorEntry('Ansi 6 Color', Color(variant.colors.accent4))} ${colorEntry( 'Ansi 7 Color', Color( variant.isDark ? variant.colors.shade6 : variant.colors.shade1, ), )} ${colorEntry( 'Ansi 8 Color', Color( variant.isDark ? variant.colors.shade1 : variant.colors.shade6, ), )} ${colorEntry('Ansi 9 Color', Color(variant.colors.accent1))} ${colorEntry('Ansi 10 Color', Color(variant.colors.accent4))} ${colorEntry('Ansi 11 Color', Color(variant.colors.accent2))} ${colorEntry('Ansi 12 Color', Color(variant.colors.accent5))} ${colorEntry('Ansi 13 Color', Color(variant.colors.accent7))} ${colorEntry('Ansi 14 Color', Color(variant.colors.accent4))} ${colorEntry( 'Ansi 15 Color', Color( variant.isDark ? variant.colors.shade7 : variant.colors.shade0, ), )} ${colorEntry('Background Color', Color(variant.colors.shade0))} ${colorEntry('Foreground Color', Color(variant.colors.shade7))} ${colorEntry('Cursor Color', Color(variant.colors.accent6))} ${colorEntry('Cursor Text Color', Color(variant.colors.shade7))} ${colorEntry('Selection Color', Color(variant.colors.accent7))} ${colorEntry('Selected Text Color', Color(variant.colors.shade7))} ${colorEntry('Bold Color', Color(variant.colors.shade6))} `, }; } }, renderInstructions: (paths) => source` 1. Launch iTerm 2. Press \`command\`-\`I\` to open the iTerm preferences 3. Choose "Colors" > "Color Presets..." > "Import..." and choose the generated theme file (${paths .map((p) => `\`${p}\``) .join(' or ')}) 4. Select the desired theme in the "Color Presets..." menu. `, }; export default template;