{/if}
-{:else if design === "split-bands"}
-
-
-
-{:else if design === "dual-top-bands"}
-
-
-
-{:else if design === "colored-spine"}
-
-
-
{:else}
-
+ ev.key === "Enter" && onClick?.()}
+ role="link"
+ tabindex="0"
+ >
-
+
{/if}
-
diff --git a/src/ui/components/bookshelf/designs/book/BookOnDisplay.svelte b/src/ui/components/bookshelf/BookOnDisplay.svelte
similarity index 100%
rename from src/ui/components/bookshelf/designs/book/BookOnDisplay.svelte
rename to src/ui/components/bookshelf/BookOnDisplay.svelte
diff --git a/src/ui/components/bookshelf/BookText.svelte b/src/ui/components/bookshelf/BookText.svelte
index 86a7e0d..6295b89 100644
--- a/src/ui/components/bookshelf/BookText.svelte
+++ b/src/ui/components/bookshelf/BookText.svelte
@@ -1,4 +1,6 @@
-
- ev.key === "Enter" && onClick?.()}
- role="link"
- tabindex="0"
->
- {@render children?.()}
-
-
-
diff --git a/src/ui/components/bookshelf/designs/book/BookDefault.svelte b/src/ui/components/bookshelf/designs/book/BookDefault.svelte
deleted file mode 100644
index 1b2c41f..0000000
--- a/src/ui/components/bookshelf/designs/book/BookDefault.svelte
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
- ev.key === "Enter" && onClick?.()}
- role="link"
- tabindex="0"
->
- {@render children?.()}
-
-
-
diff --git a/src/ui/components/bookshelf/designs/book/BookDualTopBands.svelte b/src/ui/components/bookshelf/designs/book/BookDualTopBands.svelte
deleted file mode 100644
index 6b233e7..0000000
--- a/src/ui/components/bookshelf/designs/book/BookDualTopBands.svelte
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
- ev.key === "Enter" && onClick?.()}
- role="link"
- tabindex="0"
->
- {@render children?.()}
-
-
-
diff --git a/src/ui/components/bookshelf/designs/book/BookSplitBands.svelte b/src/ui/components/bookshelf/designs/book/BookSplitBands.svelte
deleted file mode 100644
index 6b233e7..0000000
--- a/src/ui/components/bookshelf/designs/book/BookSplitBands.svelte
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
- ev.key === "Enter" && onClick?.()}
- role="link"
- tabindex="0"
->
- {@render children?.()}
-
-
-
diff --git a/src/ui/directives/fitText.ts b/src/ui/directives/fitText.ts
new file mode 100644
index 0000000..bbcb980
--- /dev/null
+++ b/src/ui/directives/fitText.ts
@@ -0,0 +1,16 @@
+import type { ActionReturn } from "svelte/action";
+import { default as doTextFit, type TextFitOption } from "textfit";
+
+export function fitText(
+ el: HTMLElement,
+ opts: TextFitOption = {}
+): ActionReturn {
+ doTextFit(el, opts);
+
+ return {
+ update(opts) {
+ doTextFit(el, opts);
+ },
+ destroy() {},
+ };
+}
diff --git a/src/ui/directives/index.ts b/src/ui/directives/index.ts
index 7ff8d3d..e50e551 100644
--- a/src/ui/directives/index.ts
+++ b/src/ui/directives/index.ts
@@ -1 +1,3 @@
+export { chart } from "./chart";
export { clickOutside } from "./clickOutside";
+export { fitText } from "./fitText";
diff --git a/tsconfig.json b/tsconfig.json
index b8cec7a..f9d36fc 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -13,6 +13,7 @@
"strictNullChecks": true,
"verbatimModuleSyntax": true,
"skipLibCheck": true,
+ "allowSyntheticDefaultImports": true,
"lib": [
"DOM",
"ES5",