import { DeesElement, customElement, html, css, cssManager, property, type TemplateResult, } from '@design.estate/dees-element'; import './sz-traffic-card.js'; import './sz-reverse-proxy-card.js'; import './sz-certificates-card.js'; import type { ITrafficData } from './sz-traffic-card.js'; declare global { interface HTMLElementTagNameMap { 'sz-status-grid-network': SzStatusGridNetwork; } } export interface IProxyStatus { httpPort: string; httpsPort: string; httpActive: boolean; httpsActive: boolean; routeCount: string; } export interface ICertificateStatus { valid: number; expiring: number; expired: number; } @customElement('sz-status-grid-network') export class SzStatusGridNetwork extends DeesElement { public static demo = () => html`
`; public static demoGroups = ['Dashboard Grids']; @property({ type: Object }) public accessor traffic: ITrafficData = { requests: 0, errors: 0, errorPercent: 0, avgResponse: 0, reqPerMin: 0, status2xx: 0, status3xx: 0, status4xx: 0, status5xx: 0, }; @property({ type: Object }) public accessor proxy: IProxyStatus = { httpPort: '80', httpsPort: '443', httpActive: false, httpsActive: false, routeCount: '0', }; @property({ type: Object }) public accessor certificates: ICertificateStatus = { valid: 0, expiring: 0, expired: 0, }; public static styles = [ cssManager.defaultStyles, css` :host { display: block; } .grid { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: stretch; } .grid > * { height: 100%; } @media (min-width: 768px) { .grid { grid-template-columns: 1fr 1fr; } } @media (min-width: 1024px) { .grid { grid-template-columns: 2fr 1fr 1fr; } } `, ]; public render(): TemplateResult { return html`
`; } }