import { DeesElement, html, property, customElement, css, type TemplateResult } from '@design.estate/dees-element'; import { idpElementStyles } from './tokens.js'; import './idp-approval-card.js'; import './idp-badge.js'; import './idp-button.js'; import './idp-icon.js'; import './idp-mobile-frame.js'; declare global { interface HTMLElementTagNameMap { 'idp-inbox-preview': IdpInboxPreview; } } @customElement('idp-inbox-preview') export class IdpInboxPreview extends DeesElement { public static demo = () => html``; public static demoGroups = ['idp.global v3 approval surfaces']; @property({ type: Boolean, reflect: true }) public accessor dark = false; public static styles = [ ...idpElementStyles, css` :host { display: block; } idp-mobile-frame { --idp-bg: #ffffff; } :host([dark]) idp-mobile-frame { --idp-bg: #09090b; --idp-fg: #fafafa; } .screen { height: 100%; background: var(--idp-bg); color: var(--idp-fg); box-sizing: border-box; padding-top: 58px; display: flex; flex-direction: column; } .header { padding: 0 20px 14px; border-bottom: 1px solid var(--idp-border); } .brandline { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .brand { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 650; } .brandmark { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: 6px; background: var(--idp-primary); color: var(--idp-primary-fg); } h2 { margin: 0; font-size: 24px; font-weight: 760; letter-spacing: -0.04em; } .summary { display: flex; align-items: center; gap: 8px; margin-top: 6px; color: var(--idp-muted-fg); font-size: 13px; } .list { display: grid; gap: 10px; padding: 14px 16px 120px; overflow: auto; } .earlier { margin: 10px 0 2px; color: var(--idp-muted-fg); font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--idp-border); border-radius: 10px; font-size: 13px; } .row-icon { width: 26px; height: 26px; border-radius: 7px; background: var(--idp-muted); color: var(--idp-ok); display: flex; align-items: center; justify-content: center; } .row-sub { color: var(--idp-muted-fg); font-size: 12px; margin-top: 1px; } .tabbar { position: absolute; left: 12px; right: 12px; bottom: 24px; z-index: 80; display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; padding: 8px; border: 1px solid color-mix(in srgb, var(--idp-border), transparent 20%); border-radius: 22px; background: color-mix(in srgb, var(--idp-card), transparent 8%); box-shadow: 0 16px 36px rgb(0 0 0 / 0.16); backdrop-filter: blur(24px) saturate(170%); } .tab { display: grid; place-items: center; gap: 3px; min-height: 44px; color: var(--idp-muted-fg); font-size: 10px; font-weight: 600; } .tab.active { color: var(--idp-accent); } `, ]; public render(): TemplateResult { return html` idp.global Inbox 3 pendingoldest 8 min ago Earlier today ${['Notion · Approved 11:42', 'Apple ID · Approved 09:18', 'reddit.com · Denied 08:57'].map((itemArg) => html` ${itemArg.split(' · ')[0]} ${itemArg.split(' · ')[1]} `)} Inbox History Devices Identity `; } }