Configurable vertical padding in subtree

This commit is contained in:
Kuba Orlik 2026-08-10 18:04:26 +02:00
parent 4b31596727
commit 771a5fb790
3 changed files with 58 additions and 5 deletions

View File

@ -7,8 +7,14 @@ import type {
import { Component, ComponentArguments } from "@sealcode/jdd"; import { Component, ComponentArguments } from "@sealcode/jdd";
const component_arguments = { const component_arguments = {
bleed_left: new ComponentArguments.Enum(["none", "bleed", "screen"]), bleed_left: new ComponentArguments.Enum(["none", "bleed", "screen"]).setExampleValues(
bleed_right: new ComponentArguments.Enum(["none", "bleed", "screen"]), ["none"]
),
bleed_right: new ComponentArguments.Enum([
"none",
"bleed",
"screen",
]).setExampleValues(["none"]),
column_gap: new ComponentArguments.Boolean(), column_gap: new ComponentArguments.Boolean(),
row_gap: new ComponentArguments.Boolean(), row_gap: new ComponentArguments.Boolean(),
component1: new ComponentArguments.NestedComponent(), component1: new ComponentArguments.NestedComponent(),

View File

@ -1,6 +1,9 @@
.subtree { .subtree {
display: flex; display: flex;
flex-flow: column; flex-flow: column;
--vertical-padding: 0px;
--horizontal-padding: 0px;
padding: var(--vertical-padding) var(--horizontal-padding);
&.subtree--gap-none { &.subtree--gap-none {
gap: 0px; gap: 0px;
@ -17,4 +20,28 @@
&.subtree--gap-wide { &.subtree--gap-wide {
gap: 24px; gap: 24px;
} }
&.subtree--padding-vertical-none {
--vertical-padding: 0px;
}
&.subtree--padding-vertical-narrow {
--vertical-padding: 8px;
}
&.subtree--padding-vertical-medium {
--vertical-padding: 16px;
}
&.subtree--padding-vertical-wide {
--vertical-padding: 24px;
}
&.subtree--padding-vertical-extra-wide {
--vertical-padding: 48px;
}
&.subtree--padding-vertical-super-wide {
--vertical-padding: 96px;
}
} }

View File

@ -7,7 +7,20 @@ import type {
import { Component, ComponentArguments } from "@sealcode/jdd"; import { Component, ComponentArguments } from "@sealcode/jdd";
const component_arguments = { const component_arguments = {
gap: new ComponentArguments.Enum(["none", "narrow", "medium", "wide"]), gap: new ComponentArguments.Enum([
"none",
"narrow",
"medium",
"wide",
]).setExampleValues(["medium"]),
padding_vertical: new ComponentArguments.Enum([
"none",
"narrow",
"medium",
"wide",
"extra-wide",
"super-wide",
]).setExampleValues(["medium"]),
components: new ComponentArguments.List(new ComponentArguments.NestedComponent()), components: new ComponentArguments.List(new ComponentArguments.NestedComponent()),
} as const; } as const;
@ -27,12 +40,19 @@ export class Subtree extends Component<typeof component_arguments> {
} }
async toHTML({ async toHTML({
args: { components, gap }, args: { components, gap, padding_vertical },
classes, classes,
jdd_context, jdd_context,
}: ComponentToHTMLArgs<typeof component_arguments>): Promise<string> { }: ComponentToHTMLArgs<typeof component_arguments>): Promise<string> {
return ( return (
<div class={["subtree", `subtree--gap-${gap}`, ...classes]}> <div
class={[
"subtree",
`subtree--gap-${gap}`,
`subtree--padding-vertical-${padding_vertical}`,
...classes,
]}
>
{components?.map((component) => component.render(jdd_context))} {components?.map((component) => component.render(jdd_context))}
</div> </div>
); );