import { DeesElement, customElement, html, css, cssManager, property, type TemplateResult, } from '@design.estate/dees-element'; declare global { interface HTMLElementTagNameMap { 'sz-registry-advertisement': SzRegistryAdvertisement; } } @customElement('sz-registry-advertisement') export class SzRegistryAdvertisement extends DeesElement { public static demo = () => html`
`; public static demoGroups = ['Auth & Settings']; @property({ type: String }) public accessor status: 'running' | 'stopped' = 'stopped'; @property({ type: String }) public accessor registryUrl: string = ''; public static styles = [ cssManager.defaultStyles, css` :host { display: block; } .card { background: ${cssManager.bdTheme('#ffffff', '#09090b')}; border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')}; border-radius: 8px; overflow: hidden; } .card-header { display: flex; align-items: center; gap: 12px; padding: 16px; border-bottom: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')}; } .registry-icon { width: 40px; height: 40px; background: ${cssManager.bdTheme('#dbeafe', 'rgba(59, 130, 246, 0.2)')}; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: ${cssManager.bdTheme('#2563eb', '#60a5fa')}; } .header-info { flex: 1; } .header-title { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 600; color: ${cssManager.bdTheme('#18181b', '#fafafa')}; } .default-badge { padding: 2px 8px; background: ${cssManager.bdTheme('#dbeafe', 'rgba(59, 130, 246, 0.2)')}; color: ${cssManager.bdTheme('#2563eb', '#60a5fa')}; border-radius: 4px; font-size: 11px; font-weight: 600; } .header-subtitle { font-size: 13px; color: ${cssManager.bdTheme('#71717a', '#a1a1aa')}; margin-top: 2px; } .card-content { padding: 16px; } .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 24px; } .info-item { display: flex; flex-direction: column; gap: 4px; } .info-label { font-size: 12px; font-weight: 500; color: ${cssManager.bdTheme('#71717a', '#a1a1aa')}; text-transform: uppercase; letter-spacing: 0.05em; } .info-value { font-size: 14px; color: ${cssManager.bdTheme('#18181b', '#fafafa')}; } .status-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 9999px; font-size: 12px; font-weight: 500; } .status-badge.running { background: ${cssManager.bdTheme('#dcfce7', 'rgba(34, 197, 94, 0.2)')}; color: ${cssManager.bdTheme('#16a34a', '#22c55e')}; } .status-badge.stopped { background: ${cssManager.bdTheme('#fee2e2', 'rgba(239, 68, 68, 0.2)')}; color: ${cssManager.bdTheme('#dc2626', '#ef4444')}; } .manage-link { color: ${cssManager.bdTheme('#2563eb', '#60a5fa')}; text-decoration: none; cursor: pointer; } .manage-link:hover { text-decoration: underline; } .quick-start { background: ${cssManager.bdTheme('#f4f4f5', '#18181b')}; border-radius: 6px; padding: 16px; } .quick-start-title { font-size: 14px; font-weight: 600; color: ${cssManager.bdTheme('#18181b', '#fafafa')}; margin-bottom: 8px; } .quick-start-desc { font-size: 13px; color: ${cssManager.bdTheme('#71717a', '#a1a1aa')}; margin-bottom: 12px; } .code-block { background: ${cssManager.bdTheme('#18181b', '#0a0a0a')}; border-radius: 6px; padding: 12px; font-family: monospace; font-size: 13px; overflow-x: auto; } .code-line { color: ${cssManager.bdTheme('#a1a1aa', '#71717a')}; margin-bottom: 4px; } .code-line:last-child { margin-bottom: 0; } .code-comment { color: ${cssManager.bdTheme('#6b7280', '#52525b')}; } .code-command { color: ${cssManager.bdTheme('#fafafa', '#e4e4e7')}; } `, ]; public render(): TemplateResult { return html`
Registry Advertisement Default
Container registry for your services
Status ${this.status === 'running' ? 'Running' : 'Stopped'}
Registry URL ${this.registryUrl}
Quick Start
To push images to the registry, use a CI or Global token:
# Login to the registry
docker login ${this.registryUrl.split('/')[0]} -u registry -p YOUR_TOKEN
# Tag and push your image
docker tag myapp ${this.registryUrl.split('/')[0]}/myservice:latest
docker push ${this.registryUrl.split('/')[0]}/myservice:latest
`; } private handleManageTokens() { this.dispatchEvent(new CustomEvent('manage-tokens', { bubbles: true, composed: true })); } }