import { Dialog, DialogContent, DialogHeader, html, Input, i18n, Label, Switch, type TemplateResult, } from "@mariozechner/mini-lit"; import { getProviders } from "@mariozechner/pi-ai"; import { LitElement } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import "../components/ProviderKeyInput.js"; import { getAppStorage } from "../storage/app-storage.js"; // Base class for settings tabs export abstract class SettingsTab extends LitElement { abstract getTabName(): string; protected createRenderRoot() { return this; } } // API Keys Tab @customElement("api-keys-tab") export class ApiKeysTab extends SettingsTab { getTabName(): string { return i18n("API Keys"); } render(): TemplateResult { const providers = getProviders(); return html`
${i18n("Configure API keys for LLM providers. Keys are stored locally in your browser.")}
${providers.map((provider) => html`${i18n("The CORS proxy strips CORS headers from API responses, allowing browser-based apps to make direct calls to LLM providers without CORS restrictions. It forwards requests to providers while removing headers that would otherwise block cross-origin requests.")}
${i18n("Settings are stored locally in your browser")}