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};