import { html, css, LitElement } from '../assets/lit-core-2.7.4.min.js'; export class WelcomeHeader extends LitElement { static styles = css` :host { display: block; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } .container { width: 100%; box-sizing: border-box; height: auto; padding: 24px 16px; background: rgba(0, 0, 0, 0.64); box-shadow: 0px 0px 0px 1.5px rgba(255, 255, 255, 0.64) inset; border-radius: 16px; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 32px; display: inline-flex; -webkit-app-region: drag; } .close-button { -webkit-app-region: no-drag; position: absolute; top: 16px; right: 16px; width: 20px; height: 20px; background: rgba(255, 255, 255, 0.1); border: none; border-radius: 5px; color: rgba(255, 255, 255, 0.7); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s ease; z-index: 10; font-size: 16px; line-height: 1; padding: 0; } .close-button:hover { background: rgba(255, 255, 255, 0.2); color: rgba(255, 255, 255, 0.9); } .header-section { flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 4px; display: flex; } .title { color: white; font-size: 18px; font-weight: 700; } .subtitle { color: white; font-size: 14px; font-weight: 500; } .option-card { width: 100%; justify-content: flex-start; align-items: flex-start; gap: 8px; display: inline-flex; } .divider { width: 1px; align-self: stretch; position: relative; background: #bebebe; border-radius: 2px; } .option-content { flex: 1 1 0; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 8px; display: inline-flex; min-width: 0; } .option-title { color: white; font-size: 14px; font-weight: 700; } .option-description { color: #dcdcdc; font-size: 12px; font-weight: 400; line-height: 18px; letter-spacing: 0.12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .action-button { -webkit-app-region: no-drag; padding: 8px 10px; background: rgba(132.6, 132.6, 132.6, 0.8); box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.16); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.5); justify-content: center; align-items: center; gap: 6px; display: flex; cursor: pointer; transition: background-color 0.2s; } .action-button:hover { background: rgba(150, 150, 150, 0.9); } .button-text { color: white; font-size: 12px; font-weight: 600; } .button-icon { width: 12px; height: 12px; position: relative; display: flex; align-items: center; justify-content: center; } .arrow-icon { border: solid white; border-width: 0 1.2px 1.2px 0; display: inline-block; padding: 3px; transform: rotate(-45deg); -webkit-transform: rotate(-45deg); } .footer { align-self: stretch; text-align: center; color: #dcdcdc; font-size: 12px; font-weight: 500; line-height: 19.2px; } .footer-link { text-decoration: underline; cursor: pointer; } `; static properties = { loginCallback: { type: Function }, apiKeyCallback: { type: Function }, }; constructor() { super(); this.loginCallback = () => {}; this.apiKeyCallback = () => {}; this.handleClose = this.handleClose.bind(this); } updated(changedProperties) { super.updated(changedProperties); this.dispatchEvent(new CustomEvent('content-changed', { bubbles: true, composed: true })); } handleClose() { if (window.require) { window.require('electron').ipcRenderer.invoke('quit-application'); } } render() { return html`
Welcome to Glass
Choose how to connect your AI model
Quick start with default API key
100% free with Pickle's OpenAI key
No personal data collected
Sign up with Google in seconds
Use Personal API keys
Costs may apply based on your API usage
No personal data collected
Use your own API keys (OpenAI, Gemini, etc.)
`; } openPrivacyPolicy() { if (window.require) { window.require('electron').shell.openExternal('https://pickleglass.com/privacy'); } } } customElements.define('welcome-header', WelcomeHeader);