@zeix/ui-element
Version:
UIElement - minimal reactive framework based on Web Components
40 lines (36 loc) • 623 B
text/typescript
import {
type Component,
asBoolean,
asString,
component,
first,
RESET,
setProperty,
setText,
} from "../../../";
export type InputButtonProps = {
disabled: boolean;
label: string;
badge: string;
};
export default component(
"input-button",
{
disabled: asBoolean,
label: asString(RESET),
badge: asString(RESET),
},
() => [
first<InputButtonProps, HTMLButtonElement>(
"button",
setProperty("disabled"),
),
first(".label", setText("label")),
first(".badge", setText("badge")),
],
);
declare global {
interface HTMLElementTagNameMap {
"input-button": Component<InputButtonProps>;
}
}