49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { TempstreamJSX } from "tempstream";
|
|
import type {
|
|
ComponentToHTMLArgs,
|
|
ExtractStructuredComponentArgumentsParsed,
|
|
JDDContext,
|
|
} from "@sealcode/jdd";
|
|
import { Component, ComponentArguments } from "@sealcode/jdd";
|
|
|
|
export const background_variants = ["variant1", "variant2"];
|
|
|
|
const component_arguments = {
|
|
variant: new ComponentArguments.Enum(background_variants),
|
|
grow_to_screen_height: new ComponentArguments.Boolean(),
|
|
content: new ComponentArguments.NestedComponent(),
|
|
} as const;
|
|
|
|
export class BackgroundWrapper extends Component<typeof component_arguments> {
|
|
getArguments() {
|
|
return component_arguments;
|
|
}
|
|
|
|
getCSSClumps(
|
|
jdd_context: JDDContext,
|
|
args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
|
|
) {
|
|
const result = [...(args?.content?.getCSSClumps(jdd_context) || [])];
|
|
return result;
|
|
}
|
|
|
|
async toHTML({
|
|
args: { variant, content, grow_to_screen_height },
|
|
classes,
|
|
jdd_context,
|
|
}: ComponentToHTMLArgs<typeof component_arguments>): Promise<string> {
|
|
return (
|
|
<div
|
|
class={[
|
|
"background-wrapper",
|
|
`background-wrapper--${variant}`,
|
|
{ "background-wrapper--grow-height": grow_to_screen_height },
|
|
...classes,
|
|
]}
|
|
>
|
|
{content.render(jdd_context)}
|
|
</div>
|
|
);
|
|
}
|
|
}
|