89 lines
2.0 KiB
TypeScript
89 lines
2.0 KiB
TypeScript
|
|
import { DeesElement, property, html, customElement, type TemplateResult, css, cssManager, unsafeCSS } from '@design.estate/dees-element';
|
||
|
|
import * as domtools from '@design.estate/dees-domtools';
|
||
|
|
import { fonts } from '../styles/shared.styles.js';
|
||
|
|
import { demoFunc } from './upl-statuspage-pagetitle.demo.js';
|
||
|
|
|
||
|
|
declare global {
|
||
|
|
interface HTMLElementTagNameMap {
|
||
|
|
'upl-statuspage-pagetitle': UplStatuspagePagetitle;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@customElement('upl-statuspage-pagetitle')
|
||
|
|
export class UplStatuspagePagetitle extends DeesElement {
|
||
|
|
public static demo = demoFunc;
|
||
|
|
|
||
|
|
@property({ type: String })
|
||
|
|
public pageTitle: string = 'System Status';
|
||
|
|
|
||
|
|
@property({ type: String })
|
||
|
|
public pageSubtitle: string = '';
|
||
|
|
|
||
|
|
@property({ type: Boolean })
|
||
|
|
public centered: boolean = false;
|
||
|
|
|
||
|
|
constructor() {
|
||
|
|
super();
|
||
|
|
}
|
||
|
|
|
||
|
|
public static styles = [
|
||
|
|
domtools.elementBasic.staticStyles,
|
||
|
|
css`
|
||
|
|
:host {
|
||
|
|
display: block;
|
||
|
|
font-family: ${unsafeCSS(fonts.base)};
|
||
|
|
}
|
||
|
|
|
||
|
|
.title-container {
|
||
|
|
max-width: 1200px;
|
||
|
|
margin: 0 auto;
|
||
|
|
padding: 48px 24px 24px 24px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.title-container.centered {
|
||
|
|
text-align: center;
|
||
|
|
}
|
||
|
|
|
||
|
|
h1 {
|
||
|
|
font-size: 48px;
|
||
|
|
font-weight: 700;
|
||
|
|
letter-spacing: -0.02em;
|
||
|
|
line-height: 1.1;
|
||
|
|
color: ${cssManager.bdTheme('#0a0a0a', '#fafafa')};
|
||
|
|
margin: 0 0 16px 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
p {
|
||
|
|
font-size: 20px;
|
||
|
|
color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
|
||
|
|
margin: 0;
|
||
|
|
line-height: 1.5;
|
||
|
|
}
|
||
|
|
|
||
|
|
@media (max-width: 640px) {
|
||
|
|
.title-container {
|
||
|
|
padding: 32px 16px 20px 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
h1 {
|
||
|
|
font-size: 36px;
|
||
|
|
}
|
||
|
|
|
||
|
|
p {
|
||
|
|
font-size: 18px;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
`
|
||
|
|
]
|
||
|
|
|
||
|
|
public render(): TemplateResult {
|
||
|
|
return html`
|
||
|
|
<div class="title-container ${this.centered ? 'centered' : ''}">
|
||
|
|
<h1>${this.pageTitle}</h1>
|
||
|
|
${this.pageSubtitle ? html`
|
||
|
|
<p>${this.pageSubtitle}</p>
|
||
|
|
` : ''}
|
||
|
|
</div>
|
||
|
|
`;
|
||
|
|
}
|
||
|
|
}
|