tiny.zen.theme
Defined in tiny.zen.
API (20)
Actions
Public operations.
Types and contracts
Public types and contracts.
ErrorFilesIncludeLoadedPageRenderCapacityRenderErrorRenderExhaustionRenderLimitsRenderPlanRenderStatusRenderStorageTheme
Values and defaults
Public values and defaults.
Source
Source: lib/zen/src/theme/defaults.zig:1
zig
pub const default_layout = "<!doctype html>\n" ++ "<html lang=\"{{language}}\">\n" ++ "<head>\n" ++ "<meta charset=\"utf-8\">\n" ++ "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n" ++ "<title>{{title}} - {{site.title}}</title>\n" ++ "<meta name=\"description\" content=\"{{description}}\">\n" ++ "<link rel=\"stylesheet\" href=\"/{{style.path}}\">\n" ++ "</head>\n" ++ "<body>\n" ++ "<main>\n" ++ "{{content}}\n" ++ "</main>\n" ++ "</body>\n" ++ "</html>\n";Source: lib/zen/src/theme/defaults.zig:18
zig
pub const default_style = ":root{color-scheme:light dark;font-family:Inter,ui-sans-serif,system-ui,sans-serif;line-height:1.55;background:#f7f7f4;color:#20231f}" ++ "body{margin:0}" ++ "main{max-width:72ch;margin:0 auto;padding:4rem 1.25rem}" ++ "h1,h2,h3{line-height:1.12}" ++ "a{color:#0b6bcb}" ++ "sup{line-height:0}" ++ "pre{overflow:auto;padding:1rem;background:#1f241f;color:#f4f6ef}" ++ "code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}" ++ ".zen-code-block{margin:1rem 0;border:1px solid #d6d6ce;background:#1f241f;color:#f4f6ef}" ++ ".zen-code-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem .8rem;border-bottom:1px solid rgba(244,246,239,.18);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem}" ++ ".zen-code-title{font-weight:700}" ++ ".zen-code-language{margin-left:auto;color:#b8c1aa;text-transform:uppercase;letter-spacing:.08em}" ++ ".zen-code{margin:0;padding:.8rem 0;overflow-x:auto;background:transparent;color:inherit}" ++ ".zen-code-wrap .zen-code{overflow-x:hidden}" ++ ".zen-code code{display:block;font-size:.9rem}" ++ ".zen-code-line{display:grid;grid-template-columns:3ch minmax(0,1fr);gap:.8rem;min-height:1.5em;padding:0 .85rem}" ++ ".zen-code-no-lines .zen-code-line{grid-template-columns:minmax(0,1fr)}" ++ ".zen-code-line-number{user-select:none;text-align:right;color:#8f987f}" ++ ".zen-code-line-source{min-width:0;white-space:pre}" ++ ".zen-code-wrap .zen-code-line-source{white-space:pre-wrap;overflow-wrap:anywhere}" ++ ".zen-code-keyword{color:#ffb86c}" ++ ".zen-code-type{color:#8be9fd}" ++ ".zen-code-string{color:#f1fa8c}" ++ ".zen-code-comment{color:#9aa17d}" ++ ".zen-code-number{color:#bd93f9}" ++ ".zen-code-builtin{color:#50fa7b}" ++ ".zen-code-constant{color:#ff79c6}" ++ "blockquote{border-left:4px solid #9aa17d;margin-left:0;padding-left:1rem;color:#4e5548}" ++ "main:has(>.zen-slides){max-width:none;padding:0}" ++ ".zen-slides{min-height:100vh;scroll-snap-type:y mandatory}" ++ ".zen-slide{min-height:100vh;box-sizing:border-box;display:grid;place-items:center;padding:1rem;scroll-snap-align:start}" ++ ".zen-slide-frame{box-sizing:border-box;container-type:inline-size;display:flex;flex-direction:column;justify-content:center;gap:1rem;width:min(calc(100vw - 2rem),calc(177.7778vh - 3.5556rem));height:min(calc(100vh - 2rem),calc(56.25vw - 1.125rem));padding:3.5rem 4rem;overflow:auto}" ++ ".zen-slide-frame>*{width:100%;max-width:68rem;margin-left:auto;margin-right:auto}" ++ ".zen-slide-frame>p:has(>img:only-child),.zen-slide-frame>p:has(>img.zen-slide-motion){position:relative;display:grid;flex:1 1 0;place-items:center;min-height:0;margin:0;overflow:hidden;line-height:0}.zen-slide-frame>p:has(>img:only-child):first-of-type,.zen-slide-frame>p:has(>img.zen-slide-motion):first-of-type{flex-grow:1.6}.zen-slide-frame>p:has(>img:only-child) img,.zen-slide-frame>p:has(>img.zen-slide-motion)>img,.zen-slide-frame>p:has(>img.zen-slide-motion)>object{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.zen-slide-frame img[data-zen-motion-src][hidden]{display:block;visibility:hidden}.zen-slide-frame object[data-zen-motion-live]:not([data-zen-motion-ready]){visibility:hidden}" ++ ".zen-slide-frame h1{font-size:clamp(1.1rem,5.2cqi,9rem);line-height:1;margin-bottom:.3rem}" ++ ".zen-slide-frame h2{font-size:clamp(.9rem,3.5cqi,6.5rem);line-height:1.08;margin-top:0}" ++ ".zen-slide-frame p,.zen-slide-frame li{font-size:clamp(.8rem,1.8cqi,3.2rem);line-height:1.36}" ++ ".zen-slide-frame ul,.zen-slide-frame ol{padding-left:2.1rem}" ++ ".zen-slide-frame math[display=\"block\"]{font-size:clamp(1rem,2cqi,3.6rem);line-height:1.2;text-align:center}" ++ ".zen-slide-frame img,.zen-slide-frame object,.zen-slide-frame svg,.zen-slide-frame video,.zen-slide-frame canvas,.zen-slide-frame math[display=\"block\"],.zen-slide-frame .zen-diagram,.zen-slide-frame .zen-code-block{max-width:100%}" ++ ".zen-slide-frame img,.zen-slide-frame object,.zen-slide-frame svg,.zen-slide-frame video,.zen-slide-frame canvas{max-height:68vh;object-fit:contain}" ++ ".zen-slide-frame .zen-code-block,.zen-slide-frame .zen-diagram{max-height:60vh;overflow:auto;font-size:clamp(.72rem,1.35cqi,2.4rem)}" ++ ".zen-speaker-notes[hidden]{display:none}" ++ "body.zen-print-notes .zen-speaker-notes[hidden]{display:block;margin-top:1rem;padding:1rem;border-top:1px solid #d6d6ce;font-size:1rem;color:#4e5548}" ++ ".zen-slide-toolbar{position:fixed;right:1rem;bottom:1rem;z-index:40;display:flex;align-items:center;gap:.35rem;padding:.35rem;border:1px solid #d6d6ce;background:#f7f7f4;color:#20231f;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;opacity:.28}" ++ ".zen-slide-toolbar:hover,.zen-slide-toolbar:focus-within{opacity:1}" ++ ".zen-slide-toolbar button,.zen-presenter-controls button{display:inline-grid;place-items:center;width:2rem;height:2rem;border:1px solid #d6d6ce;background:#fff;color:inherit;font:inherit}" ++ ".zen-slide-toolbar button svg,.zen-presenter-controls button svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}" ++ ".zen-slide-toolbar button:disabled{opacity:.35}.zen-slide-toolbar button[aria-pressed=\"true\"],.zen-presenter-controls button[aria-pressed=\"true\"]{background:#20231f;color:#f7f7f4}" ++ ".zen-slide-counter{min-width:4.5rem;text-align:center;font-size:.78rem}" ++ ".zen-slide-notes-panel{position:fixed;left:1rem;right:1rem;bottom:4.1rem;z-index:35;max-height:38vh;overflow:auto;padding:1rem;border:1px solid #d6d6ce;background:#f7f7f4;color:#20231f}" ++ ".zen-slide-notes-panel p{font-size:1rem;line-height:1.45}" ++ ".zen-slide-overview-panel{position:fixed;right:1rem;top:1rem;bottom:4.1rem;z-index:36;width:min(24rem,calc(100vw - 2rem));overflow:auto;padding:1rem;border:1px solid #d6d6ce;background:#f7f7f4;color:#20231f}" ++ ".zen-slide-overview-summary{display:grid;gap:.35rem;margin-bottom:.8rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82rem}.zen-slide-overview-panel ol{display:grid;gap:.35rem;list-style:none;margin:0;padding:0}.zen-slide-overview-panel button{display:grid;grid-template-columns:2.5rem minmax(0,1fr);gap:.2rem .5rem;width:100%;padding:.45rem;border:1px solid transparent;background:transparent;color:inherit;text-align:left;font:inherit}.zen-slide-overview-panel button[aria-current=\"true\"]{border-color:#20231f;background:#fff}.zen-slide-overview-panel em{grid-column:2;font-size:.78rem;color:#4e5548;font-style:normal}" ++ ".zen-presenter-view{display:none}" ++ "body.zen-presenter-mode{background:#f7f7f4;color:#20231f}" ++ "body.zen-presenter-mode .zen-slides{display:none}" ++ "body.zen-presenter-mode .zen-slide-toolbar{display:none}" ++ "body.zen-presenter-mode .zen-presenter-view{height:100vh;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);gap:1.5rem;padding:1.5rem}" ++ ".zen-presenter-current,.zen-presenter-side{min-width:0;min-height:0;border:1px solid #d6d6ce;background:#fff;padding:1rem;overflow:auto}.zen-presenter-current{display:grid;place-items:center}.zen-presenter-current .zen-slide-frame{width:100%;height:auto;aspect-ratio:16/9;padding:2rem}" ++ ".zen-presenter-side{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:1rem;overflow:hidden}.zen-presenter-notes-section{display:flex;flex-direction:column;min-height:0}" ++ ".zen-presenter-current p,.zen-presenter-current li{font-size:1.05rem}.zen-presenter-current .zen-code-block,.zen-presenter-current .zen-diagram{max-height:48vh;overflow:auto;font-size:.9rem}" ++ ".zen-presenter-meta{display:grid;grid-template-columns:repeat(3,max-content) 1fr;align-items:center;gap:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;color:#4e5548}.zen-presenter-controls{display:flex;justify-content:flex-end;gap:.35rem}.zen-presenter-notes-section>h2,.zen-presenter-next>h2{margin:.2rem 0 .5rem;font-size:1rem;line-height:1.1;color:#4e5548}.zen-presenter-notes{max-height:none;min-height:0;overflow:auto}.zen-presenter-notes p{font-size:1.08rem;line-height:1.5}.zen-presenter-next{padding-top:1rem;border-top:1px solid #d6d6ce}.zen-presenter-next-title{font-size:1.05rem;color:#4e5548}.zen-presenter-next-preview{margin-top:.65rem;max-height:none;overflow:hidden;border:1px solid #d6d6ce;background:#f7f7f4;padding:.75rem}.zen-presenter-next-preview .zen-slide-frame{width:100%;height:auto;aspect-ratio:16/9;gap:.35rem;padding:.65rem;overflow:hidden}.zen-presenter-next-preview p,.zen-presenter-next-preview li{font-size:.82rem;line-height:1.3}.zen-presenter-next-preview .zen-code-block,.zen-presenter-next-preview .zen-diagram{font-size:.68rem;max-height:8rem;overflow:hidden}" ++ "body.zen-presenter-dark{color-scheme:dark;background:#11100d;color:#f6f1e7}body.zen-presenter-dark .zen-presenter-current,body.zen-presenter-dark .zen-presenter-side,body.zen-presenter-dark .zen-presenter-next-preview{border-color:#4d4639;background:#171511;color:#f6f1e7}body.zen-presenter-dark .zen-presenter-current h1,body.zen-presenter-dark .zen-presenter-current h2,body.zen-presenter-dark .zen-presenter-current h3,body.zen-presenter-dark .zen-presenter-current p,body.zen-presenter-dark .zen-presenter-current li,body.zen-presenter-dark .zen-presenter-current math{color:#f6f1e7}body.zen-presenter-dark .zen-presenter-current .zen-diagram,body.zen-presenter-dark .zen-presenter-next-preview .zen-diagram{background:#f7f7f4;color:#20231f}body.zen-presenter-dark .zen-presenter-meta,body.zen-presenter-dark .zen-presenter-notes-section h2,body.zen-presenter-dark .zen-presenter-next h2,body.zen-presenter-dark .zen-presenter-next-title{color:#cdbf9a}body.zen-presenter-dark .zen-presenter-controls button{border-color:#4d4639;background:#211e18;color:#f6f1e7}body.zen-presenter-dark .zen-presenter-controls button[aria-pressed=\"true\"]{background:#cdbf9a;color:#11100d}" ++ "@media(max-width:720px){.zen-slide{padding:.5rem}.zen-slide-frame{width:min(calc(100vw - 1rem),calc(177.7778vh - 1.7778rem));height:min(calc(100vh - 1rem),calc(56.25vw - .5625rem));gap:.45rem;padding:1rem}.zen-slide-frame .zen-code-block,.zen-slide-frame .zen-diagram{max-height:54vh}.zen-slide-toolbar{left:1rem;right:1rem;justify-content:center}.zen-slide-notes-panel{bottom:4.3rem}.zen-slide-overview-panel{left:1rem;right:1rem;width:auto;bottom:4.3rem}body.zen-presenter-mode .zen-presenter-view{height:auto;grid-template-columns:1fr}.zen-presenter-notes{max-height:38vh}.zen-presenter-meta{grid-template-columns:repeat(2,max-content) 1fr}.zen-presenter-controls{grid-column:1/-1;justify-content:flex-start}}" ++ ".footnotes{margin-top:2.5rem;padding-top:1rem;border-top:1px solid #d6d6ce;font-size:.9rem}" ++ ".footnotes ol{padding-left:1.5rem}" ++ ".zen-page-badge{display:inline-block;margin-bottom:1.2rem;padding:.15rem .55rem;border:1.5px solid #b3261e;color:#b3261e;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem;font-weight:700;letter-spacing:.18em;text-indent:.18em}" ++ ".zen-quiz{margin:2.5rem 0;padding:1.25rem 1.5rem;border:1px solid #d6d6ce;background:#fff}" ++ ".zen-quiz-questions{margin:0;padding-left:1.25rem}" ++ ".zen-quiz-question{margin:1rem 0}" ++ ".zen-quiz-prompt{font-weight:600}" ++ ".zen-quiz-options{list-style:lower-alpha;padding-left:1.5rem}" ++ ".zen-quiz-answer{margin:.5rem 0}" ++ ".zen-quiz-answer summary{cursor:pointer;color:#0b6bcb}" ++ "math mtd:first-child{padding-left:0}" ++ "math mtd:last-child{padding-right:0}" ++ "mtable.zen-cases mtd{padding-left:0;padding-right:0;text-align:left}" ++ "mtable.zen-cases mtd+mtd{padding-left:1em}" ++ "mtable.zen-aligned mtd{padding:0.7ex 0}" ++ "mtable.zen-aligned mtd:nth-child(2n+3){padding-left:1em}" ++ "mtable.zen-aligned mtd:nth-child(odd){text-align:right}" ++ "mtable.zen-aligned mtd:nth-child(even){text-align:left}" ++ "@supports (not (-webkit-backdrop-filter:blur(1px))) and (not (-moz-appearance:none)){" ++ "mtable.zen-cases mtd{text-align:-webkit-left}" ++ "mtable.zen-aligned mtd:nth-child(odd){text-align:-webkit-right}" ++ "mtable.zen-aligned mtd:nth-child(even){text-align:-webkit-left}" ++ "}" ++ "img{max-width:100%;height:auto}\n";Source: lib/zen/src/theme/load.zig:75
zig
pub fn ownsPath(path: []const u8, files: Files) bool { if (files.dir.len == 0) return false; if (std.mem.eql(u8, path, files.dir)) return true; return path.len > files.dir.len and std.mem.startsWith(u8, path, files.dir) and std.fs.path.isSep(path[files.dir.len]);}Source: lib/zen/src/root.zig:40
zig
/// Page templates, source theme loading, and bounded page rendering.pub const theme = @import("theme/root.zig");Source: lib/zen/src/theme/root.zig
zig
const defaults = @import("defaults.zig");const capacity_mod = @import("capacity.zig");const fill = @import("fill.zig");const load_mod = @import("load.zig");const model = @import("model.zig");const plan_mod = @import("plan.zig");const storage_mod = @import("storage.zig");pub const default_layout = defaults.default_layout;pub const default_style = defaults.default_style;pub const Theme = model.Theme;pub const Files = model.Files;pub const Include = model.Include;pub const Page = model.Page;pub const RenderLimits = plan_mod.Limits;pub const default_render_limits = plan_mod.default_limits;pub const RenderPlan = plan_mod.Plan;pub const RenderCapacity = capacity_mod.Capacity;pub const default_render_capacity = capacity_mod.default_capacity;pub const RenderStorage = storage_mod.Storage;pub const RenderStatus = storage_mod.Status;pub const RenderExhaustion = model.Exhaustion;pub const RenderError = model.Error;pub const renderPage = fill.renderPage;pub const Loaded = load_mod.Loaded;pub const Error = load_mod.Error || RenderError;pub const load = load_mod.load;pub const ownsPath = load_mod.ownsPath;Audit
| Definitions | 4 |
|---|---|
| Public names | 4 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |