+
+ {ticks.map((y, i) => (
+
+
+
scrollToTick(y)} />
+
+ ))}
+
+ {headings.map((h, i) => (
+
+ ))}
+
+ {headings.map((h, i) => (
+
+ ))}
+
+
+
+
+ )
+}
diff --git a/packages/chronicle/src/themes/paper/index.ts b/packages/chronicle/src/themes/paper/index.ts
new file mode 100644
index 00000000..103c7c78
--- /dev/null
+++ b/packages/chronicle/src/themes/paper/index.ts
@@ -0,0 +1,8 @@
+import { Layout } from './Layout'
+import { Page } from './Page'
+import type { Theme } from '../../types'
+
+export const paperTheme: Theme = {
+ Layout,
+ Page,
+}
diff --git a/packages/chronicle/src/themes/registry.ts b/packages/chronicle/src/themes/registry.ts
new file mode 100644
index 00000000..bba8e8c3
--- /dev/null
+++ b/packages/chronicle/src/themes/registry.ts
@@ -0,0 +1,14 @@
+import type { Theme } from '../types'
+import { defaultTheme } from './default'
+import { paperTheme } from './paper'
+
+const themes: Record
= {
+ default: defaultTheme,
+ paper: paperTheme,
+}
+
+export function getTheme(name?: string): Theme {
+ if (!name || !themes[name]) return defaultTheme
+
+ return themes[name]
+}
diff --git a/packages/chronicle/tsconfig.json b/packages/chronicle/tsconfig.json
index ecfaea9f..471ded2f 100644
--- a/packages/chronicle/tsconfig.json
+++ b/packages/chronicle/tsconfig.json
@@ -4,6 +4,7 @@
"outDir": "dist",
"rootDir": ".",
"baseUrl": ".",
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
"moduleResolution": "bundler",
"paths": {
"@/*": ["./src/*"],