diff --git a/frontend/src/lib/components/reader/epub-reader.svelte b/frontend/src/lib/components/reader/epub-reader.svelte index 3cd4577..bd38bcb 100644 --- a/frontend/src/lib/components/reader/epub-reader.svelte +++ b/frontend/src/lib/components/reader/epub-reader.svelte @@ -1,7 +1,14 @@ + + + + + Reading + + {isFixedLayout + ? 'This book has a fixed layout, so its typography is set by the publisher.' + : 'Applies to every book you read.'} + + + +
+ {#if !isFixedLayout} +
+

+ Typography +

+ +
+ + state.set('fontFamily', event.currentTarget.value)} + > + {#each READER_FONT_OPTIONS as font (font.value)} + + {/each} + +
+ +
+
+ + + {state.settings.fontSize}px + +
+ +
+ +
+
+ + + {state.settings.fontWeight} + +
+ +
+ +
+
+ + + {state.settings.lineHeight.toFixed(2)} + +
+ +
+ +
+
+ + + {state.settings.letterSpacing.toFixed(2)}em + +
+ +
+ +
+ + state.set('justify', checked)} + /> +
+ +
+ + state.set('hyphenate', checked)} + /> +
+
+ + + {/if} + +
+

+ Layout +

+ +
+ + value && state.set('flow', value as ReaderFlow)} + class="justify-start" + > + Pages + Scroll + +
+ + {#if !isFixedLayout} +
+ + value && state.set('maxColumnCount', Number(value))} + class="justify-start" + > + Single + Spread + +

+ A spread needs the window to be wide enough for two columns. +

+
+ +
+
+ + + {state.settings.maxInlineSize}px + +
+ +
+ +
+
+ + + {state.settings.gap}% + +
+ +
+ {/if} + +
+
+ + + {state.settings.margin}px + +
+ +
+
+ + + + +
+
+
diff --git a/frontend/src/lib/components/ui/slider/index.ts b/frontend/src/lib/components/ui/slider/index.ts new file mode 100644 index 0000000..820f209 --- /dev/null +++ b/frontend/src/lib/components/ui/slider/index.ts @@ -0,0 +1,7 @@ +import Root from "./slider.svelte"; + +export { + Root, + // + Root as Slider, +}; diff --git a/frontend/src/lib/components/ui/slider/slider.svelte b/frontend/src/lib/components/ui/slider/slider.svelte new file mode 100644 index 0000000..ebfa45f --- /dev/null +++ b/frontend/src/lib/components/ui/slider/slider.svelte @@ -0,0 +1,52 @@ + + + + + {#snippet children({ thumbItems })} + + + + {#each thumbItems as thumb (thumb.index)} + + {/each} + {/snippet} +