aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2026-04-28 21:07:12 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2026-04-28 21:07:12 +0200
commita75d03583c0691b1830122979d44737e574f27c7 (patch)
tree0c5431bf66cd816a5e07264f307ed8c3833b2edb /src
parentc6e771fff0515d3a8e0cbc928c103b6c86f22c0f (diff)
feat(): support callout's title
Diffstat (limited to 'src')
-rw-r--r--src/callout.zig6
-rw-r--r--src/eval/blocks.zig10
2 files changed, 11 insertions, 5 deletions
diff --git a/src/callout.zig b/src/callout.zig
index 9c5bab5..1c756d6 100644
--- a/src/callout.zig
+++ b/src/callout.zig
@@ -57,17 +57,17 @@ test "callout" {
\\:::
\\hey
\\:::
- , "<div class=\"callout\"><p>hey</p></div>");
+ , "<div data-callout=\"default\" class=\"callout\"><h4>default</h4><p>hey</p></div>");
try doTest(parse, alloc,
\\:::info
\\hey
\\:::
- , "<div data-callout=\"info\" class=\"callout\"><p>hey</p></div>");
+ , "<div data-callout=\"info\" class=\"callout\"><h4>info</h4><p>hey</p></div>");
try doTest(parse, alloc,
\\::: info Title
\\hey
\\:::
- , "<div data-callout=\"info\" class=\"callout\"><p>hey</p></div>");
+ , "<div data-callout=\"info\" class=\"callout\"><h4>Title</h4><p>hey</p></div>");
// cannot test content with \n
try doTestError(parse, alloc, ":::", Error.InvalidCallout);
diff --git a/src/eval/blocks.zig b/src/eval/blocks.zig
index 32f2de3..9f96c3d 100644
--- a/src/eval/blocks.zig
+++ b/src/eval/blocks.zig
@@ -133,8 +133,14 @@ pub const Callout = struct {
const self: *Self = @ptrCast(@alignCast(context));
var el = try HTML.Content.init(alloc, "div");
try el.base.appendClass("callout");
- if (self.kind) |kind| try el.base.setAttribute("data-callout", kind);
- el.content = try self.content.html(alloc);
+ const kind = self.kind orelse "default";
+ try el.base.setAttribute("data-callout", kind);
+ const root = try HTML.Root.init(alloc);
+ const title = try HTML.Content.init(alloc, "h4");
+ title.content = (try HTML.Literal.init(alloc, self.title orelse kind)).element();
+ root.append(title.element());
+ root.append(try self.content.html(alloc));
+ el.content = root.element();
return el.element();
}
};