From 2ae6bef083f6a922a6c25db3465d93832159706a Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Fri, 14 Aug 2026 14:01:34 +0200 Subject: [PATCH] Add crossover component --- .../jdd-components/crossover/crossover.css | 5 ++ .../crossover/crossover.jdd.tsx | 65 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/back/jdd-components/crossover/crossover.css create mode 100644 src/back/jdd-components/crossover/crossover.jdd.tsx diff --git a/src/back/jdd-components/crossover/crossover.css b/src/back/jdd-components/crossover/crossover.css new file mode 100644 index 0000000..4f1c28c --- /dev/null +++ b/src/back/jdd-components/crossover/crossover.css @@ -0,0 +1,5 @@ +.crossover { + display: grid; + grid-template-columns: subgrid; + grid-column: screen !important; +} diff --git a/src/back/jdd-components/crossover/crossover.jdd.tsx b/src/back/jdd-components/crossover/crossover.jdd.tsx new file mode 100644 index 0000000..c1d45aa --- /dev/null +++ b/src/back/jdd-components/crossover/crossover.jdd.tsx @@ -0,0 +1,65 @@ +import { TempstreamJSX } from "tempstream"; +import type { + ComponentToHTMLArgs, + ExtractStructuredComponentArgumentsParsed, + JDDContext, +} from "@sealcode/jdd"; +import { Component, ComponentArguments } from "@sealcode/jdd"; + +const component_arguments = { + breakpoints_ascending: new ComponentArguments.List( + new ComponentArguments.Structured({ + display_up_to_px: new ComponentArguments.Number(), + content: new ComponentArguments.NestedComponent(), + }) + ), +} as const; + +export class Crossover extends Component { + getArguments() { + return component_arguments; + } + + getCSSClumps( + jdd_context: JDDContext, + args: ExtractStructuredComponentArgumentsParsed + ) { + const result = (args.breakpoints_ascending || []) + .map((breakpoint) => breakpoint.content.getCSSClumps(jdd_context)) + .flat(); + return result; + } + + async toHTML({ + args: { breakpoints_ascending }, + classes, + jdd_context, + }: ComponentToHTMLArgs): Promise { + const uid = crypto.randomUUID(); + const id = "id-" + uid; + return ( +
+ {breakpoints_ascending.map((breakpoint) => + breakpoint.content.render(jdd_context) + )} + { + /* HTML */ `` + } +
+ ); + } +}