@zeix/ui-element
Version:
UIElement - a HTML-first library for reactive Web Components
42 lines (37 loc) • 702 B
text/typescript
import { requireDescendant } from '../../..'
import {
type Component,
RESET,
asBoolean,
asString,
component,
setProperty,
setText,
} from '../../../'
export type BasicButtonProps = {
disabled: boolean
label: string
badge: string
}
export default component(
'basic-button',
{
disabled: asBoolean(),
label: asString(RESET),
badge: asString(),
},
(el, { first }) => {
requireDescendant(el, 'button')
requireDescendant(el, '.label')
return [
first('button', setProperty('disabled')),
first('.label', setText('label')),
first('.badge', setText('badge')),
]
},
)
declare global {
interface HTMLElementTagNameMap {
'basic-button': Component<BasicButtonProps>
}
}