lib/zen/src/theme/model.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const frontmatter = @import("../frontmatter/root.zig");
2 const defaults = @import("defaults.zig");
3
4 pub const Theme = struct {
5 site_title: []const u8 = "Tiny",
6 language: []const u8 = "en",
7 layout: []const u8 = defaults.default_layout,
8 style_path: []const u8 = "zen.css",
9 style: []const u8 = defaults.default_style,
10 includes: []const Include = &.{},
11 };
12
13 pub const Files = struct {
14 dir: []const u8 = ".zen",
15 layout: []const u8 = "layout.html",
16 style: []const u8 = "style.css",
17 includes: []const u8 = "includes",
18 max_layout_bytes: usize = 2 * 1024 * 1024,
19 max_style_bytes: usize = 2 * 1024 * 1024,
20 max_include_bytes: usize = 2 * 1024 * 1024,
21 };
22
23 pub const Include = struct {
24 name: []const u8,
25 html: []const u8,
26 };
27
28 pub const Page = struct {
29 title: []const u8,
30 description: []const u8 = "",
31 content: []const u8,
32 path: []const u8 = "",
33 metadata: frontmatter.Metadata = .{},
34 };
35
36 pub const Exhaustion = error{
37 ThemeOutputByteCapacityExceeded,
38 ThemeStorageInUse,
39 };
40
41 pub const TemplateError = error{
42 UnclosedPlaceholder,
43 UnknownInclude,
44 UnknownPlaceholder,
45 };
46
47 pub const Error = Exhaustion || TemplateError || error{CapacityOverflow};