// @bun
import {
  ne
} from "./chunk-6w0knnta.js";

// src/utils/theme-preferences.ts
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
import { homedir } from "os";
import { dirname, join } from "path";

// src/theme/palette.ts
var terminalColorSchemeSchema = ne.enum(["dark", "light"]);
var cliThemePreferenceSchema = ne.enum(["dark", "light", "system"]);
var symbols = {
  progress: "\u23F5\u23F5",
  dot: "\u25CF",
  arrow: "\u2192",
  pointer: "\u203A",
  checkmark: "\u2713",
  cross: "\u2717",
  warning: "\u25B2",
  info: "\u2139"
};
var terminalThemePalette = {
  light: {
    cli: {
      background: {
        primary: "#f8fafc",
        secondary: "#eef2f7",
        tertiary: "#e2e8f0"
      },
      foreground: {
        primary: "#111827",
        secondary: "#334155",
        tertiary: "#64748b"
      },
      status: {
        success: "#17B252",
        error: "#b91c1c",
        warning: "#b45309",
        info: "#1d4ed8"
      },
      statusBackground: {
        success: "#dcfce7",
        successText: "#17B252",
        error: "#fee2e2",
        errorText: "#b91c1c",
        warning: "#fef3c7",
        warningText: "#b45309",
        info: "#dbeafe",
        infoText: "#1d4ed8"
      },
      diff: {
        added: "#dcfce7",
        addedHighlight: "#bbf7d0",
        removed: "#fee2e2",
        removedHighlight: "#fecaca"
      },
      text: {
        primary: "#111827",
        secondary: "#1F2329",
        dim: "#333C49",
        dimmer: "#647A9C",
        highlight: "#6d28d9",
        link: "#1d4ed8"
      },
      accent: {
        blue: "#2563eb",
        purple: "#7c3aed",
        cyan: "#0e7490",
        green: "#15803d",
        yellow: "#b45309",
        orange: "#c2410c",
        red: "#b91c1c",
        pink: "#be185d"
      },
      syntax: {
        keyword: "#7c3aed",
        string: "#15803d",
        number: "#b45309",
        boolean: "#c2410c",
        function: "#2563eb",
        class: "#0e7490",
        variable: "#111827",
        comment: "#6b7280",
        operator: "#b91c1c",
        punctuation: "#334155"
      },
      ui: {
        border: "#cbd5e1",
        borderFocus: "#2563eb",
        selection: "#dbeafe",
        selectionText: "#1e293b",
        code: "#92400e",
        codeBackground: "#f1f5f9"
      },
      semantic: {
        pending: "#6b7280",
        inProgress: "#2563eb",
        completed: "#15803d",
        disabled: "#94a3b8"
      },
      plan: {
        community: "#64748b",
        team: "#2563eb",
        enterprise: "#7c3aed",
        plus: "#b45309"
      },
      symbols
    },
    taskList: {
      diff: {
        addition: {
          background: "#dcfce7",
          highlight: "#bbf7d0"
        },
        deletion: {
          background: "#fee2e2",
          highlight: "#fecaca"
        },
        text: "#1F2329"
      },
      status: {
        pending: "#64748b",
        inProgress: "#1F2329",
        done: "#15803d"
      },
      text: {
        normal: "#111827",
        dimmed: "#64748b",
        completed: "#15803d"
      }
    }
  },
  dark: {
    cli: {
      background: {
        primary: "#0b0e14",
        secondary: "#1a1d26",
        tertiary: "#252833"
      },
      foreground: {
        primary: "#e6e6e6",
        secondary: "#b8b8b8",
        tertiary: "#8a8a8a"
      },
      status: {
        success: "#AAD94C",
        error: "#F26D78",
        warning: "#FFB454",
        info: "#59C2FF"
      },
      statusBackground: {
        success: "#1a2e1a",
        successText: "#AAD94C",
        error: "#2e1a1a",
        errorText: "#F26D78",
        warning: "#2e2a1a",
        warningText: "#FFB454",
        info: "#1a1f2e",
        infoText: "#59C2FF"
      },
      diff: {
        added: "#1a2e1a",
        addedHighlight: "#2d4a2d",
        removed: "#2e1a1a",
        removedHighlight: "#4a2d2d"
      },
      text: {
        primary: "#e6e6e6",
        secondary: "#b8b8b8",
        dim: "#7d7d7d",
        dimmer: "#525252",
        highlight: "#D2A6FF",
        link: "#59C2FF"
      },
      accent: {
        blue: "#59C2FF",
        purple: "#D2A6FF",
        cyan: "#95E6CB",
        green: "#AAD94C",
        yellow: "#FFB454",
        orange: "#FF9940",
        red: "#F26D78",
        pink: "#FF88CC"
      },
      syntax: {
        keyword: "#D2A6FF",
        string: "#AAD94C",
        number: "#FFB454",
        boolean: "#FF9940",
        function: "#59C2FF",
        class: "#95E6CB",
        variable: "#e6e6e6",
        comment: "#646A71",
        operator: "#F26D78",
        punctuation: "#b8b8b8"
      },
      ui: {
        border: "#3d4149",
        borderFocus: "#59C2FF",
        selection: "#2d3847",
        selectionText: "#e6e6e6",
        code: "#FFB454",
        codeBackground: "#1a1d26"
      },
      semantic: {
        pending: "#7d7d7d",
        inProgress: "#59C2FF",
        completed: "#AAD94C",
        disabled: "#525252"
      },
      plan: {
        community: "#7d7d7d",
        team: "#59C2FF",
        enterprise: "#D2A6FF",
        plus: "#FFB454"
      },
      symbols
    },
    taskList: {
      diff: {
        addition: {
          background: "#005E24",
          highlight: "#00A958"
        },
        deletion: {
          background: "#852134",
          highlight: "#C0526A"
        },
        text: "#f0f0f0"
      },
      status: {
        pending: "#7d7d7d",
        inProgress: "#e6e6e6",
        done: "#AAD94C"
      },
      text: {
        normal: "#e6e6e6",
        dimmed: "#7d7d7d",
        completed: "#AAD94C"
      }
    }
  }
};

