diff --git a/.changeset/many-apes-find.md b/.changeset/many-apes-find.md new file mode 100644 index 00000000..5e6920ed --- /dev/null +++ b/.changeset/many-apes-find.md @@ -0,0 +1,7 @@ +--- +'@youversion/platform-react-ui': patch +'@youversion/platform-core': patch +'@youversion/platform-react-hooks': patch +--- + +This change fixes a bug where the serif font failed to render properly in the Bible reader. diff --git a/packages/ui/src/components/bible-reader.stories.tsx b/packages/ui/src/components/bible-reader.stories.tsx index aae01dd2..4a581694 100644 --- a/packages/ui/src/components/bible-reader.stories.tsx +++ b/packages/ui/src/components/bible-reader.stories.tsx @@ -2,6 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite'; import { expect, fn, screen, spyOn, userEvent, waitFor } from 'storybook/test'; import { BibleReader } from './bible-reader'; import { setupAuthenticatedUser } from '../test/utils'; +import { INTER_FONT, SOURCE_SERIF_FONT } from '@/lib/verse-html-utils'; let signInMock: ReturnType; @@ -45,7 +46,7 @@ const meta: Meta = { }, fontFamily: { control: 'select', - options: ['Source Serif Pro', 'Inter', "'Georgia', serif", "'Nunito Sans', sans-serif"], + options: [SOURCE_SERIF_FONT, INTER_FONT, "'Georgia', serif", "'Nunito Sans', sans-serif"], description: 'Font family', }, showVerseNumbers: { @@ -127,11 +128,11 @@ export const Default: Story = { await userEvent.click(sourceSerifButton); await expect(localStorage.getItem('youversion-platform:reader:font-family')).toBe( - 'Source Serif', + SOURCE_SERIF_FONT, ); await userEvent.click(interButton); - await expect(localStorage.getItem('youversion-platform:reader:font-family')).toBe('Inter'); + await expect(localStorage.getItem('youversion-platform:reader:font-family')).toBe(INTER_FONT); }, }; @@ -501,7 +502,7 @@ export const LoadsSavedPreferencesFromLocalStorage: Story = { localStorage.clear(); // Pre-populate localStorage with saved preferences localStorage.setItem('youversion-platform:reader:font-size', '18'); - localStorage.setItem('youversion-platform:reader:font-family', 'Source Serif'); + localStorage.setItem('youversion-platform:reader:font-family', SOURCE_SERIF_FONT); }, render: (args) => (
@@ -526,7 +527,7 @@ export const LoadsSavedPreferencesFromLocalStorage: Story = { )!; await expect(verseContainer.style.getPropertyValue('--yv-reader-font-size')).toBe('18px'); await expect(verseContainer.style.getPropertyValue('--yv-reader-font-family')).toBe( - 'Source Serif', + SOURCE_SERIF_FONT, ); // Open settings and verify the correct font family button is active diff --git a/packages/ui/src/components/bible-reader.tsx b/packages/ui/src/components/bible-reader.tsx index b83cdd94..9b3fa285 100644 --- a/packages/ui/src/components/bible-reader.tsx +++ b/packages/ui/src/components/bible-reader.tsx @@ -27,6 +27,7 @@ import { PersonIcon } from './icons/person'; import { Button } from './ui/button'; import { Popover, PopoverContent, PopoverTrigger } from './ui/popover'; import { BibleTextView } from './verse'; +import { INTER_FONT, SOURCE_SERIF_FONT, type FontFamily } from '@/lib/verse-html-utils'; type BibleReaderContextType = { book: string; @@ -35,8 +36,8 @@ type BibleReaderContextType = { setBook: React.Dispatch>; setChapter: React.Dispatch>; setVersionId: React.Dispatch>; - currentFontFamily: string; - setCurrentFontFamily: React.Dispatch>; + currentFontFamily: FontFamily; + setCurrentFontFamily: React.Dispatch>; currentFontSize: number; setCurrentFontSize: React.Dispatch>; lineHeight?: number; @@ -64,7 +65,7 @@ export type RootProps = { versionId?: number; defaultVersionId?: number; onVersionChange?: (versionId: number) => void; - fontFamily?: string; + fontFamily?: FontFamily; fontSize?: number; lineHeight?: number; showVerseNumbers?: boolean; @@ -86,7 +87,7 @@ function Root({ versionId: controlledVersionId, defaultVersionId = DEFAULT_LICENSE_FREE_BIBLE_VERSION, onVersionChange, - fontFamily = 'Inter', + fontFamily = SOURCE_SERIF_FONT, fontSize = DEFAULT_FONT_SIZE, lineHeight, showVerseNumbers = true, @@ -396,18 +397,18 @@ function Toolbar({ border = 'top' }: { border?: 'top' | 'bottom' }) {