import { DeesElement, html, customElement, css } from '@design.estate/dees-element'; import { shxDemoAgents, shxDemoApprovals, shxDemoDevices } from '../demo/demo-data.js'; import { shxElementStyles } from './tokens.js'; import './shx-badge.js'; import './shx-card.js'; import './shx-icon.js'; declare global { interface HTMLElementTagNameMap { 'shx-console-shell': ShxConsoleShell; } } @customElement('shx-console-shell') export class ShxConsoleShell extends DeesElement { public static demo = () => html``; public static demoGroups = ['smarthome.exchange full pages']; public static styles = [ ...shxElementStyles, css` :host { display: block; min-height: 100vh; background: var(--shx-bg); color: var(--shx-fg); } .shell { display: grid; grid-template-columns: 230px 1fr; min-height: 100vh; } aside { border-right: 1px solid var(--shx-border-soft); background: var(--shx-card); padding: 16px; } .brand { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; font: 800 14px/1 var(--shx-display); } .nav { display: grid; gap: 4px; } .nav div { padding: 8px 10px; border-radius: 7px; color: var(--shx-fg-3); font-size: 13px; } .nav div:first-child { background: var(--shx-accent-soft); color: var(--shx-accent); } main { padding: 18px; } .top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } h1 { margin: 0; font: 800 24px/1 var(--shx-display); letter-spacing: -0.03em; } .grid { display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 14px; } .list { display: grid; gap: 8px; } .row { display: grid; grid-template-columns: 10px 1fr auto; gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--shx-border-soft); border-radius: 8px; background: var(--shx-card-2); } .dot { width: 8px; height: 8px; border-radius: 50%; } .name { font-weight: 700; } .sub { margin-top: 2px; color: var(--shx-fg-3); font-size: 12px; } @media (max-width: 860px) { .shell, .grid { grid-template-columns: 1fr; } aside { border-right: none; border-bottom: 1px solid var(--shx-border-soft); } } `, ]; public render() { return html`

Birch Lane

hub online · 12ms

Agents

${shxDemoAgents.map((agentArg) => html`
${agentArg.name}
${agentArg.latest}
${agentArg.mode}
`)}

Pending approvals

${shxDemoApprovals.map((approvalArg) => html`
${approvalArg.title}
${approvalArg.reason}
${Math.round(approvalArg.confidence * 100)}%
`)}

Devices

${shxDemoDevices.map((deviceArg) => html`
${deviceArg.name}
${deviceArg.room} · ${deviceArg.state}
${deviceArg.agent}
`)}
`; } }