import { LitElement, css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import * as React from 'react'; export const tagName = 'simple-counter'; // Adapt React in order to be able to use custom tags properly declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace JSX { interface IntrinsicElements { [tagName]: PersonInfoProps; } } } interface PersonInfoProps extends React.DetailedHTMLProps< React.HTMLAttributes, HTMLElement > { name?: string; } // ===================== Adapt end ==================== @customElement(tagName) export class Counter extends LitElement { static styles = css` .counter-container { display: flex; color: var(--affine-text-color); } button { margin: 0 5px; } `; @property() name?: string = ''; @state() count = 0; // Render the UI as a function of component state render() { return html`
${this.name}
${this.count}
`; } private _increment() { this.count++; } private _subtract() { this.count--; } }