// src/utils/system-color-scheme.ts
import { execFileSync } from "child_process";
var cached;
function detectSystemColorScheme() {
  if (cached === undefined) {
    cached = compute();
  }
  return cached;
}
function compute() {
  const fromEnv = fromColorFgBg(process.env.COLORFGBG);
  if (fromEnv) {
    return fromEnv;
  }
  if (process.platform === "darwin") {
    return fromMacOS();
  }
  if (process.platform === "win32") {
    return fromWindows();
  }
  return fromLinux();
}
function fromColorFgBg(value) {
  if (!value) {
    return null;
  }
  const fields = value.split(";");
  const bg = Number(fields[fields.length - 1]);
  if (Number.isNaN(bg)) {
    return null;
  }
  return bg <= 6 || bg === 8 ? "dark" : "light";
}
function fromMacOS() {
  try {
    const out = run("defaults", ["read", "-g", "AppleInterfaceStyle"]);
    return out.toLowerCase().includes("dark") ? "dark" : "light";
  } catch {
    return "light";
  }
}
function fromWindows() {
  try {
    const out = run("reg", [
      "query",
      "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",
      "/v",
      "AppsUseLightTheme"
    ]);
    return /0x1\b/.test(out) ? "light" : "dark";
  } catch {
    return "dark";
  }
}
function fromLinux() {
  try {
    const out = run("gsettings", ["get", "org.gnome.desktop.interface", "color-scheme"]).toLowerCase();
    if (out.includes("dark")) {
      return "dark";
    }
    if (out.includes("light") || out.includes("default")) {
      return "light";
    }
  } catch {}
  return "dark";
}
function run(command, args) {
  return execFileSync(command, args, { stdio: ["ignore", "pipe", "ignore"], timeout: 1000 }).toString().trim();
}

// src/utils/theme-preferences.ts
var cliPreferencesSchema = ne.object({
  theme: cliThemePreferenceSchema.optional().catch(undefined)
}).passthrough();
var CLI_PREFERENCES_FILE_ENV_KEY = "ADK_CLI_PREFERENCES_FILE";
var CLI_PREFERENCES_DEFAULT_DIR = join(homedir(), ".botpress");
var CLI_PREFERENCES_DEFAULT_FILE = join(CLI_PREFERENCES_DEFAULT_DIR, "adk-cli.json");
var DEFAULT_CLI_THEME = "system";
var isCliThemePreference = (value) => {
  return cliThemePreferenceSchema.safeParse(value).success;
};
var resolveColorScheme = (preference) => {
  return preference === "system" ? detectSystemColorScheme() : preference;
};
var getPreferencesFilePath = (preferencesFilePath) => {
  const trimmedExplicitPath = preferencesFilePath?.trim();
  if (trimmedExplicitPath) {
    return trimmedExplicitPath;
  }
  const fromEnv = process.env[CLI_PREFERENCES_FILE_ENV_KEY]?.trim();
  return fromEnv || CLI_PREFERENCES_DEFAULT_FILE;
};
var readPreferences = (preferencesFilePath) => {
  const preferencesFile = getPreferencesFilePath(preferencesFilePath);
  try {
    if (!existsSync(preferencesFile)) {
      return {};
    }
    const raw = readFileSync(preferencesFile, "utf-8");
    const parsed = cliPreferencesSchema.safeParse(JSON.parse(raw));
    return parsed.success ? parsed.data : {};
  } catch {
    return {};
  }
};
var writePreferences = (preferences, preferencesFilePath) => {
  const preferencesFile = getPreferencesFilePath(preferencesFilePath);
  const preferencesDir = dirname(preferencesFile);
  if (!existsSync(preferencesDir)) {
    mkdirSync(preferencesDir, { recursive: true });
  }
  writeFileSync(preferencesFile, JSON.stringify(preferences, null, 2) + `
`, "utf-8");
};
var getSavedCliTheme = (preferencesFilePath) => {
  const preferences = readPreferences(preferencesFilePath);
  const result = cliThemePreferenceSchema.safeParse(preferences.theme);
  return result.success ? result.data : DEFAULT_CLI_THEME;
};
var setSavedCliTheme = (theme, preferencesFilePath) => {
  const preferences = readPreferences(preferencesFilePath);
  writePreferences({
    ...preferences,
    theme
  }, preferencesFilePath);
};

export { terminalThemePalette, isCliThemePreference, resolveColorScheme, getSavedCliTheme, setSavedCliTheme };
