import type { FlatTemplatable } from "tempstream"; import { TempstreamJSX } from "tempstream"; import type { ComponentToHTMLArgs, ExtractStructuredComponentArgumentsParsed, JDDContext, } from "@sealcode/jdd"; import { Component, ComponentArguments } from "@sealcode/jdd"; const component_arguments = { color: new ComponentArguments.Enum(["transparent", "normal", "accent", "accent2"]), content: new ComponentArguments.Markdown(), side_content: new ComponentArguments.NestedComponent(), } as const; export class Tekst extends Component { getArguments() { return component_arguments; } getTitle( _: JDDContext, args: ExtractStructuredComponentArgumentsParsed ) { return args.content.slice(0, 20) + "..." || null; } getCSSClumps( jdd_context: JDDContext, args: ExtractStructuredComponentArgumentsParsed ) { const result = args?.side_content?.getCSSClumps(jdd_context) || []; return result; } toHTML({ args: { color, content, side_content }, classes, jdd_context, index, }: ComponentToHTMLArgs): FlatTemplatable { const { render_markdown, language } = jdd_context; return (
{side_content.isEmpty() ? ( "" ) : (
{side_content.render(jdd_context)}
)} {render_markdown(language, content)}
); } getHeadings( _context: JDDContext, args: ExtractStructuredComponentArgumentsParsed<{ readonly content: ComponentArguments.Markdown; }> ) { return this.getArguments().content.extractHeadings(args.content); } }