From 8ce3b24a0102184ea8b414ff1757f2e4a1a359c6 Mon Sep 17 00:00:00 2001 From: Maurice Date: Sat, 24 Oct 2026 19:17:56 +0200 Subject: [PATCH] feat(studio): 71 more designed pages and five new styles, each with a theme of its own Every style now has four covers and five double spreads, 108 in all, and the spreads of each style take different photo counts, from a words-only page to eight photos, so a book can be laid on them without an empty frame. The five new styles come with their own themes: Riso (overprinted spot inks), Magazine (a travel magazine), Retro travel (vintage posters), Midnight (a dark film look) and Field notes (a traveller's notebook). Each new style has a cover composer for the design engine and a recipe for the assistant, and its chip, theme and template names are translated into every language. --- .../cards/bookDesign/bookDesignModel.ts | 5 + .../templates/StudioTemplatesPanel.test.tsx | 2 +- .../Studio/theme/StudioThemePanel.tsx | 2 +- client/tests/unit/studio/studioTheme.test.tsx | 4 +- .../assistant-book-recipes.prompt.ts | 5 + .../assistant-book-recipes.prompt.test.ts | 4 +- .../nest/journey-book-templates.mcp.test.ts | 8 +- shared/src/book/book-archetypes.ts | 12 +- shared/src/book/design/design-brief.schema.ts | 5 + shared/src/book/design/design-brief.spec.ts | 2 +- .../src/book/design/design-cover-editorial.ts | 108 + .../book/design/design-cover-field-notes.ts | 155 + shared/src/book/design/design-cover-kit.ts | 27 +- .../book/design/design-cover-night-film.ts | 142 + shared/src/book/design/design-cover-riso.ts | 117 + .../design/design-cover-vintage-poster.ts | 96 + shared/src/book/design/design-cover.spec.ts | 35 +- shared/src/book/design/design-cover.ts | 12 +- .../book/templates/data/more-cutout.data.ts | 1187 ++++++ .../templates/data/more-grid-badge.data.ts | 844 ++++ .../templates/data/more-minimal-serif.data.ts | 637 +++ .../book/templates/data/more-postcard.data.ts | 793 ++++ .../templates/data/more-poster-pop.data.ts | 1057 +++++ .../templates/data/more-spine-band.data.ts | 1197 ++++++ .../templates/data/more-stamp-collage.data.ts | 1060 +++++ .../book/templates/data/new-editorial.data.ts | 2002 +++++++++ .../templates/data/new-field-notes.data.ts | 3168 ++++++++++++++ .../templates/data/new-night-film.data.ts | 3651 +++++++++++++++++ .../src/book/templates/data/new-riso.data.ts | 2189 ++++++++++ .../templates/data/new-vintage-poster.data.ts | 2583 ++++++++++++ .../book/templates/template-catalogue.spec.ts | 18 +- .../src/book/templates/template-catalogue.ts | 50 +- shared/src/book/theme/book-theme.schema.ts | 5 + shared/src/book/theme/book-theme.spec.ts | 4 +- shared/src/book/theme/book-themes.data.ts | 88 +- shared/src/i18n/ar/studioTemplates.ts | 76 + shared/src/i18n/ar/studioThemes.ts | 10 + shared/src/i18n/az/studioTemplates.ts | 76 + shared/src/i18n/az/studioThemes.ts | 10 + shared/src/i18n/br/studioTemplates.ts | 76 + shared/src/i18n/br/studioThemes.ts | 10 + shared/src/i18n/ca/studioTemplates.ts | 76 + shared/src/i18n/ca/studioThemes.ts | 10 + shared/src/i18n/cs/studioTemplates.ts | 76 + shared/src/i18n/cs/studioThemes.ts | 10 + shared/src/i18n/de/studioTemplates.ts | 76 + shared/src/i18n/de/studioThemes.ts | 10 + shared/src/i18n/en/studioTemplates.ts | 76 + shared/src/i18n/en/studioThemes.ts | 10 + shared/src/i18n/es/studioTemplates.ts | 76 + shared/src/i18n/es/studioThemes.ts | 10 + shared/src/i18n/et/studioTemplates.ts | 76 + shared/src/i18n/et/studioThemes.ts | 10 + shared/src/i18n/fr/studioTemplates.ts | 76 + shared/src/i18n/fr/studioThemes.ts | 10 + shared/src/i18n/gr/studioTemplates.ts | 76 + shared/src/i18n/gr/studioThemes.ts | 10 + shared/src/i18n/hu/studioTemplates.ts | 76 + shared/src/i18n/hu/studioThemes.ts | 10 + shared/src/i18n/id/studioTemplates.ts | 76 + shared/src/i18n/id/studioThemes.ts | 10 + shared/src/i18n/it/studioTemplates.ts | 76 + shared/src/i18n/it/studioThemes.ts | 10 + shared/src/i18n/ja/studioTemplates.ts | 76 + shared/src/i18n/ja/studioThemes.ts | 10 + shared/src/i18n/ko/studioTemplates.ts | 76 + shared/src/i18n/ko/studioThemes.ts | 10 + shared/src/i18n/nl/studioTemplates.ts | 76 + shared/src/i18n/nl/studioThemes.ts | 10 + shared/src/i18n/pl/studioTemplates.ts | 76 + shared/src/i18n/pl/studioThemes.ts | 10 + shared/src/i18n/ru/studioTemplates.ts | 76 + shared/src/i18n/ru/studioThemes.ts | 10 + shared/src/i18n/sk/studioTemplates.ts | 76 + shared/src/i18n/sk/studioThemes.ts | 10 + shared/src/i18n/sv/studioTemplates.ts | 76 + shared/src/i18n/sv/studioThemes.ts | 10 + shared/src/i18n/th/studioTemplates.ts | 76 + shared/src/i18n/th/studioThemes.ts | 10 + shared/src/i18n/tr/studioTemplates.ts | 76 + shared/src/i18n/tr/studioThemes.ts | 10 + shared/src/i18n/uk/studioTemplates.ts | 76 + shared/src/i18n/uk/studioThemes.ts | 10 + shared/src/i18n/vi/studioTemplates.ts | 76 + shared/src/i18n/vi/studioThemes.ts | 10 + shared/src/i18n/zh-TW/studioTemplates.ts | 76 + shared/src/i18n/zh-TW/studioThemes.ts | 10 + shared/src/i18n/zh/studioTemplates.ts | 76 + shared/src/i18n/zh/studioThemes.ts | 10 + wiki/Journey-Journal.md | 2 +- 90 files changed, 23566 insertions(+), 32 deletions(-) create mode 100644 shared/src/book/design/design-cover-editorial.ts create mode 100644 shared/src/book/design/design-cover-field-notes.ts create mode 100644 shared/src/book/design/design-cover-night-film.ts create mode 100644 shared/src/book/design/design-cover-riso.ts create mode 100644 shared/src/book/design/design-cover-vintage-poster.ts create mode 100644 shared/src/book/templates/data/more-cutout.data.ts create mode 100644 shared/src/book/templates/data/more-grid-badge.data.ts create mode 100644 shared/src/book/templates/data/more-minimal-serif.data.ts create mode 100644 shared/src/book/templates/data/more-postcard.data.ts create mode 100644 shared/src/book/templates/data/more-poster-pop.data.ts create mode 100644 shared/src/book/templates/data/more-spine-band.data.ts create mode 100644 shared/src/book/templates/data/more-stamp-collage.data.ts create mode 100644 shared/src/book/templates/data/new-editorial.data.ts create mode 100644 shared/src/book/templates/data/new-field-notes.data.ts create mode 100644 shared/src/book/templates/data/new-night-film.data.ts create mode 100644 shared/src/book/templates/data/new-riso.data.ts create mode 100644 shared/src/book/templates/data/new-vintage-poster.data.ts diff --git a/client/src/components/Assistant/cards/bookDesign/bookDesignModel.ts b/client/src/components/Assistant/cards/bookDesign/bookDesignModel.ts index 9877129ae..fca506c10 100644 --- a/client/src/components/Assistant/cards/bookDesign/bookDesignModel.ts +++ b/client/src/components/Assistant/cards/bookDesign/bookDesignModel.ts @@ -37,6 +37,11 @@ const STYLE_LOOK: Readonly> = { nordic: { labelKey: 'studio.theme.name.nordic' }, alpine: { labelKey: 'studio.theme.name.alpine' }, 'india-stamp': { labelKey: 'studio.theme.name.indiaStamp' }, + riso: { labelKey: 'studio.theme.name.riso' }, + magazine: { labelKey: 'studio.theme.name.magazine' }, + 'retro-travel': { labelKey: 'studio.theme.name.retroTravel' }, + midnight: { labelKey: 'studio.theme.name.midnight' }, + 'field-notes': { labelKey: 'studio.theme.name.fieldNotes' }, }; type Translate = (key: string, params?: Record) => string; diff --git a/client/src/components/Studio/templates/StudioTemplatesPanel.test.tsx b/client/src/components/Studio/templates/StudioTemplatesPanel.test.tsx index 6eac5bbdd..b1e1cc118 100644 --- a/client/src/components/Studio/templates/StudioTemplatesPanel.test.tsx +++ b/client/src/components/Studio/templates/StudioTemplatesPanel.test.tsx @@ -90,7 +90,7 @@ describe('the Templates panel', () => { it('narrows the set to one archetype from the style chips', () => { panel(); const chips = screen.getByRole('radiogroup', { name: 'studio.templates.style' }); - expect(chips.querySelectorAll('[role="radio"]')).toHaveLength(8); + expect(chips.querySelectorAll('[role="radio"]')).toHaveLength(13); fireEvent.click(screen.getByRole('radio', { name: 'studio.templates.archetype.postcard' })); expect( screen.getByRole('radio', { name: 'studio.templates.archetype.postcard' }).getAttribute('aria-checked') diff --git a/client/src/components/Studio/theme/StudioThemePanel.tsx b/client/src/components/Studio/theme/StudioThemePanel.tsx index d997a023f..3129ff6a8 100644 --- a/client/src/components/Studio/theme/StudioThemePanel.tsx +++ b/client/src/components/Studio/theme/StudioThemePanel.tsx @@ -22,7 +22,7 @@ import { ThemeSheet } from './ThemeSheet'; import { useStudioTheme } from './useStudioTheme'; /** - * The Theme section of the rail: twelve built-in looks, the palette, the + * The Theme section of the rail: seventeen built-in looks, the palette, the * typefaces and the motifs of the one being put together, and applying it to * the book or to the page that is open. * diff --git a/client/tests/unit/studio/studioTheme.test.tsx b/client/tests/unit/studio/studioTheme.test.tsx index 5676c6d26..7562241a0 100644 --- a/client/tests/unit/studio/studioTheme.test.tsx +++ b/client/tests/unit/studio/studioTheme.test.tsx @@ -179,12 +179,12 @@ describe('applying a theme', () => { }); describe('the Theme panel', () => { - it('FE-STUDIO-THEME-007: shows twelve themes, applies the one picked and says so', () => { + it('FE-STUDIO-THEME-007: shows seventeen themes, applies the one picked and says so', () => { render(); const cards = screen .getAllByRole('button', { pressed: false }) .filter((b) => b.classList.contains('st-theme-card')); - expect(cards).toHaveLength(11); + expect(cards).toHaveLength(16); fireEvent.click(screen.getByTitle('studio.theme.descr.riviera')); fireEvent.click(screen.getByText('studio.theme.applyBook')); expect(doc().theme?.id).toBe('riviera'); diff --git a/server/src/nest/assistant/assistant-book-recipes.prompt.ts b/server/src/nest/assistant/assistant-book-recipes.prompt.ts index 4b7012efe..2bde900ec 100644 --- a/server/src/nest/assistant/assistant-book-recipes.prompt.ts +++ b/server/src/nest/assistant/assistant-book-recipes.prompt.ts @@ -46,6 +46,11 @@ Recipes, for a cover built or tweaked by hand, as JSON: each object one element - grid-badge: [{"kind":"photo","photoId":"cover","frame":[-2,-2,50.8,50.8]},{"kind":"photo","photoId":"2","frame":[51.2,-2,50.8,50.8]},{"kind":"photo","photoId":"3","frame":[-2,51.2,50.8,50.8]},{"kind":"photo","photoId":"4","frame":[51.2,51.2,50.8,50.8]},{"lockup":"circle-badge","box":[29,29,42,42]}], a cross of paper 2.4 % (5 mm) wide, the badge off every photo's focal point. - minimal-serif: [{"kind":"photo","photoId":"cover","frame":[8,8,84,53],"border":{"width":0.3,"color":"ink"}},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"ink","size":80,"leading":1,"frame":[8,64,84,17]},{"kind":"text","binding":{"source":"journey.subtitle"},"fontRole":"heading","token":"ink","size":11,"frame":[8,82,84,3]},{"kind":"shape","shape":"rect","token":"ink","frame":[28,88.4,20,0.15]},{"kind":"shape","shape":"sun","token":"accent","frame":[48.5,87,3,3]},{"kind":"shape","shape":"rect","token":"ink","frame":[52,88.4,20,0.15]},{"kind":"text","text":"2026","size":8,"frame":[8,92,84,3]}] - stamp-collage: [{"kind":"shape","shape":"rect","paint":{"type":"pattern","pattern":"checker","fg":"accent","bg":"paper","scale":1,"angle":0},"frame":[-2,-2,104,36]},{"kind":"photo","photoId":"cover","frame":[8,19,26,31],"rotation":-4,"edge":"perforated","edgeSize":3,"border":{"width":2.2,"color":"#ffffff"}},{"kind":"photo","photoId":"2","frame":[37,17,26,34],"rotation":3,"mask":"arch-tall","cutout":{"width":1.8,"color":"#ffffff"}},{"kind":"photo","photoId":"3","frame":[66,19,26,31],"rotation":-3,"edge":"perforated","edgeSize":3,"border":{"width":2.2,"color":"#ffffff"}},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"ink","size":90,"weight":800,"transform":"upper","align":"left","frame":[8,62,52,18]},{"kind":"text","text":"May 2026","size":9,"frame":[8,81,52,4]},{"lockup":"postmark","box":[62,60,30,30]}] +- riso: [{"kind":"shape","shape":"ellipse","token":"accent2","opacity":0.85,"frame":[8,46,52,52]},{"kind":"shape","shape":"ellipse","paint":{"type":"pattern","pattern":"dots","fg":"accent","bg":null,"scale":0.4,"angle":45},"frame":[11,44,52,52]},{"kind":"shape","shape":"rect","token":"accent","frame":[37,50,52,42],"rotation":2},{"kind":"photo","photoId":"cover","frame":[39,48,52,42],"rotation":2},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"ink","size":90,"transform":"upper","leading":0.92,"align":"left","shadow":{"dx":1.6,"dy":1.6,"color":"accent","alpha":1},"frame":[8,8,84,30]},{"kind":"text","text":"2026","size":9,"highlight":{"color":"accent2"},"frame":[8,88,20,4]}], the block and the discs a few mm out of register. +- editorial: [{"kind":"photo","photoId":"cover","frame":[-2,37,104,65]},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"ink","size":96,"weight":800,"transform":"upper","leading":0.9,"frame":[8,8,84,19]},{"kind":"shape","shape":"rect","token":"ink","frame":[8,27.5,84,0.2]},{"kind":"text","text":"May 2026","size":8,"align":"left","frame":[8,29,40,3]},{"kind":"shape","shape":"rect","token":"accent","frame":[8,74,44,18]},{"kind":"text","binding":{"source":"journey.subtitle"},"fontRole":"heading","token":"paper","size":16,"align":"left","frame":[12,78,36,10]}], the block off the photo's focal point. +- vintage-poster: [{"kind":"shape","shape":"rect","fill":null,"strokeToken":"ink","strokeWidth":0.6,"frame":[1.7,1.7,96.6,96.6]},{"kind":"shape","shape":"rect","token":"accent3","frame":[3.3,3.3,93.4,58]},{"kind":"shape","shape":"sunburst-24","token":"accent","opacity":0.5,"frame":[24,6,52,52]},{"kind":"shape","shape":"ellipse","token":"accent","frame":[34,16,32,32]},{"kind":"shape","shape":"mountain","token":"accent2","frame":[3.3,32,64,29.3]},{"kind":"shape","shape":"mountain","token":"ink","opacity":0.8,"frame":[36,40,60.7,21.3]},{"kind":"photo","photoId":"cover","frame":[38,14,24,44],"mask":"arch-tall","cutout":{"width":2,"color":"#ffffff"}},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"ink","size":80,"transform":"upper","leading":0.92,"frame":[8,66,84,20]},{"kind":"text","text":"May 2026","size":9,"frame":[8,88,84,4]}] +- night-film: [{"background":"ink"},{"kind":"text","text":"May 2026","font":"mono","token":"accent","size":8,"tracking":0.2,"align":"left","frame":[8,8,40,3]},{"kind":"photo","photoId":"cover","frame":[-2,14,104,40]},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"paper","size":72,"transform":"upper","tracking":0.14,"align":"left","frame":[8,58,84,16]},{"kind":"shape","shape":"rect","token":"accent","frame":[8,76,16,0.4]},{"kind":"shape","shape":"rect","token":"paper","opacity":0.12,"frame":[-2,80,104,18]},{"kind":"line","stroke":"#f2efe8","strokeWidth":1.6,"dash":"dashed","frame":[-2,81.5,104,1]},{"kind":"line","stroke":"#f2efe8","strokeWidth":1.6,"dash":"dashed","frame":[-2,95.5,104,1]},{"kind":"photo","photoId":"2","frame":[8,84,26,10]},{"kind":"photo","photoId":"3","frame":[37,84,26,10]},{"kind":"photo","photoId":"4","frame":[66,84,26,10]}], paper and ink swapped in a dark theme. +- field-notes: [{"kind":"shape","shape":"rect","paint":{"type":"pattern","pattern":"grid","fg":"accent3","bg":"accent2","scale":0.6,"angle":0},"frame":[4,4,92,92],"rotation":-1.5},{"kind":"shape","shape":"leaf-long","token":"accent3","frame":[2,40,9,40],"rotation":-20},{"kind":"photo","photoId":"cover","frame":[10,10,48,40],"rotation":-3,"border":{"width":2.6,"color":"#ffffff"}},{"kind":"shape","shape":"rect","token":"accent2","opacity":0.72,"edge":"zigzag","edgeSize":1,"frame":[24,8,19,3.3],"rotation":4},{"kind":"photo","photoId":"2","frame":[62,17,28,27],"rotation":4,"border":{"width":2.6,"color":"#ffffff"}},{"kind":"text","binding":{"source":"journey.title"},"fontRole":"display","token":"ink","size":60,"align":"left","frame":[8,62,46,18]},{"kind":"text","binding":{"source":"journey.subtitle"},"fontRole":"script","token":"accent","size":26,"align":"left","frame":[8,80,46,8]},{"kind":"text","text":"May 2026","font":"mono","size":8,"align":"left","frame":[8,89,46,3]}] Lively spreads, in percent of the double page (the fold at 50); photos 1 to 4 are the page's, entry its entry id: - script overlay: [{"kind":"photo","photoId":"1","focalX":0.3,"frame":[-1,-2,102,104]},{"kind":"text","binding":{"source":"entry.location","entryId":"entry"},"fontRole":"script","size":120,"color":"#ffffff","outline":{"color":"#1a1a1a","width":2.9},"frame":[55,26,40,30],"rotation":-6},{"kind":"text","binding":{"source":"entry.title","entryId":"entry"},"token":"ink","size":9,"highlight":{"color":"paper"},"frame":[57,62,36,4]}], the photo's detail off the fold and the word. - collage: [{"kind":"photo","photoId":"1","frameStyle":"polaroid","frame":[6,10,26,36],"rotation":-5},{"kind":"photo","photoId":"2","frameStyle":"white","frame":[22,42,24,32],"rotation":4},{"kind":"photo","photoId":"3","frameStyle":"tape","frame":[56,12,30,40],"rotation":-3},{"kind":"photo","photoId":"4","frameStyle":"white","frame":[66,52,26,34],"rotation":6},{"kind":"sticker","stickerId":"motif","frame":[39,8,7,10],"rotation":8}], up to 3 prints a page turned 3 to 7 degrees either way, none across the fold or over another's focal point. diff --git a/server/tests/unit/nest/assistant/assistant-book-recipes.prompt.test.ts b/server/tests/unit/nest/assistant/assistant-book-recipes.prompt.test.ts index 8a040c4f6..4ad83634a 100644 --- a/server/tests/unit/nest/assistant/assistant-book-recipes.prompt.test.ts +++ b/server/tests/unit/nest/assistant/assistant-book-recipes.prompt.test.ts @@ -130,7 +130,7 @@ describe('the art director in the Studio', () => { const paint = i.paint as { pattern?: string } | undefined; return paint?.pattern ? [paint.pattern] : []; }); - expect(patterns).toEqual(['checker']); + expect(patterns).toEqual(['checker', 'dots', 'grid']); for (const id of patterns) expect(BOOK_PATTERNS as readonly string[]).toContain(id); }); @@ -154,7 +154,7 @@ describe('the art director in the Studio', () => { }); it('ASTRCP-004: keeps to a budget the cache carries every turn, without dashes', () => { - expect(BOOK_RECIPES_PROMPT.length).toBeLessThan(9500); + expect(BOOK_RECIPES_PROMPT.length).toBeLessThan(14500); expect(BOOK_RECIPES_PROMPT.split('\n').length).toBeLessThanOrEqual(24); expect(BOOK_RECIPES_PROMPT).not.toMatch(/[\u2013\u2014]/); expect(BOOK_RECIPES_PROMPT).not.toContain(' - '); diff --git a/server/tests/unit/nest/journey-book-templates.mcp.test.ts b/server/tests/unit/nest/journey-book-templates.mcp.test.ts index 0c5e147a5..f04813b77 100644 --- a/server/tests/unit/nest/journey-book-templates.mcp.test.ts +++ b/server/tests/unit/nest/journey-book-templates.mcp.test.ts @@ -74,9 +74,9 @@ describe('decorated templates in list_book_layouts', () => { const all = json(await mcp.listLayouts({ journeyId: journey.id }, ctx(viewer.id))); const single = all.decorated.single as Row[]; const inner = all.decorated.inner as Row[]; - expect(single).toHaveLength(21); - expect(inner).toHaveLength(16); - expect(new Set(single.map((r) => r.archetype)).size).toBe(7); + expect(single).toHaveLength(48); + expect(inner).toHaveLength(60); + expect(new Set(single.map((r) => r.archetype)).size).toBe(12); expect(single.find((r) => r.id === 'grid-badge-circle')).toMatchObject({ archetype: 'grid-badge', photoSlots: 4, @@ -86,7 +86,7 @@ describe('decorated templates in list_book_layouts', () => { expect(all.notes.decorated).toMatch(/whole designed page/); const narrowed = json(await mcp.listLayouts({ journeyId: journey.id, role: 'single' }, ctx(owner.id))); - expect([narrowed.decorated.single.length, narrowed.decorated.inner]).toEqual([21, []]); + expect([narrowed.decorated.single.length, narrowed.decorated.inner]).toEqual([48, []]); }); }); diff --git a/shared/src/book/book-archetypes.ts b/shared/src/book/book-archetypes.ts index f85402e25..992f8ec30 100644 --- a/shared/src/book/book-archetypes.ts +++ b/shared/src/book/book-archetypes.ts @@ -1,5 +1,5 @@ /** - * The seven cover archetypes a decorated book starts from: the Studio's cover + * The twelve cover archetypes a decorated book starts from: the Studio's cover * templates are drawn in them, and the assistant's art direction names one. * * - spine-band: a bleed photo with a coloured band on the binding side. @@ -9,6 +9,11 @@ * - grid-badge: a two by two photo grid with a round title badge at its centre. * - minimal-serif: a white page, a large photo with a hairline, a very large thin serif title. * - stamp-collage: photos in arches and stamps over a checker band, with a round postmark. + * - riso: a risograph print, spot inks overprinted a little out of register, halftone dots, bold type. + * - editorial: a travel magazine, a huge masthead, thin rules, an issue line, a photo edge to edge. + * - vintage-poster: a 1950s travel poster, flat layered mountains under a sun, a stacked title, a thin frame. + * - night-film: a dark cinematic page, a letterboxed photo, a film strip with sprocket holes, a neon accent. + * - field-notes: a traveller's notebook, squared paper, prints taped in at an angle, pressed leaves. */ export const BOOK_COVER_ARCHETYPES = [ 'spine-band', @@ -18,5 +23,10 @@ export const BOOK_COVER_ARCHETYPES = [ 'grid-badge', 'minimal-serif', 'stamp-collage', + 'riso', + 'editorial', + 'vintage-poster', + 'night-film', + 'field-notes', ] as const; export type BookCoverArchetype = (typeof BOOK_COVER_ARCHETYPES)[number]; diff --git a/shared/src/book/design/design-brief.schema.ts b/shared/src/book/design/design-brief.schema.ts index 1072a1e3b..e0cb85e7c 100644 --- a/shared/src/book/design/design-brief.schema.ts +++ b/shared/src/book/design/design-brief.schema.ts @@ -32,6 +32,11 @@ export const BOOK_COVER_ARCHETYPE_LINES: Readonly { for (const theme of BOOK_THEME_IDS) expect(bookDesignBriefSchema.safeParse({ theme }).success, theme).toBe(true); }); - it('DSNBRF-003: the cover takes an archetype of the seven and a lockup of the Text styles shelf', () => { + it('DSNBRF-003: the cover takes an archetype of the twelve and a lockup of the Text styles shelf', () => { for (const archetype of BOOK_COVER_ARCHETYPES) expect(ok({ cover: { archetype } }), archetype).toBe(true); for (const lockup of BOOK_LOCKUPS) expect(ok({ cover: { lockup: lockup.id } }), lockup.id).toBe(true); expect(ok({ cover: { archetype: 'collage' } })).toBe(false); diff --git a/shared/src/book/design/design-cover-editorial.ts b/shared/src/book/design/design-cover-editorial.ts new file mode 100644 index 000000000..1684f2e1f --- /dev/null +++ b/shared/src/book/design/design-cover-editorial.ts @@ -0,0 +1,108 @@ +import type { BookElement, BookFrame, BookPhotoElement, BookTextElement } from '../book.schema'; +import { frameOf } from './design-compose'; +import { + addLockup, + bandPhoto, + coverText, + deepened, + inkOn, + mmOn, + mmToPt, + shapeEl, + spacedLine, + standOut, + titleText, + type CoverDraft, + type CoverKit, +} from './design-cover-kit'; + +/** + * Editorial: the cover of a travel magazine. The title as a huge masthead + * across the top of the paper, a thin rule under it with the issue line (the + * month on the left, the place on the right), the cover photo edge to edge + * below (a field of colour without one), and the subtitle as the cover line + * on a block of the accent in a lower corner, off the picture's detail. + */ + +const holds = (b: BookFrame, x: number, y: number) => x >= b.x && x <= b.x + b.w && y >= b.y && y <= b.y + b.h; + +/** A short line of spaced capitals set flush to one side. */ +function issueLine( + k: CoverKit, + words: string, + frame: BookFrame, + color: string, + align: 'left' | 'right', +): BookTextElement { + return { ...spacedLine(k, words, frame, color, 8), align }; +} + +/** Where the cover line's block may lie: the lower left corner, else the lower right, clear of the photo's detail. */ +function coverLineBox(k: CoverKit, print: BookPhotoElement | null, w: number, h: number): BookFrame | null { + const { W, H, m } = k; + const corners = [frameOf(m, H - m - h, w, h), frameOf(W - m - w, H - m - h, w, h)]; + if (!print) return corners[0] ?? null; + const fx = print.frame.x + print.focalX * print.frame.w; + const fy = print.frame.y + print.focalY * print.frame.h; + return corners.find((b) => !holds(frameOf(b.x - 3, b.y - 3, b.w + 6, b.h + 6), fx, fy)) ?? null; +} + +export function editorial(k: CoverKit): CoverDraft { + const { c, W, H, b, m } = k; + const draft: CoverDraft = { elements: [], groups: [] }; + const ground = c.look.paper; + const ink = inkOn(c, ground); + const mast = H * k.rng.range(0.24, 0.28); + const zone = frameOf(m, m, W - m * 2, mast - m); + const ruleY = mast + mmOn(k, 1.5); + const lineY = ruleY + mmOn(k, 2); + const lineH = mmOn(k, 6); + const top = lineY + lineH + mmOn(k, 3); + const photo = k.photos[0]; + const print = photo ? bandPhoto(k, photo, frameOf(-b, top, W + b * 2, H - top + b)) : null; + // Without a photo its place is a field of colour, as a magazine prints a cover of type alone. + draft.elements.push(print ?? shapeEl(k, 'rect', frameOf(-b, top, W + b * 2, H - top + b), standOut(c, ground))); + const head: BookElement[] = []; + const asked = addLockup(k, draft, { box: zone, ground }); + if (!asked.length && k.title.words.trim()) { + head.push( + titleText(k, zone, { + max: mmToPt(zone.h * 0.82), + color: ink, + transform: 'upper', + leading: 0.9, + weight: 800, + }), + ); + } + const thin = Math.max(0.3, mmOn(k, 0.4)); + head.push(shapeEl(k, 'rect', frameOf(m, ruleY, W - m * 2, thin), ink)); + const half = (W - m * 2) / 2 - mmOn(k, 2); + const left = k.words.dates || k.words.year || ''; + const place = k.words.place ?? ''; + if (left) head.push(issueLine(k, left, frameOf(m, lineY, half, lineH), ink, 'left')); + if (place && place !== left) head.push(issueLine(k, place, frameOf(W - m - half, lineY, half, lineH), ink, 'right')); + draft.elements.push(...head); + if (head.length > 1) draft.groups.push(head.map((e) => e.id)); + // The cover line: the subtitle on a block of the accent over the photo, or on the paper without one. + const sub = k.sub.words.trim(); + if (!sub || asked.length) return draft; + const bw = W * k.rng.range(0.42, 0.5); + const bh = Math.min(mmOn(k, 30), (H - top) * 0.36); + const box = coverLineBox(k, print, bw, bh); + if (!box) return draft; + const block = deepened(print ? standOut(c, ground) : inkOn(c, ground)); + const pad = mmOn(k, 4); + const words = coverText(k, sub, frameOf(box.x + pad, box.y + pad, box.w - pad * 2, box.h - pad * 2), { + slot: 'heading', + max: 16, + color: inkOn(c, block), + align: 'left', + leading: 1.1, + }); + const line = k.sub.bound ? { ...words, binding: { source: 'journey.subtitle' as const } } : words; + const parts = [shapeEl(k, 'rect', box, block), line]; + draft.elements.push(...parts); + draft.groups.push(parts.map((e) => e.id)); + return draft; +} diff --git a/shared/src/book/design/design-cover-field-notes.ts b/shared/src/book/design/design-cover-field-notes.ts new file mode 100644 index 000000000..bf3e8253f --- /dev/null +++ b/shared/src/book/design/design-cover-field-notes.ts @@ -0,0 +1,155 @@ +import { deltaE, luminance, parseHex } from '../book-colour'; +import { solveBookTextFit } from '../book-text-fit'; +import type { BookElement, BookFrame, BookPhotoElement, BookShapeId, BookTextElement } from '../book.schema'; +import { mixHex } from '../theme/book-theme'; +import { CALM_ART } from './design-art'; +import { frameOf } from './design-compose'; +import { + accentOn, + addLockup, + clearOfTrim, + coverText, + inkOn, + keptTurn, + mmOn, + mmToPt, + printEl, + shapeEl, + titleText, + type CoverDraft, + type CoverKit, +} from './design-cover-kit'; +import { placeStickers, sharedArea, turnedBox } from './design-stickers'; + +/** + * Field notes: a page of a traveller's notebook. A sheet of squared paper + * laid a little askew on the kraft, the photos taped in as prints turned a + * few degrees each way with a strip of tape over their top edge, pressed + * leaves beside them, and under them the title in the display face, the + * subtitle (or the place) in the script, and the dates in mono. + */ + +const WHITE = '#ffffff'; +const lum = (hex: string) => luminance(parseHex(hex) ?? { r: 255, g: 255, b: 255 }); + +/** The sheet's paper: a light colour of the palette apart from the page, else the page lightened. */ +function sheetOf(paper: string, accent2: string): string { + const tried = [accent2, mixHex(paper, WHITE, 0.6), '#f8f4ea']; + return tried.find((h) => lum(h) >= 0.72 && deltaE(h, paper) > 6) ?? '#f8f4ea'; +} + +/** Where the prints go, as shares of the page: a large one, one beside it and a small one under that. */ +const SPOTS: readonly [number, number, number, number][] = [ + [0.1, 0.1, 0.48, 0.4], + [0.62, 0.17, 0.28, 0.27], + [0.6, 0.5, 0.3, 0.22], +]; + +const LEAVES: readonly BookShapeId[] = ['leaf-long', 'leaf-oak', 'leaf']; + +export function fieldNotes(k: CoverKit): CoverDraft { + const { c, W, H, m } = k; + const p = c.look.theme.palette; + const draft: CoverDraft = { elements: [], groups: [] }; + const sheet = sheetOf(c.look.paper, p.accent2); + const ink = inkOn(c, sheet); + const tilt = -k.rng.range(1, 2.5); + const inset = m * 0.55; + const sheetFrame = clearOfTrim(k, frameOf(inset, inset, W - inset * 2, H - inset * 2), tilt); + const lines = mixHex(ink, sheet, 0.86); + const scale = Math.round(k.rng.range(0.55, 0.7) * 100) / 100; + draft.elements.push({ + ...shapeEl(k, 'rect', sheetFrame, sheet, tilt), + paint: { type: 'pattern', pattern: 'grid', fg: lines, bg: sheet, scale, angle: 0 }, + }); + // The words take the foot of the sheet, left of the small print. + const top = H * 0.62; + const zone = frameOf(m, top, W * 0.54 - m, H - m - top); + const leaf = p.accent3; + const placed: BookFrame[] = []; + const prints: BookPhotoElement[] = []; + k.photos.slice(0, SPOTS.length).forEach((photo, i) => { + const [x, y, w, h] = SPOTS[i] as [number, number, number, number]; + const turn = keptTurn(k, (i % 2 === 0 ? -1 : 1) * k.rng.range(2, 4)); + const print = printEl(k, photo, frameOf(W * x, H * y, W * w, H * h), { + turn, + border: { width: mmOn(k, 2.6), color: WHITE }, + shadow: true, + }); + const box = turnedBox(print.frame, print.rotation); + if (placed.some((o) => sharedArea(o, box) > 0) || sharedArea(box, zone) > 0) return; + placed.push(box); + prints.push(print); + }); + // Pressed leaves on the sheet, behind the prints and clear of the words. + const leaves: BookElement[] = []; + const spots: [number, number][] = [ + [W * 0.07, H * 0.5], + [W * 0.9, H * 0.86], + ]; + k.rng + .shuffle(LEAVES) + .slice(0, spots.length) + .forEach((shape, i) => { + const [cx, cy] = spots[i] as [number, number]; + const size = Math.min(W, H) * k.rng.range(0.16, 0.22); + const turn = k.rng.range(-40, 40); + const frame = clearOfTrim(k, frameOf(cx - size / 2, cy - size / 2, size, size), turn); + if (sharedArea(turnedBox(frame, turn), zone) > 0) return; + leaves.push({ ...shapeEl(k, shape, frame, leaf, turn), opacity: 0.9 }); + }); + draft.elements.push(...leaves); + // Each print with its strip of tape over the top edge, the tape see-through so the picture shows under it. + const tape = mixHex(sheet, c.look.accent, 0.22); + for (const print of prints) { + const tw = print.frame.w * 0.4; + const th = mmOn(k, 7); + const frame = frameOf(print.frame.x + (print.frame.w - tw) / 2, print.frame.y - th / 2, tw, th); + const strip = { ...shapeEl(k, 'rect', frame, tape, print.rotation + k.rng.range(-7, 7)), opacity: 0.72 }; + const parts = [print, { ...strip, edge: 'zigzag' as const, edgeSize: mmOn(k, 1) }]; + draft.elements.push(...parts); + draft.groups.push(parts.map((e) => e.id)); + } + if (!addLockup(k, draft, { box: zone, ground: sheet }).length) notes(k, draft, zone, sheet, ink); + const count = (c.art ?? CALM_ART).bare ? 0 : k.rng.int(1, 3); + draft.elements.push( + ...placeStickers(c, draft.elements, { + count, + size: [0.1, 0.15], + sides: ['single'], + key: 'cover:field-notes', + avoid: [zone], + used: c.art?.used, + }), + ); + return draft; +} + +/** The notebook's own words in a box: the title, a line in the script, the dates in mono at the foot. */ +function notes(k: CoverKit, draft: CoverDraft, zone: BookFrame, sheet: string, ink: string): void { + const words: BookTextElement[] = []; + const script = k.sub.words.trim() || k.words.place || ''; + const dates = k.words.dates || k.words.year || ''; + const scriptH = script ? Math.min(mmOn(k, 14), zone.h * 0.26) : 0; + const datesH = dates ? mmOn(k, 6) : 0; + const titleH = zone.h - scriptH - datesH - mmOn(k, 2); + if (k.title.words.trim()) { + const frame = frameOf(zone.x, zone.y, zone.w, titleH); + words.push(titleText(k, frame, { max: mmToPt(titleH * 0.6), color: ink, align: 'left', leading: 0.95 })); + } + if (script) { + const frame = frameOf(zone.x, zone.y + titleH, zone.w, scriptH); + const max = k.c.look.theme.fonts.script ? 26 : 14; + const line = coverText(k, script, frame, { slot: 'script', max, color: accentOn(k.c, sheet), align: 'left' }); + const bound = script === k.sub.words.trim() && k.sub.bound; + words.push(bound ? { ...line, binding: { source: 'journey.subtitle' } } : line); + } + if (dates) { + const frame = frameOf(zone.x, zone.y + zone.h - datesH, zone.w, datesH); + const line = coverText(k, dates, frame, { slot: 'heading', max: 8, color: ink, align: 'left', tracking: 0.12 }); + const mono: BookTextElement = { ...line, font: 'mono', weight: 400, fitMax: 8 }; + words.push({ ...mono, size: solveBookTextFit(mono, 8) }); + } + draft.elements.push(...words); + if (words.length > 1) draft.groups.push(words.map((e) => e.id)); +} diff --git a/shared/src/book/design/design-cover-kit.ts b/shared/src/book/design/design-cover-kit.ts index 89ef2ba50..5c0701b86 100644 --- a/shared/src/book/design/design-cover-kit.ts +++ b/shared/src/book/design/design-cover-kit.ts @@ -15,7 +15,7 @@ import type { import { bookThemeFont, isBookFontFamily, mixHex, mutedOn } from '../theme/book-theme'; import type { BookFontSlot, BookThemeFont } from '../theme/book-theme.schema'; import { CALM_ART, withinTilt } from './design-art'; -import { bleedPage, frameOf, photoEl, type ComposeCtx } from './design-compose'; +import { bleedPage, frameOf, photoEl, printsAt, type ComposeCtx } from './design-compose'; import { titleWords, type CoverWords } from './design-cover-words'; import { designRng, type DesignRng } from './design-random'; import { turnedBox } from './design-stickers'; @@ -171,6 +171,12 @@ export function standOut(c: ComposeCtx, ground: string, skip: readonly string[] return tried.find((h) => deltaE(h, ground) > 18 && contrastRatio(h, ground) >= 1.4) ?? inkOn(c, ground); } +/** An accent small words read in on a ground (4.5:1), else the ink that reads there. */ +export function accentOn(c: ComposeCtx, ground: string): string { + const p = c.look.theme.palette; + return [c.look.accent, p.accent3, p.accent2].find((h) => contrastRatio(h, ground) >= 4.5) ?? inkOn(c, ground); +} + /** * A lockup's tones on a ground: the ground as its paper, an ink and a muted * ink that read on it, and an accent that reads on it at 4.5:1, so the words @@ -397,6 +403,12 @@ export function spacedLine(k: PageKit, words: string, frame: BookFrame, color: s }); } +/** A text on a band of a colour behind its words, set in the ink that reads on the band. */ +export function onBand(k: PageKit, el: BookTextElement, band: string): BookTextElement { + const highlight = { color: band, alpha: 1, padX: mmOn(k, 1.6), padY: mmOn(k, 0.6), radius: 0 }; + return { ...el, color: inkOn(k.c, band), highlight }; +} + // ── shapes and photos ────────────────────────────────────────────────────── /** A filled shape, unturned unless said, with no outline. */ @@ -456,6 +468,19 @@ export function bleedPhoto(k: CoverKit, photo: AutoPhoto): BookPhotoElement { return photoEl(k.c, photo, bleedPage(k.c, 'single'), { bleed: { side: 'single' } }); } +/** + * A photo across the page in a band of it, to the bleed at both sides (a + * magazine's picture under its masthead, a letterboxed still): to the bleed + * when it prints sharp at that size, else as a print inside the margins over + * the same rows, as the cover photo falls back. + */ +export function bandPhoto(k: CoverKit, photo: AutoPhoto, band: BookFrame): BookPhotoElement { + if (printsAt(k.c, photo, band)) return photoEl(k.c, photo, band, { bleed: { side: 'single' } }); + const y = Math.max(band.y, k.m); + const bottom = Math.min(band.y + band.h, k.H - k.m); + return printEl(k, photo, frameOf(k.m, y, k.W - k.m * 2, bottom - y)); +} + interface PrintLook { turn?: number; border?: { width: number; color: string }; diff --git a/shared/src/book/design/design-cover-night-film.ts b/shared/src/book/design/design-cover-night-film.ts new file mode 100644 index 000000000..dd9a63b35 --- /dev/null +++ b/shared/src/book/design/design-cover-night-film.ts @@ -0,0 +1,142 @@ +import { luminance, parseHex } from '../book-colour'; +import { solveBookTextFit } from '../book-text-fit'; +import type { BookElement, BookFrame, BookLineElement, BookTextElement } from '../book.schema'; +import { mixHex } from '../theme/book-theme'; +import { frameOf } from './design-compose'; +import { + accentOn, + addLockup, + bandPhoto, + coverText, + inkOn, + mmOn, + mmToPt, + printEl, + shapeEl, + spacedLine, + titleText, + type CoverDraft, + type CoverKit, +} from './design-cover-kit'; + +/** + * Night film: a dark cinematic page. The month and the place in mono in the + * neon accent above a letterboxed still to the bleed, the title in tall + * condensed capitals widely spaced with a short neon rule, and across the + * foot a strip of film, its sprocket holes two dashed lines, holding the + * next photos as frames. + */ + +const lum = (hex: string) => luminance(parseHex(hex) ?? { r: 255, g: 255, b: 255 }); + +/** The page's near black: the darker of the paper and the ink, taken towards black until it is one. */ +function nightOf(paper: string, ink: string): string { + let night = lum(paper) <= lum(ink) ? paper : ink; + for (let step = 0; step < 8 && lum(night) > 0.012; step++) night = mixHex(night, '#000000', 0.35); + return night; +} + +/** A straight dashed line across a frame, as a row of sprocket holes. */ +function sprockets(k: CoverKit, frame: BookFrame, stroke: string): BookLineElement { + return { + id: k.c.newId('l'), + kind: 'line', + frame, + rotation: 0, + opacity: 1, + locked: false, + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke, + strokeWidth: Math.round(frame.h * 100) / 100, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }; +} + +/** A line in mono, as a timecode is printed on the edge of a film. */ +function monoLine( + k: CoverKit, + words: string, + frame: BookFrame, + color: string, + align: 'left' | 'right', +): BookTextElement { + const text = coverText(k, words, frame, { slot: 'heading', max: 8, color, align, tracking: 0.2 }); + const mono: BookTextElement = { ...text, font: 'mono', weight: 500, transform: 'upper', fitMax: 8 }; + return { ...mono, size: solveBookTextFit(mono, 8) }; +} + +export function nightFilm(k: CoverKit): CoverDraft { + const { c, W, H, b, m } = k; + const night = nightOf(c.look.paper, c.look.ink); + const draft: CoverDraft = { elements: [], groups: [], ...(night === c.look.paper ? {} : { background: night }) }; + const light = inkOn(c, night); + const neon = accentOn(c, night); + // Down the page: the timecode line, the still, the title, the strip. + const metaH = mmOn(k, 6); + const stillY = m + metaH + mmOn(k, 4); + const stillH = Math.min(H * k.rng.range(0.36, 0.42), W * 0.46); + const rest = H - m - (stillY + stillH) - mmOn(k, 12); + const stripH = Math.min(rest * 0.5, W * 0.24); + const stripY = H - m - stripH; + const titleY = stillY + stillH + mmOn(k, 6); + const titleBox = frameOf(m, titleY, W - m * 2, stripY - mmOn(k, 6) - titleY); + const [photo, ...more] = k.photos; + if (photo) draft.elements.push(bandPhoto(k, photo, frameOf(-b, stillY, W + b * 2, stillH))); + // The film: a band a shade off the night, sprockets along both edges, the frames between them. + const film = mixHex(night, light, 0.1); + const hole = Math.max(0.6, stripH * 0.09); + draft.elements.push( + shapeEl(k, 'rect', frameOf(-b, stripY, W + b * 2, stripH), film), + sprockets(k, frameOf(-b, stripY + stripH * 0.12 - hole / 2, W + b * 2, hole), mixHex(light, film, 0.3)), + sprockets(k, frameOf(-b, stripY + stripH * 0.88 - hole / 2, W + b * 2, hole), mixHex(light, film, 0.3)), + ); + const frames = more.slice(0, 3); + const gap = mmOn(k, 3); + const fw = frames.length ? (W - m * 2 - gap * (frames.length - 1)) / frames.length : 0; + frames.forEach((p, i) => { + draft.elements.push(printEl(k, p, frameOf(m + i * (fw + gap), stripY + stripH * 0.22, fw, stripH * 0.56))); + }); + const meta: BookElement[] = []; + const when = k.words.dates || k.words.year || ''; + const place = k.words.place ?? ''; + const half = (W - m * 2) / 2 - mmOn(k, 2); + if (when) meta.push(monoLine(k, when, frameOf(m, m, half, metaH), neon, 'left')); + if (place && place !== when) meta.push(monoLine(k, place, frameOf(W - m - half, m, half, metaH), neon, 'right')); + draft.elements.push(...meta); + if (meta.length > 1) draft.groups.push(meta.map((e) => e.id)); + if (addLockup(k, draft, { box: titleBox, ground: night }).length) return draft; + const head: BookElement[] = []; + const sub = k.sub.words.trim(); + const subH = sub ? mmOn(k, 7) : 0; + if (k.title.words.trim()) { + const box = frameOf(titleBox.x, titleBox.y, titleBox.w, titleBox.h - subH - mmOn(k, 3)); + head.push( + titleText(k, box, { + max: mmToPt(box.h * 0.85), + color: light, + transform: 'upper', + tracking: 0.14, + leading: 0.9, + align: 'left', + }), + ); + } + const ruleY = titleBox.y + titleBox.h - subH - mmOn(k, 1.5); + head.push(shapeEl(k, 'rect', frameOf(m, ruleY, W * 0.16, Math.max(0.6, mmOn(k, 0.8))), neon)); + if (sub) { + const line = spacedLine(k, sub, frameOf(m, titleBox.y + titleBox.h - subH, W * 0.6, subH), neon, 9); + head.push({ ...line, align: 'left', ...(k.sub.bound ? { binding: { source: 'journey.subtitle' as const } } : {}) }); + } + draft.elements.push(...head); + if (head.length > 1) draft.groups.push(head.map((e) => e.id)); + return draft; +} diff --git a/shared/src/book/design/design-cover-riso.ts b/shared/src/book/design/design-cover-riso.ts new file mode 100644 index 000000000..ac5e8e6a2 --- /dev/null +++ b/shared/src/book/design/design-cover-riso.ts @@ -0,0 +1,117 @@ +import { luminance, parseHex } from '../book-colour'; +import type { BookElement, BookFrame } from '../book.schema'; +import { CALM_ART } from './design-art'; +import { frameOf } from './design-compose'; +import { + addLockup, + clearOfTrim, + inkOn, + keptTurn, + mmOn, + mmToPt, + onBand, + printEl, + shapeEl, + spacedLine, + standOut, + titleText, + type CoverDraft, + type CoverKit, +} from './design-cover-kit'; +import { placeStickers, turnedBox } from './design-stickers'; + +/** + * Riso print: a page printed in two or three spot inks, each a little out of + * register with the next. A disc of one ink and a halftone disc of another + * laid over it off centre, the cover photo as a duotone of the book's ink on + * a block of the first ink that shows past its edge, the title in heavy + * capitals with a hard shadow of that ink beside it, the subtitle and the + * year on bands of their own, and a few doodles. + */ + +/** The darker and the lighter of two colours, for a duotone that keeps its tones the right way round in any theme. */ +function tonesOf(a: string, b: string): { dark: string; light: string } { + const lum = (h: string) => luminance(parseHex(h) ?? { r: 255, g: 255, b: 255 }); + return lum(a) <= lum(b) ? { dark: a, light: b } : { dark: b, light: a }; +} + +/** A box moved down until it starts below `top`, or left where it is. */ +const below = (box: BookFrame, top: number): BookFrame => (box.y >= top ? box : { ...box, y: top }); + +export function riso(k: CoverKit): CoverDraft { + const { c, W, H, m } = k; + const draft: CoverDraft = { elements: [], groups: [] }; + const ground = c.look.paper; + const first = standOut(c, ground); + const second = standOut(c, ground, [first]); + const titleZone = frameOf(m, m, W - m * 2, H * 0.3); + const titleFoot = titleZone.y + titleZone.h + mmOn(k, 12); + const photo = k.photos[0]; + const pw = W * k.rng.range(0.5, 0.56); + const ph = Math.min(H * 0.46, H - m - titleFoot); + const at = frameOf(W - m - pw - k.rng.range(0, 0.04) * W, H - m - ph, pw, ph); + // The two inks of the discs, the second laid over the first a few millimetres off. + const d = Math.min(W, H) * k.rng.range(0.5, 0.6); + const miss = mmOn(k, k.rng.range(3, 5)); + const disc = clearOfTrim(k, below(frameOf(at.x - d * 0.45, at.y + at.h * 0.35 - d / 2, d, d), titleFoot)); + const solid = shapeEl(k, 'ellipse', disc, second); + const dots = shapeEl(k, 'ellipse', clearOfTrim(k, frameOf(disc.x + miss, disc.y - miss, d, d)), first); + const scale = Math.round(k.rng.range(0.35, 0.5) * 100) / 100; + draft.elements.push( + { ...solid, opacity: 0.85 }, + { ...dots, paint: { type: 'pattern', pattern: 'dots', fg: first, bg: null, scale, angle: 45 } }, + ); + let photoBox: BookFrame | null = null; + if (photo) { + const turn = keptTurn(k, k.rng.sign() * k.rng.range(1.5, 3)); + const print = printEl(k, photo, at, { turn }); + const shift = mmOn(k, k.rng.range(2.5, 4)); + const offset = frameOf(print.frame.x - shift, print.frame.y + shift, print.frame.w, print.frame.h); + const block = shapeEl(k, 'rect', offset, first, print.rotation); + draft.elements.push(block, { ...print, duotone: tonesOf(c.look.ink, c.look.paper) }); + photoBox = turnedBox(offset, print.rotation); + } + const ink = inkOn(c, ground); + const head: BookElement[] = []; + if (!addLockup(k, draft, { box: titleZone, ground }).length) { + if (k.title.words.trim()) { + const title = titleText(k, titleZone, { + max: mmToPt(titleZone.h / 2 / 0.95), + color: ink, + transform: 'upper', + leading: 0.92, + weight: 800, + align: 'left', + }); + const dx = mmOn(k, 1.6); + head.push({ ...title, shadow: { dx, dy: dx, color: first, alpha: 1 } }); + } + const sub = k.sub.words.trim(); + if (sub) { + const line = spacedLine(k, sub, frameOf(m, titleZone.y + titleZone.h + mmOn(k, 3), W * 0.5, mmOn(k, 7)), ink, 10); + const bound = k.sub.bound ? { ...line, binding: { source: 'journey.subtitle' as const } } : line; + head.push(onBand(k, { ...bound, align: 'left' }, ground)); + } + draft.elements.push(...head); + if (head.length > 1) draft.groups.push(head.map((t) => t.id)); + } + const year = k.words.year ?? ''; + // The year on a band of the second ink at the foot, left of the photo and its block. + const room = (photoBox ? photoBox.x : W - m) - m - mmOn(k, 4); + if (year && room > mmOn(k, 18)) { + const frame = frameOf(m, H - m - mmOn(k, 7), Math.min(room, mmOn(k, 40)), mmOn(k, 7)); + draft.elements.push(onBand(k, { ...spacedLine(k, year, frame, ink, 9), align: 'left' }, second)); + } + const count = (c.art ?? CALM_ART).bare ? 0 : k.rng.int(2, 4); + draft.elements.push( + ...placeStickers(c, draft.elements, { + count, + size: [0.1, 0.16], + sides: ['single'], + key: 'cover:riso', + avoid: [titleZone], + used: c.art?.used, + }), + ); + return draft; +} diff --git a/shared/src/book/design/design-cover-vintage-poster.ts b/shared/src/book/design/design-cover-vintage-poster.ts new file mode 100644 index 000000000..6c166a957 --- /dev/null +++ b/shared/src/book/design/design-cover-vintage-poster.ts @@ -0,0 +1,96 @@ +import { deltaE } from '../book-colour'; +import type { BookElement } from '../book.schema'; +import { mixHex } from '../theme/book-theme'; +import { frameOf } from './design-compose'; +import { + addLockup, + inkOn, + mmOn, + mmToPt, + printEl, + shapeEl, + spacedLine, + titleText, + type CoverDraft, + type CoverKit, +} from './design-cover-kit'; + +/** + * Vintage poster: a travel poster of the 1950s. A thin rule framing the + * page, and inside it a scenic panel of flat colour: a sky, a sun with its + * rays at the horizon, two ranges of mountains and a band of sea, the cover + * photo standing in an arch before the sun with a white cut edge, and under + * the panel the title stacked in the display face with the month at the foot. + */ + +const WHITE = '#ffffff'; + +/** A colour of the palette that stands apart from another (delta E over 18), else the fallback. */ +const apart = (want: string, from: string, fallback: string) => (deltaE(want, from) > 18 ? want : fallback); + +export function vintagePoster(k: CoverKit): CoverDraft { + const { c, W, H, m } = k; + const p = c.look.theme.palette; + const draft: CoverDraft = { elements: [], groups: [] }; + const ground = c.look.paper; + const ink = inkOn(c, ground); + const sun = c.look.accent; + const sky = apart(mixHex(p.accent3, ground, 0.3), sun, mixHex(p.accent2, ground, 0.45)); + const near = apart(p.accent2, sky, mixHex(ink, sky, 0.35)); + const far = mixHex(near, sky, 0.45); + const sea = mixHex(near, ink, 0.25); + const hair = Math.max(0.3, mmOn(k, 0.6)); + const edge = mmOn(k, 3.5); + const border = { ...shapeEl(k, 'rect', frameOf(edge, edge, W - edge * 2, H - edge * 2), ink), fill: null }; + draft.elements.push({ ...border, stroke: ink, strokeWidth: hair }); + const inset = mmOn(k, 7); + const panel = frameOf(inset, inset, W - inset * 2, H * k.rng.range(0.6, 0.64) - inset); + const horizon = panel.y + panel.h * k.rng.range(0.5, 0.56); + const rays = Math.min(panel.w, panel.h) * 0.92; + const ry = Math.min(Math.max(horizon - rays / 2, panel.y), panel.y + panel.h - rays); + const disc = rays * 0.6; + draft.elements.push( + shapeEl(k, 'rect', panel, sky), + { ...shapeEl(k, 'sunburst-24', frameOf(W / 2 - rays / 2, ry, rays, rays), mixHex(sun, sky, 0.5)), opacity: 0.7 }, + shapeEl(k, 'ellipse', frameOf(W / 2 - disc / 2, ry + (rays - disc) / 2, disc, disc), sun), + ); + // The ranges from the horizon down to the panel's foot, the far one paler, the sea in front of them. + const foot = panel.y + panel.h; + const farW = panel.w * k.rng.range(0.6, 0.7); + const nearW = panel.w * k.rng.range(0.62, 0.72); + const left = k.rng.chance(0.5); + const seaH = panel.h * 0.12; + const farX = left ? panel.x : panel.x + panel.w - farW; + const nearX = left ? panel.x + panel.w - nearW : panel.x; + const nearY = horizon + (foot - horizon) * 0.25; + draft.elements.push( + shapeEl(k, 'mountain', frameOf(farX, horizon, farW, foot - horizon), far), + shapeEl(k, 'mountain', frameOf(nearX, nearY, nearW, foot - nearY), near), + shapeEl(k, 'rect', frameOf(panel.x, foot - seaH, panel.w, seaH), sea), + ); + const photo = k.photos[0]; + if (photo) { + const ph = panel.h * 0.74; + const pw = Math.min(ph * 0.58, panel.w * 0.42); + const arch = printEl(k, photo, frameOf(W / 2 - pw / 2, foot - ph - mmOn(k, 3), pw, ph), { + mask: 'arch-tall', + cutout: { width: mmOn(k, 2), color: WHITE }, + }); + draft.elements.push(arch); + } + // Under the panel: the title stacked in the display face, the month or the year at the foot. + const line = k.words.dates || k.words.year || ''; + const lineH = line ? mmOn(k, 7) : 0; + const top = foot + mmOn(k, 5); + const box = frameOf(m, top, W - m * 2, H - m - top - lineH - mmOn(k, 2)); + const words: BookElement[] = []; + if (!addLockup(k, draft, { box: frameOf(box.x, box.y, box.w, H - m - top), ground }).length) { + if (k.title.words.trim()) { + words.push(titleText(k, box, { max: mmToPt(box.h * 0.8), color: ink, transform: 'upper', leading: 0.92 })); + } + if (line) words.push(spacedLine(k, line, frameOf(m, H - m - lineH, W - m * 2, lineH), ink, 9)); + draft.elements.push(...words); + if (words.length > 1) draft.groups.push(words.map((e) => e.id)); + } + return draft; +} diff --git a/shared/src/book/design/design-cover.spec.ts b/shared/src/book/design/design-cover.spec.ts index f4da34652..a3e01c859 100644 --- a/shared/src/book/design/design-cover.spec.ts +++ b/shared/src/book/design/design-cover.spec.ts @@ -1,4 +1,5 @@ import { BOOK_COVER_ARCHETYPES, type BookCoverArchetype } from '../book-archetypes'; +import { luminance, parseHex } from '../book-colour'; import { bookSpreadSchema, type BookElement, type BookSpread } from '../book.schema'; import { pageFindings } from '../describe-spread'; import { BOOK_STICKERS } from '../stickers/sticker-catalogue'; @@ -11,7 +12,7 @@ import { fileURLToPath } from 'node:url'; import { describe, expect, it } from 'vitest'; /** - * The seven composed covers (design-cover.ts) on the fixture journeys: each + * The twelve composed covers (design-cover.ts) on the fixture journeys: each * a valid page, its words inside the page, nothing left for the repair to * flag, its archetype's signature there, the same for one seed and another * for another seed, and the cover of a design without an archetype exactly @@ -73,6 +74,38 @@ const SIGNATURE: Record p.mask === 'arch-tall') && photos(s).some((p) => p.edge === 'perforated') && shapes(s).some((e) => e.shape === 'ellipse' && e.fill === null), + riso: (s) => + shapes(s).some((e) => e.paint?.type === 'pattern' && e.paint.pattern === 'dots') && + texts(s).some((t) => t.binding?.source === 'journey.title' && !!t.shadow) && + photos(s).some( + (p) => + !!p.duotone && + shapes(s).some( + (e) => + e.shape === 'rect' && + Math.abs(e.frame.w - p.frame.w) < 0.5 && + Math.abs(e.frame.h - p.frame.h) < 0.5 && + (e.frame.x !== p.frame.x || e.frame.y !== p.frame.y), + ), + ), + editorial: (s, W, H) => + shapes(s).some((e) => e.shape === 'rect' && e.frame.h <= 1 && e.frame.w >= W * 0.6) && + texts(s).some((t) => t.binding?.source === 'journey.title' && t.frame.y + t.frame.h <= H * 0.32) && + photos(s).some((p) => p.frame.w >= W * 0.6), + 'vintage-poster': (s, W) => + shapes(s).filter((e) => e.shape === 'mountain').length >= 2 && + shapes(s).some((e) => e.shape === 'sunburst-24') && + shapes(s).some((e) => e.fill === null && !!e.stroke && e.frame.w >= W * 0.8) && + photos(s).every((p) => p.mask === 'arch-tall'), + 'night-film': (s, W) => + luminance(parseHex(s.background ?? '#ffffff') ?? { r: 255, g: 255, b: 255 }) < 0.05 && + kinds(s, 'line').filter((e) => e.kind === 'line' && e.dash === 'dashed').length >= 2 && + shapes(s).some((e) => e.shape === 'rect' && e.frame.w >= W), + 'field-notes': (s) => + shapes(s).some((e) => e.paint?.type === 'pattern' && e.paint.pattern === 'grid') && + shapes(s).some((e) => e.shape.startsWith('leaf')) && + photos(s).length > 0 && + photos(s).every((p) => !!p.border), }; /** Every word on a cover lies on the page, turned with its frame; every other element at least touches it. */ diff --git a/shared/src/book/design/design-cover.ts b/shared/src/book/design/design-cover.ts index 7cc5977ee..c560540a5 100644 --- a/shared/src/book/design/design-cover.ts +++ b/shared/src/book/design/design-cover.ts @@ -4,6 +4,8 @@ import { solveBookTextFit } from '../book-text-fit'; import type { BookElement, BookSpread } from '../book.schema'; import { frameOf, scrimEl, type ComposeCtx } from './design-compose'; import { gridBadge, stampCollage } from './design-cover-collage'; +import { editorial } from './design-cover-editorial'; +import { fieldNotes } from './design-cover-field-notes'; import { postcard, posterPop } from './design-cover-graphic'; import { addLockup, @@ -13,12 +15,15 @@ import { type CoverKit, type CoverMaterial, } from './design-cover-kit'; +import { nightFilm } from './design-cover-night-film'; import { cutout, minimalSerif, spineBand } from './design-cover-photo'; +import { riso } from './design-cover-riso'; +import { vintagePoster } from './design-cover-vintage-poster'; import { titleWords, type CoverWords } from './design-cover-words'; import { paperBackground } from './design-style'; /** - * The composed covers: `cover.archetype` picks one of seven composers, each + * The composed covers: `cover.archetype` picks one of twelve composers, each * building its archetype from the book's own material (its photos, its words, * its theme's colours, faces and motifs, the lockups) with the seed's * variation, deterministic for one seed. A cover without an archetype is the @@ -33,6 +38,11 @@ const COMPOSERS: Readonly CoverDraft 'grid-badge': gridBadge, 'minimal-serif': minimalSerif, 'stamp-collage': stampCollage, + riso, + editorial, + 'vintage-poster': vintagePoster, + 'night-film': nightFilm, + 'field-notes': fieldNotes, }; /** A draft as the cover page: on its ground, each lockup one group. */ diff --git a/shared/src/book/templates/data/more-cutout.data.ts b/shared/src/book/templates/data/more-cutout.data.ts new file mode 100644 index 000000000..510419017 --- /dev/null +++ b/shared/src/book/templates/data/more-cutout.data.ts @@ -0,0 +1,1187 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More cut-out pages: a fourth cover with a photo cut into a circle on a + * die-cut ring, and four double spreads, a words-only story page and three, + * five and seven photos in thick white borders, with paper cut-outs in two + * tones behind and in front of them. Drawn in cutout. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_CUTOUT: readonly BookDecoratedTemplate[] = [ + { + id: 'cutout-circle', + labelKey: 'studio.templates.name.cutoutCircle', + kind: 'single', + archetype: 'cutout', + tags: ['cut-out', 'circle', 'die-cut', 'shapes', 'portrait', 'script', 'lively'], + descr: + 'A photo cut into a circle in a white rim on a sky die-cut ring, a coral blob behind it, a sand monstera leaf, coral weed and a star cut out around it; a script line, a condensed title and the date stacked at the foot.', + background: '#2445b8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.1238, y: 0.0571, w: 0.5524, h: 0.4952 }, + rotation: -12, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'organic-3', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.6952, y: 0.2667, w: 0.4, h: 0.3619 }, + rotation: 32, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-monstera', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: 0.7333, y: -0.1048, w: 0.3333, h: 0.2095 }, + rotation: 168, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'coral-1', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p4', + role: 'photo:1', + keep: true, + tint: { cutout: 'accent3' }, + frame: { x: 0.2476, y: 0.1143, w: 0.5048, h: 0.5048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + cutout: { width: 0.0238, color: '#9fd3ff' }, + }, + { + id: 's5', + frame: { x: 0.6762, y: 0.1048, w: 0.1238, h: 0.119 }, + rotation: 14, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'star-organic', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's6', + frame: { x: 0.1905, y: 0.4095, w: 0.0762, h: 0.2571 }, + rotation: -24, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-long', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't7', + role: 'subtitle', + on: 'paper', + frame: { x: 0.0762, y: 0.681, w: 0.8476, h: 0.0619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0762, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#f1d9b5', + token: 'accent2', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0762, + }, + { + id: 't8', + role: 'title', + frame: { x: 0.0476, y: 0.7429, w: 0.9048, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'shoulders', + size: 0.5714, + weight: 800, + italic: false, + align: 'center', + leading: 0.85, + tracking: 0, + color: '#fdf8ef', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.5714, + }, + { + id: 't9', + role: 'date', + frame: { x: 0.0762, y: 0.9238, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.5, + color: '#fdf8ef', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + ], + }, + { + id: 'cutout-story-page', + labelKey: 'studio.templates.name.cutoutStoryPage', + kind: 'inner', + archetype: 'cutout', + tags: ['cut-out', 'words-only', 'story', 'long-text', 'shapes', 'matisse', 'calm'], + descr: + 'Words only: the date on an ink band, a condensed title and a script line over a heap of paper cut-outs on the left page, a coral monstera, sky weed, a sand blob and a star; the story in one tall column on the right beside a sand sun.', + background: '#2445b8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.1714, y: 0.5238, w: 0.7619, h: 0.6857 }, + rotation: -18, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-monstera', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.4762, y: 0.6, w: 0.4381, h: 0.3857 }, + rotation: 10, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'organic-1', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: 0.0952, y: 0.5714, w: 0.1524, h: 0.4 }, + rotation: 8, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'seaweed', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 0.7143, y: 0.4762, w: 0.1238, h: 0.119 }, + rotation: -16, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'star-organic', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't5', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.0762, w: 0.5, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.45, + color: '#2445b8', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#fdf8ef', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't6', + role: 'title', + frame: { x: 0.0762, y: 0.1333, w: 0.8476, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'shoulders', + size: 0.381, + weight: 800, + italic: false, + align: 'left', + leading: 0.85, + tracking: 0, + color: '#fdf8ef', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.381, + }, + { + id: 't7', + role: 'subtitle', + on: 'paper', + frame: { x: 0.0762, y: 0.4095, w: 0.8476, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0762, + weight: 400, + italic: false, + align: 'left', + leading: 1.1, + tracking: 0, + color: '#f1d9b5', + token: 'accent2', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0762, + }, + { + id: 's8', + keep: true, + frame: { x: 1.7429, y: 0.0571, w: 0.1905, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'sun-cutout', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't9', + role: 'body', + frame: { x: 1.0762, y: 0.0762, w: 0.6286, h: 0.8476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#fdf8ef', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's10', + frame: { x: 1.8, y: 0.5714, w: 0.1143, h: 0.5143 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-long', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + ], + }, + { + id: 'cutout-trio', + labelKey: 'studio.templates.name.cutoutTrio', + kind: 'inner', + archetype: 'cutout', + tags: ['cut-out', 'colour-block', 'three-photos', 'portrait', 'title', 'shapes', 'lively'], + descr: + 'A tall portrait in a thick white border on a sky blob with a sand leaf over its corner on the left page; the right page a coral block with two tilted prints, a cobalt star and a sand oak leaf over a condensed title.', + background: '#2445b8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0476, y: 0.1048, w: 0.5714, h: 0.6667 }, + rotation: -8, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'organic-2', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + frame: { x: 0.1905, y: 0.1333, w: 0.5524, h: 0.6857 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'print', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0262, color: '#ffffff' }, + }, + { + id: 's4', + frame: { x: 0.619, y: 0.6476, w: 0.2667, h: 0.2476 }, + rotation: 24, + opacity: 1, + locked: false, + group: 'print', + kind: 'shape', + shape: 'leaf-palm', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't5', + role: 'caption', + frame: { x: 0.0762, y: 0.8857, w: 0.4762, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1.35, + tracking: 0.04, + color: '#fdf8ef', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 's6', + frame: { x: 1.8, y: -0.0571, w: 0.1619, h: 0.3524 }, + rotation: 28, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p7', + role: 'photo:2', + frame: { x: 1.0952, y: 0.1048, w: 0.381, h: 0.4095 }, + rotation: -4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p8', + role: 'photo:3', + frame: { x: 1.5143, y: 0.0762, w: 0.3905, h: 0.3048 }, + rotation: 5, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 's9', + frame: { x: 1.4286, y: 0.3714, w: 0.1429, h: 0.1381 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'star-organic', + fill: '#2445b8', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't10', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 1.0857, y: 0.6, w: 0.5, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.45, + color: '#2445b8', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#fdf8ef', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't11', + role: 'title', + on: 'accent', + frame: { x: 1.0762, y: 0.6571, w: 0.8476, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'shoulders', + size: 0.4571, + weight: 800, + italic: false, + align: 'left', + leading: 0.85, + tracking: 0, + color: '#2445b8', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.4571, + }, + ], + }, + { + id: 'cutout-scatter', + labelKey: 'studio.templates.name.cutoutScatter', + kind: 'inner', + archetype: 'cutout', + tags: ['cut-out', 'scatter', 'five-photos', 'wave', 'tilted', 'shapes', 'lively'], + descr: + 'A sand wave runs across both pages under five tilted prints in thick white borders, a coral monstera bleeding off the left foot, sky and coral cut-outs over their edges; the title and the date on its ink band at the head of the left page.', + background: '#2445b8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: 0.381, w: 2.0286, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'wavy-band', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: -0.1429, y: 0.7143, w: 0.381, h: 0.3429 }, + rotation: 20, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-monstera', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'shoulders', + size: 0.381, + weight: 800, + italic: false, + align: 'left', + leading: 0.85, + tracking: 0, + color: '#fdf8ef', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.381, + }, + { + id: 't4', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.2952, w: 0.5, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.45, + color: '#2445b8', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#fdf8ef', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 'p5', + role: 'photo:1', + frame: { x: 0.0952, y: 0.4, w: 0.4952, h: 0.381 }, + rotation: -4, + opacity: 1, + locked: false, + group: 'print', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 's6', + frame: { x: 0.0381, y: 0.5714, w: 0.0762, h: 0.3048 }, + rotation: -18, + opacity: 1, + locked: false, + group: 'print', + kind: 'shape', + shape: 'leaf-long', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p7', + role: 'photo:2', + frame: { x: 0.5714, y: 0.5524, w: 0.3333, h: 0.381 }, + rotation: 5, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p8', + role: 'photo:3', + frame: { x: 1.0952, y: 0.0952, w: 0.381, h: 0.4762 }, + rotation: 3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p9', + role: 'photo:4', + frame: { x: 1.5238, y: 0.1524, w: 0.381, h: 0.2857 }, + rotation: -5, + opacity: 1, + locked: false, + group: 'corner', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 's10', + frame: { x: 1.8, y: 0.0857, w: 0.1905, h: 0.1333 }, + rotation: 18, + opacity: 1, + locked: false, + group: 'corner', + kind: 'shape', + shape: 'coral-2', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p11', + role: 'photo:5', + frame: { x: 1.4286, y: 0.5333, w: 0.4952, h: 0.3714 }, + rotation: 4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 's12', + frame: { x: 1.2, y: 0.6667, w: 0.1429, h: 0.1381 }, + rotation: -14, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'star-organic', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't13', + role: 'caption', + frame: { x: 1.0762, y: 0.8857, w: 0.3, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1.35, + tracking: 0.04, + color: '#fdf8ef', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.0333, + }, + ], + }, + { + id: 'cutout-mosaic', + labelKey: 'studio.templates.name.cutoutMosaic', + kind: 'inner', + archetype: 'cutout', + tags: ['cut-out', 'mosaic', 'seven-photos', 'masks', 'arch', 'circle', 'lively'], + descr: + 'Seven photos cut into paper shapes in thick white borders, an arch, two circles, a blob and three blocks, on a sand blob and a coral monstera; the title and the date on its ink band at the head, a coral star and a sky leaf between.', + background: '#2445b8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.1905, y: 0.3333, w: 0.7619, h: 0.6667 }, + rotation: 6, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'organic-1', + fill: '#f1d9b5', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 1.7619, y: 0.6667, w: 0.381, h: 0.3429 }, + rotation: -22, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'leaf-monstera', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'shoulders', + size: 0.381, + weight: 800, + italic: false, + align: 'left', + leading: 0.85, + tracking: 0, + color: '#fdf8ef', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.381, + }, + { + id: 't4', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.2952, w: 0.5, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.45, + color: '#2445b8', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#fdf8ef', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 'p5', + role: 'photo:1', + frame: { x: 0.0762, y: 0.381, w: 0.381, h: 0.5333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch', + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p6', + role: 'photo:2', + keep: true, + frame: { x: 0.5143, y: 0.381, w: 0.2476, h: 0.2476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 's7', + frame: { x: 0.7714, y: 0.4, w: 0.1524, h: 0.1476 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'star-organic', + fill: '#ff7a59', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p8', + role: 'photo:3', + frame: { x: 0.5143, y: 0.6762, w: 0.4095, h: 0.2476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p9', + role: 'photo:4', + frame: { x: 1.0762, y: 0.0762, w: 0.4952, h: 0.381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 's10', + frame: { x: 1.4667, y: 0.3619, w: 0.1714, h: 0.1619 }, + rotation: 30, + opacity: 1, + locked: false, + group: 'tile', + kind: 'shape', + shape: 'leaf-palm', + fill: '#9fd3ff', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p11', + role: 'photo:5', + keep: true, + frame: { x: 1.619, y: 0.0762, w: 0.3048, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p12', + role: 'photo:6', + frame: { x: 1.0762, y: 0.4952, w: 0.3048, h: 0.4286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + { + id: 'p13', + role: 'photo:7', + frame: { x: 1.4476, y: 0.5048, w: 0.4762, h: 0.419 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'organic-1', + frameStyle: 'none', + border: { width: 0.0238, color: '#ffffff' }, + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/more-grid-badge.data.ts b/shared/src/book/templates/data/more-grid-badge.data.ts new file mode 100644 index 000000000..f4558a4de --- /dev/null +++ b/shared/src/book/templates/data/more-grid-badge.data.ts @@ -0,0 +1,844 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More grid and badge pages: a cover of eight tiles round a red centre + * badge, a words only spread with a large seal and the story, and a spread + * of a hero photo with a scalloped badge beside six tall tiles. Drawn in + * grid-badge. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_GRID_BADGE: readonly BookDecoratedTemplate[] = [ + { + id: 'grid-badge-tiles', + labelKey: 'studio.templates.name.gridBadgeTiles', + kind: 'single', + archetype: 'grid-badge', + tags: ['grid', 'eight-photos', 'badge', 'tiles', 'red', 'postmark', 'graphic'], + descr: + 'Eight bleed photos three by three with 4 mm white gutters round a red centre tile holding a white hairline ring, a script line, the title in heavy capitals, a short rule and the year, an ink postmark on its corner.', + background: null, + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p2', + role: 'photo:2', + frame: { x: 0.3349, y: -0.0143, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p3', + role: 'photo:3', + frame: { x: 0.6841, y: -0.0143, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p4', + role: 'photo:4', + frame: { x: -0.0143, y: 0.3349, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p5', + role: 'photo:5', + frame: { x: 0.6841, y: 0.3349, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p6', + role: 'photo:6', + frame: { x: -0.0143, y: 0.6841, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p7', + role: 'photo:7', + frame: { x: 0.3349, y: 0.6841, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p8', + role: 'photo:8', + frame: { x: 0.6841, y: 0.6841, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's9', + frame: { x: 0.3349, y: 0.3349, w: 0.3302, h: 0.3302 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'rect', + fill: '#e2412f', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's10', + keep: true, + frame: { x: 0.3619, y: 0.3619, w: 0.2762, h: 0.2762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#ffffff', + strokeToken: 'paper', + strokeWidth: 0.0019, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't11', + role: 'subtitle', + keep: true, + on: 'accent', + frame: { x: 0.4048, y: 0.3952, w: 0.1905, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'allura', + size: 0.0667, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#ffffff', + token: 'paper', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.0667, + }, + { + id: 't12', + role: 'title', + keep: true, + on: 'accent', + frame: { x: 0.3857, y: 0.4476, w: 0.2286, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0952, + weight: 800, + italic: false, + align: 'center', + leading: 0.95, + tracking: 0, + color: '#ffffff', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 's13', + keep: true, + frame: { x: 0.4762, y: 0.5429, w: 0.0476, h: 0.0038 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'rect', + fill: '#ffffff', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't14', + role: 'date', + keep: true, + on: 'accent', + frame: { x: 0.4048, y: 0.5571, w: 0.1905, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.4, + color: '#ffffff', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 's15', + tint: { colors: ['ink'] }, + frame: { x: 0.6, y: 0.6476, w: 0.1714, h: 0.0997 }, + rotation: -12, + opacity: 0.85, + locked: false, + kind: 'sticker', + stickerId: 'postmark', + colors: ['#141414'], + flipX: false, + }, + ], + }, + { + id: 'grid-badge-letter', + labelKey: 'studio.templates.name.gridBadgeLetter', + kind: 'inner', + archetype: 'grid-badge', + tags: ['words-only', 'story', 'seal', 'badge', 'squared-paper', 'airmail', 'calm'], + descr: + 'The left page cream squared paper with a large red seal holding the subtitle round its rim, the title in heavy capitals and the date; the right page a dashed airmail line to a small plane, the long story and a passport stamp.', + background: null, + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent3', bg: 'accent2' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f6f6f', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f6f6f', bg: '#f2eee7', scale: 1.2, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.1857, y: 0.1457, w: 0.6286, h: 0.6286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'seal', + fill: '#e2412f', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + keep: true, + frame: { x: 0.2429, y: 0.2029, w: 0.5143, h: 0.5143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#ffffff', + strokeToken: 'paper', + strokeWidth: 0.0019, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't4', + role: 'subtitle', + keep: true, + on: 'accent', + frame: { x: 0.2619, y: 0.2219, w: 0.4762, h: 0.4762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.3, + color: '#ffffff', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + curve: { type: 'circle', bend: 40, start: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't5', + role: 'title', + keep: true, + on: 'accent', + frame: { x: 0.3095, y: 0.3905, w: 0.381, h: 0.1238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.1524, + weight: 800, + italic: false, + align: 'center', + leading: 0.95, + tracking: 0, + color: '#ffffff', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1524, + }, + { + id: 's6', + keep: true, + frame: { x: 0.4619, y: 0.5238, w: 0.0762, h: 0.0038 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'rect', + fill: '#ffffff', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't7', + role: 'date', + keep: true, + on: 'accent', + frame: { x: 0.3333, y: 0.5381, w: 0.3333, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.4, + color: '#ffffff', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'l8', + tint: { stroke: 'ink' }, + frame: { x: 1.0762, y: 0.0833, w: 0.6762, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#141414', + strokeWidth: 0.0029, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's9', + tint: { colors: ['accent3', 'accent', 'paper'] }, + frame: { x: 1.7714, y: 0.0476, w: 0.1524, h: 0.0912 }, + rotation: -8, + opacity: 1, + locked: false, + group: 'head', + kind: 'sticker', + stickerId: 'airplane', + colors: ['#6f6f6f', '#e2412f', '#ffffff'], + flipX: false, + }, + { + id: 't10', + role: 'body', + frame: { x: 1.0762, y: 0.1619, w: 0.6667, h: 0.7333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#141414', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's11', + tint: { colors: ['accent'] }, + frame: { x: 1.7524, y: 0.7333, w: 0.1905, h: 0.1333 }, + rotation: 14, + opacity: 0.9, + locked: false, + kind: 'sticker', + stickerId: 'passportStamp', + colors: ['#e2412f'], + flipX: false, + }, + ], + }, + { + id: 'grid-badge-hero-six', + labelKey: 'studio.templates.name.gridBadgeHeroSix', + kind: 'inner', + archetype: 'grid-badge', + tags: ['grid', 'seven-photos', 'hero', 'badge', 'scalloped', 'full-bleed', 'graphic'], + descr: + 'A bleed hero photo on the left page with a white scalloped badge low on it, a dashed red ring, a red pin, the subtitle, the title and the date; six tall photos three by two on the right page with 3 mm white gutters.', + background: null, + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0072, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.6, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p2', + role: 'photo:2', + frame: { x: 1.0071, y: -0.0143, w: 0.3262, h: 0.5071 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p3', + role: 'photo:3', + frame: { x: 1.3476, y: -0.0143, w: 0.3262, h: 0.5071 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p4', + role: 'photo:4', + frame: { x: 1.6881, y: -0.0143, w: 0.3262, h: 0.5071 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p5', + role: 'photo:5', + frame: { x: 1.0071, y: 0.5071, w: 0.3262, h: 0.5071 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p6', + role: 'photo:6', + frame: { x: 1.3476, y: 0.5071, w: 0.3262, h: 0.5071 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p7', + role: 'photo:7', + frame: { x: 1.6881, y: 0.5071, w: 0.3262, h: 0.5071 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's8', + keep: true, + frame: { x: 0.0857, y: 0.5333, w: 0.381, h: 0.381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'scallop-circle', + fill: '#ffffff', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's9', + keep: true, + frame: { x: 0.1048, y: 0.5524, w: 0.3429, h: 0.3429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#e2412f', + strokeToken: 'accent', + strokeWidth: 0.0029, + strokeStyle: 'dashed', + radius: 0, + }, + { + id: 's10', + tint: { colors: ['accent', 'paper'] }, + frame: { x: 0.2381, y: 0.4952, w: 0.0762, h: 0.1088 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'sticker', + stickerId: 'mapPin', + colors: ['#e2412f', '#ffffff'], + flipX: false, + }, + { + id: 't11', + role: 'subtitle', + keep: true, + on: 'paper', + frame: { x: 0.1381, y: 0.6333, w: 0.2762, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.031, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.32, + color: '#5b5b5b', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.031, + }, + { + id: 't12', + role: 'title', + keep: true, + on: 'paper', + frame: { x: 0.1238, y: 0.6762, w: 0.3048, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.1238, + weight: 800, + italic: false, + align: 'center', + leading: 0.95, + tracking: 0, + color: '#141414', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1238, + }, + { + id: 's13', + keep: true, + frame: { x: 0.2381, y: 0.7905, w: 0.0762, h: 0.0038 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'rect', + fill: '#e2412f', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't14', + role: 'date', + keep: true, + on: 'paper', + frame: { x: 0.1714, y: 0.8048, w: 0.2095, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.4, + color: '#141414', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/more-minimal-serif.data.ts b/shared/src/book/templates/data/more-minimal-serif.data.ts new file mode 100644 index 000000000..fb1caaa37 --- /dev/null +++ b/shared/src/book/templates/data/more-minimal-serif.data.ts @@ -0,0 +1,637 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More minimal serif pages: an oval cameo cover inside a hairline frame, a + * words only essay spread and a triptych of three numbered portrait plates. + * Drawn in minimal-serif. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_MINIMAL_SERIF: readonly BookDecoratedTemplate[] = [ + { + id: 'minimal-serif-cameo', + labelKey: 'studio.templates.name.minimalSerifCameo', + kind: 'single', + archetype: 'minimal-serif', + tags: ['minimal', 'serif', 'white', 'oval', 'cameo', 'hairline', 'elegant'], + descr: + 'A white page inside a hairline frame: the year in spaced capitals at the head, an oval photo in a fine accent ring, a large thin italic serif title, a diamond rule and the subtitle.', + background: null, + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0476, y: 0.0476, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#222222', + strokeToken: 'ink', + strokeWidth: 0.0012, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.3333, y: 0.0857, w: 0.3333, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'center', + leading: 1.4, + tracking: 0.45, + color: '#222222', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 's3', + keep: true, + frame: { x: 0.2952, y: 0.1429, w: 0.4095, h: 0.4952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#857d72', + strokeToken: 'accent', + strokeWidth: 0.0012, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p4', + role: 'photo:1', + keep: true, + tint: { border: 'ink' }, + frame: { x: 0.3143, y: 0.1667, w: 0.3714, h: 0.4476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.45, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0014, color: '#222222' }, + }, + { + id: 't5', + role: 'title', + frame: { x: 0.0952, y: 0.6619, w: 0.8095, h: 0.1476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.3333, + weight: 300, + italic: true, + align: 'center', + leading: 0.95, + tracking: 0, + color: '#222222', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.3333, + }, + { + id: 'l6', + tint: { stroke: 'accent' }, + frame: { x: 0.4048, y: 0.819, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#857d72', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'diamond', + }, + { + id: 't7', + role: 'subtitle', + frame: { x: 0.1429, y: 0.8571, w: 0.7143, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'center', + leading: 1.4, + tracking: 0.32, + color: '#646464', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + ], + }, + { + id: 'minimal-serif-essay', + labelKey: 'studio.templates.name.minimalSerifEssay', + kind: 'inner', + archetype: 'minimal-serif', + tags: ['minimal', 'serif', 'words-only', 'essay', 'story', 'ornament', 'calm'], + descr: + 'Words only: on the left page a fleuron, the date in spaced capitals, a large thin serif title, a diamond rule and the subtitle, centred; on the right a hairline, the long story in one column and a star rule.', + background: null, + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { colors: ['accent'] }, + frame: { x: 0.4286, y: 0.1714, w: 0.1429, h: 0.1429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'sticker', + stickerId: 'fleuron', + colors: ['#857d72'], + flipX: false, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.1429, y: 0.3524, w: 0.7143, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'center', + leading: 1.4, + tracking: 0.42, + color: '#222222', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.4048, w: 0.8476, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.2857, + weight: 300, + italic: false, + align: 'center', + leading: 0.95, + tracking: 0, + color: '#222222', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.2857, + }, + { + id: 'l4', + tint: { stroke: 'accent' }, + frame: { x: 0.381, y: 0.6952, w: 0.2381, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#857d72', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'diamond', + }, + { + id: 't5', + role: 'subtitle', + frame: { x: 0.1429, y: 0.7429, w: 0.7143, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'center', + leading: 1.4, + tracking: 0.32, + color: '#646464', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'l6', + tint: { stroke: 'ink' }, + frame: { x: 1.1429, y: 0.0857, w: 0.7143, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'column', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#222222', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't7', + role: 'body', + frame: { x: 1.1429, y: 0.1524, w: 0.7143, h: 0.7143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'column', + kind: 'text', + text: '', + font: 'inter', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.6, + tracking: 0, + color: '#222222', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's8', + tint: { colors: ['accent'] }, + frame: { x: 1.381, y: 0.9, w: 0.2381, h: 0.0408 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'column', + kind: 'sticker', + stickerId: 'starRule', + colors: ['#857d72'], + flipX: false, + }, + ], + }, + { + id: 'minimal-serif-triptych', + labelKey: 'studio.templates.name.minimalSerifTriptych', + kind: 'inner', + archetype: 'minimal-serif', + tags: ['minimal', 'serif', 'triptych', 'three-photos', 'portrait', 'hairline', 'calm'], + descr: + 'A thin serif title, a sun rule, the subtitle, the date and the story in a narrow left column; three tall photos with hairline borders on one line across the spread, each numbered by one, two or three accent dots.', + background: null, + backgroundToken: 'paper', + elements: [ + { + id: 't1', + role: 'title', + frame: { x: 0.0762, y: 0.1619, w: 0.4381, h: 0.2857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.1905, + weight: 300, + italic: false, + align: 'left', + leading: 0.95, + tracking: 0, + color: '#222222', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 'l2', + tint: { stroke: 'accent' }, + frame: { x: 0.0762, y: 0.4667, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#857d72', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'sun', + }, + { + id: 't3', + role: 'subtitle', + frame: { x: 0.0762, y: 0.5143, w: 0.4381, h: 0.0619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'left', + leading: 1.4, + tracking: 0.32, + color: '#646464', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't4', + role: 'date', + frame: { x: 0.0762, y: 0.5857, w: 0.4381, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'left', + leading: 1.4, + tracking: 0.4, + color: '#222222', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't5', + role: 'body', + frame: { x: 0.0762, y: 0.6571, w: 0.4381, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#222222', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'p6', + role: 'photo:1', + tint: { border: 'ink' }, + frame: { x: 0.5762, y: 0.1619, w: 0.3476, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plates', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0014, color: '#222222' }, + }, + { + id: 't7', + frame: { x: 0.5762, y: 0.7619, w: 0.3476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plates', + kind: 'text', + text: '•', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'left', + leading: 1.4, + tracking: 0.6, + color: '#857d72', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 'p8', + role: 'photo:2', + tint: { border: 'ink' }, + frame: { x: 1.0762, y: 0.1619, w: 0.3476, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plates', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0014, color: '#222222' }, + }, + { + id: 't9', + frame: { x: 1.0762, y: 0.7619, w: 0.3476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plates', + kind: 'text', + text: '••', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'left', + leading: 1.4, + tracking: 0.6, + color: '#857d72', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 'p10', + role: 'photo:3', + tint: { border: 'ink' }, + frame: { x: 1.5762, y: 0.1619, w: 0.3476, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plates', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0014, color: '#222222' }, + }, + { + id: 't11', + frame: { x: 1.5762, y: 0.7619, w: 0.3476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plates', + kind: 'text', + text: '•••', + font: 'montserrat', + size: 0.0381, + weight: 300, + italic: false, + align: 'left', + leading: 1.4, + tracking: 0.6, + color: '#857d72', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/more-postcard.data.ts b/shared/src/book/templates/data/more-postcard.data.ts new file mode 100644 index 000000000..83f83e3e6 --- /dev/null +++ b/shared/src/book/templates/data/more-postcard.data.ts @@ -0,0 +1,793 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More illustrated postcard pages: a large letter cover whose title is + * filled with the photo, an airmail letter spread of words only and a rack + * of seven picture postcards. Drawn in postcard. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_POSTCARD: readonly BookDecoratedTemplate[] = [ + { + id: 'postcard-greetings', + labelKey: 'studio.templates.name.postcardGreetings', + kind: 'single', + archetype: 'postcard', + tags: ['postcard', 'large-letter', 'word-art', 'photo-filled', 'sunburst', 'one-photo', 'lively'], + descr: + 'A large letter postcard: a soft sunburst behind a dashed border, the year, the title in huge display serif capitals filled with the photo and shadowed in coral, a script line, a star rule, the photo with a wavy edge, lemons and a postmark.', + background: '#e3f1e8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + keep: true, + frame: { x: -0.05, y: -0.0714, w: 1.1, h: 1.1 }, + rotation: 0, + opacity: 0.4, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f3d58a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0476, y: 0.0476, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#1f2d4d', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'dashed', + radius: 0.0071, + }, + { + id: 't3', + role: 'date', + frame: { x: 0.2619, y: 0.0905, w: 0.4762, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#1f2d4d', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't4', + role: 'title', + fillPhoto: 'photo:1', + tint: { outline: 'ink', shadow: 'accent' }, + frame: { x: 0.0762, y: 0.1429, w: 0.8476, h: 0.2857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'dmserif', + size: 0.3333, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#1f2d4d', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + outline: { color: '#1f2d4d', width: 0.0033 }, + shadow: { dx: 0.0095, dy: 0.0095, color: '#c8453d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.3333, + }, + { + id: 't5', + role: 'subtitle', + frame: { x: 0.1143, y: 0.4381, w: 0.7714, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'dancing', + size: 0.1238, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#c8453d', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1238, + }, + { + id: 's6', + tint: { colors: ['ink'] }, + frame: { x: 0.3095, y: 0.5238, w: 0.381, h: 0.0653 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'sticker', + stickerId: 'starRule', + colors: ['#1f2d4d'], + flipX: false, + }, + { + id: 'p7', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.0952, y: 0.6, w: 0.8095, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + edge: 'wavy', + edgeSize: 0.0095, + }, + { + id: 's8', + tint: { colors: ['accent3', null, 'ink'] }, + frame: { x: 0.7476, y: 0.5143, w: 0.1905, h: 0.1905 }, + rotation: 18, + opacity: 1, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'lemonBranch', + colors: ['#f3d58a', '#3f8f4f', '#1f2d4d'], + flipX: false, + }, + { + id: 's9', + tint: { colors: ['ink'] }, + frame: { x: 0.0762, y: 0.8381, w: 0.181, h: 0.1052 }, + rotation: -8, + opacity: 0.8, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#1f2d4d'], + flipX: false, + }, + ], + }, + { + id: 'postcard-airmail', + labelKey: 'studio.templates.name.postcardAirmail', + kind: 'inner', + archetype: 'postcard', + tags: ['postcard', 'airmail', 'letter', 'illustrated', 'stamp', 'words-only', 'story', 'calm'], + descr: + 'Airmail stationery without photos: striped coral bands at head and foot, the date, a large display serif title, a script line and a wave rule over a drawn church and a passport stamp; on the right a stamp, a postmark and the long story.', + background: '#e3f1e8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent', bg: 'paper' }, + frame: { x: -0.0143, y: -0.0143, w: 2.0286, h: 0.0572 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#c8453d', + gradient: 'none', + paint: { type: 'pattern', pattern: 'stripes', fg: '#c8453d', bg: '#e3f1e8', scale: 0.6, angle: 45 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { fg: 'accent', bg: 'paper' }, + frame: { x: -0.0143, y: 0.9571, w: 2.0286, h: 0.0572 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#c8453d', + gradient: 'none', + paint: { type: 'pattern', pattern: 'stripes', fg: '#c8453d', bg: '#e3f1e8', scale: 0.6, angle: 45 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + keep: true, + frame: { x: 0.5333, y: 0.5524, w: 0.4095, h: 0.4095 }, + rotation: 0, + opacity: 0.35, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ec8f6a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + keep: true, + tint: { colors: [null, 'ink', 'accent2', 'accent3'] }, + frame: { x: 0.5714, y: 0.5905, w: 0.3333, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'santoriniChurch', + colors: ['#fbfaf5', '#1f2d4d', '#ec8f6a', '#f3d58a'], + flipX: false, + }, + { + id: 's5', + tint: { colors: ['ink'] }, + frame: { x: 0.0857, y: 0.7143, w: 0.2857, h: 0.2 }, + rotation: -12, + opacity: 0.7, + locked: false, + kind: 'sticker', + stickerId: 'passportStamp', + colors: ['#1f2d4d'], + flipX: false, + }, + { + id: 't6', + role: 'date', + frame: { x: 0.0762, y: 0.1143, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.42, + color: '#1f2d4d', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't7', + role: 'title', + frame: { x: 0.0762, y: 0.1619, w: 0.8476, h: 0.3238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'dmserif', + size: 0.381, + weight: 400, + italic: false, + align: 'left', + leading: 0.92, + tracking: 0, + color: '#1f2d4d', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.381, + }, + { + id: 't8', + role: 'subtitle', + frame: { x: 0.0762, y: 0.4952, w: 0.8476, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'dancing', + size: 0.1333, + weight: 400, + italic: false, + align: 'left', + leading: 1.1, + tracking: 0, + color: '#c8453d', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1333, + }, + { + id: 's9', + tint: { colors: ['ink'] }, + frame: { x: 0.0762, y: 0.6048, w: 0.3, h: 0.0429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'sticker', + stickerId: 'waveRule', + colors: ['#1f2d4d'], + flipX: false, + }, + { + id: 's10', + tint: { colors: ['accent2', 'ink', 'accent3', null] }, + frame: { x: 1.7524, y: 0.0952, w: 0.1524, h: 0.1905 }, + rotation: 4, + opacity: 1, + locked: false, + group: 'stamp', + kind: 'sticker', + stickerId: 'postageStamp', + colors: ['#ec8f6a', '#1f2d4d', '#f3d58a', '#f7edd5'], + flipX: false, + }, + { + id: 's11', + tint: { colors: ['ink'] }, + frame: { x: 1.6, y: 0.1238, w: 0.2, h: 0.1163 }, + rotation: -10, + opacity: 0.8, + locked: false, + group: 'stamp', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#1f2d4d'], + flipX: false, + }, + { + id: 'l12', + tint: { stroke: 'accent' }, + frame: { x: 1.0762, y: 0.2524, w: 0.4571, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { + x: 0, + y: 0.5, + }, + { + x: 1, + y: 0.5, + }, + ], + curve: 'straight', + stroke: '#c8453d', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'star', + }, + { + id: 't13', + role: 'body', + frame: { x: 1.0762, y: 0.3048, w: 0.8476, h: 0.6095 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#1f2d4d', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'postcard-rack', + labelKey: 'studio.templates.name.postcardRack', + kind: 'inner', + archetype: 'postcard', + tags: ['postcard', 'collage', 'pinboard', 'tape', 'tilted', 'seven-photos', 'lively'], + descr: + 'Seven photos as picture postcards in white borders, tilted and overlapping, held by tape, one cancelled by a postmark; a pale sun behind the date, the display serif title and the script line, the story at the foot.', + background: '#e3f1e8', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + keep: true, + frame: { x: -0.12, y: -0.14, w: 0.5, h: 0.5102 }, + rotation: 0, + opacity: 0.55, + locked: false, + kind: 'shape', + shape: 'sun-cutout', + fill: '#f3d58a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.0762, y: 0.0857, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.42, + color: '#1f2d4d', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.1333, w: 0.8476, h: 0.1238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'dmserif', + size: 0.2286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#1f2d4d', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.2286, + }, + { + id: 't4', + role: 'subtitle', + frame: { x: 0.0762, y: 0.2571, w: 0.8476, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'dancing', + size: 0.1048, + weight: 400, + italic: false, + align: 'left', + leading: 1.1, + tracking: 0, + color: '#c8453d', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1048, + }, + { + id: 'p5', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.0762, y: 0.381, w: 0.5238, h: 0.3714 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'print', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 's6', + tint: { colors: ['accent3'] }, + frame: { x: 0.2619, y: 0.3429, w: 0.1524, h: 0.0762 }, + rotation: -8, + opacity: 0.85, + locked: false, + group: 'print', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#f3d58a'], + flipX: false, + }, + { + id: 'p7', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 0.6, y: 0.3333, w: 0.3048, h: 0.381 }, + rotation: 4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 'p8', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 0.4, y: 0.6857, w: 0.3333, h: 0.2381 }, + rotation: 2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 'p9', + role: 'photo:4', + tint: { shadow: 'ink' }, + frame: { x: 1.0762, y: 0.0762, w: 0.4, h: 0.2857 }, + rotation: 3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 'p10', + role: 'photo:5', + tint: { shadow: 'ink' }, + frame: { x: 1.5048, y: 0.1048, w: 0.4, h: 0.2857 }, + rotation: -4, + opacity: 1, + locked: false, + group: 'tape', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 's11', + tint: { colors: ['accent3'] }, + frame: { x: 1.6286, y: 0.0667, w: 0.1524, h: 0.0762 }, + rotation: 6, + opacity: 0.85, + locked: false, + group: 'tape', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#f3d58a'], + flipX: false, + }, + { + id: 'p12', + role: 'photo:6', + tint: { shadow: 'ink' }, + frame: { x: 1.0952, y: 0.4095, w: 0.3048, h: 0.381 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 's13', + tint: { colors: ['accent2', 'paper'] }, + frame: { x: 1.0571, y: 0.3905, w: 0.1905, h: 0.054 }, + rotation: -30, + opacity: 0.9, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'washiStripes', + colors: ['#ec8f6a', '#e3f1e8'], + flipX: false, + }, + { + id: 'p14', + role: 'photo:7', + tint: { shadow: 'ink' }, + frame: { x: 1.4381, y: 0.4286, w: 0.4667, h: 0.3143 }, + rotation: 5, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0105, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1f2d4d', alpha: 0.25 }, + }, + { + id: 's15', + tint: { colors: ['ink'] }, + frame: { x: 1.7238, y: 0.6762, w: 0.181, h: 0.1052 }, + rotation: -12, + opacity: 0.8, + locked: false, + group: 'postmark', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#1f2d4d'], + flipX: false, + }, + { + id: 't16', + role: 'body', + frame: { x: 1.0762, y: 0.8286, w: 0.8476, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#1f2d4d', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/more-poster-pop.data.ts b/shared/src/book/templates/data/more-poster-pop.data.ts new file mode 100644 index 000000000..ca5e4d510 --- /dev/null +++ b/shared/src/book/templates/data/more-poster-pop.data.ts @@ -0,0 +1,1057 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More poster pop pages: a fourth cover with a round photo in a sunflower + * disc, and three double spreads that give the set a words only poster, a + * three photo spread of tilted prints and a wall of seven. Blocks of colour, + * heavy capitals with a hard shadow, white bordered photos and tropical + * stickers, as on the first poster pop pages. Drawn in poster-pop. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_POSTER_POP: readonly BookDecoratedTemplate[] = [ + { + id: 'poster-pop-sun-disc', + labelKey: 'studio.templates.name.posterPopSunDisc', + kind: 'single', + archetype: 'poster-pop', + tags: ['poster', 'bold', 'two-tone', 'sun-disc', 'round-photo', 'tropical', 'stickers', 'loud'], + descr: + 'Teal page with a burst of rays and a sunflower disc holding a round photo in a white ring, palm and monstera leaves at the edges, a hibiscus on the ring, a heavy title and subtitle on a coral foot.', + background: '#13807b', + backgroundToken: 'accent3', + elements: [ + { + id: 's1', + keep: true, + frame: { x: 0, y: -0.0857, w: 1, h: 1 }, + rotation: 0, + opacity: 0.3, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#fbf1de', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.1714, y: 0.0857, w: 0.6571, h: 0.6571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ffbf3c', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: -0.0143, y: 0.6952, w: 1.0286, h: 0.319 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ef4e45', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + tint: { colors: ['paper', 'ink'] }, + frame: { x: -0.0952, y: 0.4381, w: 0.2857, h: 0.2857 }, + rotation: -32, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'palmLeaf', + colors: ['#fbf1de', '#1d1a2f'], + flipX: false, + }, + { + id: 's5', + tint: { colors: ['accent2', 'ink'] }, + frame: { x: 0.8095, y: 0.2, w: 0.2667, h: 0.2667 }, + rotation: 28, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'monsteraLeaf', + colors: ['#ffbf3c', '#1d1a2f'], + flipX: false, + }, + { + id: 'p6', + role: 'photo:1', + keep: true, + tint: { shadow: 'ink' }, + frame: { x: 0.2524, y: 0.1667, w: 0.4952, h: 0.4952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0167, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 's7', + tint: { colors: ['accent', 'accent2', 'accent3', 'ink'] }, + frame: { x: 0.6476, y: 0.5048, w: 0.1524, h: 0.1524 }, + rotation: 14, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'hibiscus', + colors: ['#ef4e45', '#ffbf3c', '#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 's8', + tint: { colors: ['accent2'] }, + frame: { x: 0.0952, y: 0.1048, w: 0.0952, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ffbf3c'], + flipX: false, + }, + { + id: 't9', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.6, y: 0.0571, w: 0.3238, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0405, + weight: 700, + italic: false, + align: 'right', + leading: 1, + tracking: 0.38, + color: '#fbf1de', + token: 'paper', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#1d1a2f', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0405, + }, + { + id: 't10', + role: 'title', + on: 'accent', + tint: { shadow: 'ink' }, + frame: { x: 0.0762, y: 0.7143, w: 0.8476, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'archivo', + size: 0.2286, + weight: 400, + italic: false, + align: 'center', + leading: 0.86, + tracking: 0, + color: '#fbf1de', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0067, dy: 0.0067, color: '#1d1a2f', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2286, + }, + { + id: 't11', + role: 'subtitle', + on: 'accent', + frame: { x: 0.0762, y: 0.8952, w: 0.8476, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'anton', + size: 0.0571, + weight: 400, + italic: false, + align: 'center', + leading: 1.05, + tracking: 0, + color: '#1d1a2f', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0571, + }, + ], + }, + { + id: 'poster-pop-headline', + labelKey: 'studio.templates.name.posterPopHeadline', + kind: 'inner', + archetype: 'poster-pop', + tags: ['poster', 'bold', 'two-tone', 'words-only', 'story', 'no-photos', 'stickers', 'loud'], + descr: + 'A coral left page with a burst of rays, the title in huge heavy capitals with a hard shadow, the date on an ink band and tropical leaves; the right page a sunflower band with the subtitle, a sun and the long story.', + background: '#fbf1de', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ef4e45', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.0476, y: 0.1714, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.25, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#fbf1de', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + tint: { colors: ['accent3', 'ink'] }, + frame: { x: -0.0952, y: 0.7333, w: 0.3048, h: 0.3048 }, + rotation: -20, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'monsteraLeaf', + colors: ['#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 's4', + tint: { colors: ['accent3', 'ink'] }, + frame: { x: 0.7048, y: -0.0571, w: 0.2286, h: 0.2286 }, + rotation: 30, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'palmLeaf', + colors: ['#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 's5', + tint: { colors: ['accent2', 'paper', 'accent3', 'ink'] }, + frame: { x: 0.7238, y: 0.7429, w: 0.1714, h: 0.1714 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'hibiscus', + colors: ['#ffbf3c', '#fbf1de', '#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 't6', + role: 'title', + on: 'accent', + tint: { shadow: 'ink' }, + frame: { x: 0.0762, y: 0.0952, w: 0.8476, h: 0.5524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'archivo', + size: 0.4762, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0, + color: '#fbf1de', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0067, dy: 0.0067, color: '#1d1a2f', alpha: 1 }, + fit: 'shrink', + fitMax: 0.4762, + }, + { + id: 't7', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.6857, w: 0.5238, h: 0.0429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#fbf1de', + token: 'paper', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#1d1a2f', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 's8', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 0.2857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ffbf3c', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's9', + tint: { colors: ['accent', 'paper'] }, + frame: { x: 1.7524, y: 0.1714, w: 0.1905, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sun', + colors: ['#ef4e45', '#fbf1de'], + flipX: false, + }, + { + id: 't10', + role: 'subtitle', + on: 'accent2', + frame: { x: 1.0762, y: 0.0762, w: 0.6476, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'anton', + size: 0.1048, + weight: 400, + italic: false, + align: 'left', + leading: 1.05, + tracking: 0, + color: '#1d1a2f', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.1048, + }, + { + id: 'l11', + tint: { stroke: 'accent' }, + frame: { x: 1.0762, y: 0.3238, w: 0.1905, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ef4e45', + strokeWidth: 0.0095, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't12', + role: 'body', + frame: { x: 1.0762, y: 0.3714, w: 0.8476, h: 0.5333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'text', + text: '', + font: 'inter', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#1d1a2f', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's13', + tint: { colors: ['accent'] }, + frame: { x: 1.8381, y: 0.8857, w: 0.1048, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ef4e45'], + flipX: false, + }, + ], + }, + { + id: 'poster-pop-postcards', + labelKey: 'studio.templates.name.posterPopPostcards', + kind: 'inner', + archetype: 'poster-pop', + tags: ['poster', 'bold', 'two-tone', 'tilted-prints', 'three-photos', 'story', 'stickers', 'lively'], + descr: + 'A teal left page with a burst of rays behind a large tilted photo in a white border, a hibiscus and a palm leaf at its corners, the title and date under it; on the right two tilted prints over a coral foot with the subtitle and story.', + background: '#fbf1de', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#13807b', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.0667, y: 0.0095, w: 0.8667, h: 0.8667 }, + rotation: 0, + opacity: 0.3, + locked: false, + kind: 'shape', + shape: 'sunburst-12', + fill: '#fbf1de', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.1238, y: 0.1048, w: 0.7524, h: 0.581 }, + rotation: -4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 's4', + tint: { colors: ['accent', 'accent2', 'accent3', 'ink'] }, + frame: { x: 0.0571, y: 0.55, w: 0.1714, h: 0.1714 }, + rotation: -12, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'hibiscus', + colors: ['#ef4e45', '#ffbf3c', '#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 's5', + tint: { colors: ['accent2', 'ink'] }, + frame: { x: 0.7238, y: 0.0286, w: 0.2095, h: 0.2095 }, + rotation: 32, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'palmLeaf', + colors: ['#ffbf3c', '#1d1a2f'], + flipX: false, + }, + { + id: 't6', + role: 'title', + on: 'accent3', + tint: { shadow: 'ink' }, + frame: { x: 0.0762, y: 0.7429, w: 0.8476, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'archivo', + size: 0.1905, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0, + color: '#fbf1de', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0067, dy: 0.0067, color: '#1d1a2f', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 't7', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.9095, w: 0.4762, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0405, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#fbf1de', + token: 'paper', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#1d1a2f', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0405, + }, + { + id: 's8', + frame: { x: 1, y: 0.7048, w: 1.0143, h: 0.3095 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ef4e45', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p9', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 1.0857, y: 0.0952, w: 0.5143, h: 0.3905 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 'p10', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 1.5524, y: 0.2, w: 0.3619, h: 0.4381 }, + rotation: 5, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 's11', + tint: { colors: ['paper', 'accent2', 'accent'] }, + frame: { x: 1.4762, y: 0.4952, w: 0.1524, h: 0.1524 }, + rotation: 18, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'frangipani', + colors: ['#fbf1de', '#ffbf3c', '#ef4e45'], + flipX: false, + }, + { + id: 's12', + tint: { colors: ['accent2'] }, + frame: { x: 1.8476, y: 0.0571, w: 0.0952, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ffbf3c'], + flipX: false, + }, + { + id: 't13', + role: 'subtitle', + on: 'accent', + frame: { x: 1.0762, y: 0.7333, w: 0.8476, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'text', + text: '', + font: 'anton', + size: 0.0857, + weight: 400, + italic: false, + align: 'left', + leading: 1.05, + tracking: 0, + color: '#fbf1de', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 't14', + role: 'body', + on: 'accent', + frame: { x: 1.0762, y: 0.8286, w: 0.8476, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'text', + text: '', + font: 'inter', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#fbf1de', + token: 'paper', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'poster-pop-photo-wall', + labelKey: 'studio.templates.name.posterPopPhotoWall', + kind: 'inner', + archetype: 'poster-pop', + tags: ['poster', 'bold', 'photo-wall', 'tilted-prints', 'seven-photos', 'stripes', 'stickers', 'lively'], + descr: + 'A sunflower striped band across both pages behind a wall of seven tilted photos in white borders, the title in heavy coral capitals with a hard shadow and the date at the head of the left page, tropical stickers round the prints.', + background: '#fbf1de', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent2', bg: 'paper' }, + frame: { x: -0.0143, y: 0.3714, w: 2.0286, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ffbf3c', + gradient: 'none', + paint: { type: 'pattern', pattern: 'stripes', fg: '#ffbf3c', bg: '#fbf1de', scale: 1.2, angle: 45 }, + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { colors: ['accent3', 'ink'] }, + frame: { x: -0.1048, y: 0.7714, w: 0.3048, h: 0.3048 }, + rotation: -22, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'monsteraLeaf', + colors: ['#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 's3', + tint: { colors: ['accent3', 'ink'] }, + frame: { x: 1.8286, y: -0.0667, w: 0.2286, h: 0.2286 }, + rotation: 34, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'palmLeaf', + colors: ['#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 't4', + role: 'title', + tint: { shadow: 'ink' }, + frame: { x: 0.0762, y: 0.0667, w: 0.8476, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'archivo', + size: 0.1905, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0, + color: '#ef4e45', + token: 'accent', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0067, dy: 0.0067, color: '#1d1a2f', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 't5', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.2571, w: 0.4762, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0405, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#fbf1de', + token: 'paper', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#1d1a2f', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0405, + }, + { + id: 'p6', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.0857, y: 0.3524, w: 0.5048, h: 0.5619 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 'p7', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 0.6095, y: 0.3524, w: 0.3143, h: 0.2667 }, + rotation: 4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 'p8', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 0.619, y: 0.6667, w: 0.3048, h: 0.2571 }, + rotation: -5, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 's9', + tint: { colors: ['accent', 'accent2', 'accent3', 'ink'] }, + frame: { x: 0.0381, y: 0.8, w: 0.1524, h: 0.1524 }, + rotation: -14, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'hibiscus', + colors: ['#ef4e45', '#ffbf3c', '#13807b', '#1d1a2f'], + flipX: false, + }, + { + id: 'p10', + role: 'photo:4', + tint: { shadow: 'ink' }, + frame: { x: 1.0857, y: 0.0952, w: 0.381, h: 0.2857 }, + rotation: 3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 'p11', + role: 'photo:5', + tint: { shadow: 'ink' }, + frame: { x: 1.5048, y: 0.0762, w: 0.4095, h: 0.3333 }, + rotation: -4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 'p12', + role: 'photo:6', + tint: { shadow: 'ink' }, + frame: { x: 1.0952, y: 0.4381, w: 0.4952, h: 0.4762 }, + rotation: -2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 'p13', + role: 'photo:7', + tint: { shadow: 'ink' }, + frame: { x: 1.6286, y: 0.4762, w: 0.2952, h: 0.2667 }, + rotation: 5, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0152, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#1d1a2f', alpha: 0.25 }, + }, + { + id: 's14', + tint: { colors: ['accent', 'accent2'] }, + frame: { x: 1.7333, y: 0.7905, w: 0.1524, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'corner', + kind: 'sticker', + stickerId: 'sun', + colors: ['#ef4e45', '#ffbf3c'], + flipX: false, + }, + { + id: 's15', + tint: { colors: ['paper', 'accent2', 'accent'] }, + frame: { x: 1.6286, y: 0.8476, w: 0.1143, h: 0.1143 }, + rotation: 18, + opacity: 1, + locked: false, + group: 'corner', + kind: 'sticker', + stickerId: 'frangipani', + colors: ['#fbf1de', '#ffbf3c', '#ef4e45'], + flipX: false, + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/more-spine-band.data.ts b/shared/src/book/templates/data/more-spine-band.data.ts new file mode 100644 index 000000000..712ae08c2 --- /dev/null +++ b/shared/src/book/templates/data/more-spine-band.data.ts @@ -0,0 +1,1197 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More of the spine band look: a cloth bound cover with a photo tipped in, + * and three double spreads with a band of book cloth running down the fold + * like the spine of a bound album. Drawn in fabric-classic. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_SPINE_BAND: readonly BookDecoratedTemplate[] = [ + { + id: 'spine-band-plate', + labelKey: 'studio.templates.name.spineBandPlate', + kind: 'single', + archetype: 'spine-band', + tags: ['cloth', 'linen', 'spine', 'tipped-in', 'label', 'photo', 'classic'], + descr: + 'Slate blue linen cloth with an ink spine band, a stitched seam and a terracotta trim; a photo tipped in on a cream mount, a cream label under it with the title in a serif, a script line and the year.', + background: '#5f7d99', + backgroundToken: 'accent', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#5f7d99', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { fg: 'paper' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.14, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#efe8db', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#efe8db', bg: null, scale: 0.8, angle: 0 }, + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: -0.0143, y: -0.0143, w: 0.1667, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'band', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 0.1524, y: -0.0143, w: 0.0095, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'band', + kind: 'shape', + shape: 'rect', + fill: '#b0603c', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l5', + tint: { stroke: 'paper' }, + frame: { x: 0.1238, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.8, + locked: false, + group: 'band', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#efe8db', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's6', + tint: { colors: ['paper'] }, + frame: { x: 0.0238, y: 0.8571, w: 0.0857, h: 0.0857 }, + rotation: 0, + opacity: 0.7, + locked: false, + group: 'band', + kind: 'sticker', + stickerId: 'fleuron', + colors: ['#efe8db'], + flipX: false, + }, + { + id: 's7', + frame: { x: 0.2638, y: 0.0981, w: 0.6476, h: 0.5048 }, + rotation: 0, + opacity: 0.2, + locked: false, + group: 'plate', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's8', + frame: { x: 0.2571, y: 0.0905, w: 0.6476, h: 0.5048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plate', + kind: 'shape', + shape: 'rect', + fill: '#efe8db', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p9', + role: 'photo:1', + tint: { border: 'ink' }, + frame: { x: 0.281, y: 0.1143, w: 0.6, h: 0.4571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'plate', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0014, color: '#2e2a26' }, + }, + { + id: 's10', + frame: { x: 0.3114, y: 0.6733, w: 0.5524, h: 0.2381 }, + rotation: 0, + opacity: 0.2, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0.0048, + }, + { + id: 's11', + frame: { x: 0.3048, y: 0.6667, w: 0.5524, h: 0.2381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: '#efe8db', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0.0048, + }, + { + id: 's12', + frame: { x: 0.319, y: 0.681, w: 0.5238, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#b0603c', + strokeToken: 'accent2', + strokeWidth: 0.0014, + strokeStyle: 'solid', + radius: 0.0029, + }, + { + id: 't13', + role: 'title', + on: 'paper', + frame: { x: 0.3429, y: 0.6952, w: 0.4762, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.1333, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#2e2a26', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1333, + }, + { + id: 't14', + role: 'subtitle', + on: 'paper', + frame: { x: 0.3429, y: 0.7762, w: 0.4762, h: 0.0619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'sacramento', + size: 0.1048, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#b0603c', + token: 'accent2', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1048, + }, + { + id: 't15', + role: 'date', + on: 'paper', + frame: { x: 0.3429, y: 0.8429, w: 0.4762, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.42, + color: '#68635c', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + ], + }, + { + id: 'spine-band-cloth-story', + labelKey: 'studio.templates.name.spineBandClothStory', + kind: 'inner', + archetype: 'spine-band', + tags: ['cloth', 'linen', 'spine', 'words-only', 'story', 'title', 'calm'], + descr: + 'The left page slate blue linen with a pale fleuron, the date, the title in a large serif, a terracotta rule and a script line; an ink spine band down the fold; the long story on the cream right page between ornamented rules.', + background: '#efe8db', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#5f7d99', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { fg: 'paper' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.14, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#efe8db', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#efe8db', bg: null, scale: 0.8, angle: 0 }, + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: 0.9524, y: -0.0143, w: 0.0952, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'spine', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l4', + tint: { stroke: 'paper' }, + frame: { x: 0.9619, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.8, + locked: false, + group: 'spine', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#efe8db', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l5', + tint: { stroke: 'paper' }, + frame: { x: 1.0324, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.8, + locked: false, + group: 'spine', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#efe8db', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's6', + tint: { colors: ['paper'] }, + frame: { x: 0.0762, y: 0.0762, w: 0.1143, h: 0.1143 }, + rotation: 0, + opacity: 0.55, + locked: false, + kind: 'sticker', + stickerId: 'fleuron', + colors: ['#efe8db'], + flipX: false, + }, + { + id: 't7', + role: 'date', + on: 'accent', + frame: { x: 0.0762, y: 0.3524, w: 0.8, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.42, + color: '#efe8db', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't8', + role: 'title', + on: 'accent', + frame: { x: 0.0762, y: 0.4048, w: 0.8, h: 0.3238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.2857, + weight: 500, + italic: false, + align: 'left', + leading: 0.95, + tracking: 0, + color: '#efe8db', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.2857, + }, + { + id: 's9', + frame: { x: 0.0762, y: 0.7524, w: 0.1429, h: 0.0048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'shape', + shape: 'rect', + fill: '#b0603c', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't10', + role: 'subtitle', + on: 'accent', + frame: { x: 0.0762, y: 0.7762, w: 0.8, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'sacramento', + size: 0.1143, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#efe8db', + token: 'paper', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1143, + }, + { + id: 's11', + tint: { colors: ['accent2'] }, + frame: { x: 1.1429, y: 0.0857, w: 0.3, h: 0.0514 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'sticker', + stickerId: 'diamondRule', + colors: ['#b0603c'], + flipX: false, + }, + { + id: 't12', + role: 'body', + frame: { x: 1.1429, y: 0.1714, w: 0.781, h: 0.681 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#2e2a26', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'l13', + tint: { stroke: 'accent2' }, + frame: { x: 1.1429, y: 0.8857, w: 0.781, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'story', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#b0603c', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'diamond', + }, + ], + }, + { + id: 'spine-band-gingham-trio', + labelKey: 'studio.templates.name.spineBandGinghamTrio', + kind: 'inner', + archetype: 'spine-band', + tags: ['cloth', 'gingham', 'spine', 'three-photos', 'title', 'caption', 'calm'], + descr: + 'A tall photo bled off the left page, a terracotta gingham spine band down the fold with stitched trims, two framed photos on the cream right page, a caption beside them and the title, a script line and the date under a rule.', + background: '#efe8db', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 0.8857, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + tint: { fg: 'accent2', bg: 'paper' }, + frame: { x: 0.9429, y: -0.0143, w: 0.1143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'spine', + kind: 'shape', + shape: 'rect', + fill: '#b0603c', + gradient: 'none', + paint: { type: 'pattern', pattern: 'gingham', fg: '#b0603c', bg: '#efe8db', scale: 0.6, angle: 0 }, + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: 0.9429, y: -0.0143, w: 0.0095, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'spine', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 1.0476, y: -0.0143, w: 0.0095, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'spine', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.9619, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.7, + locked: false, + group: 'spine', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#2e2a26', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l6', + tint: { stroke: 'ink' }, + frame: { x: 1.0324, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.7, + locked: false, + group: 'spine', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#2e2a26', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p7', + role: 'photo:2', + tint: { border: 'ink' }, + frame: { x: 1.1429, y: 0.0762, w: 0.4667, h: 0.5524 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0014, color: '#2e2a26' }, + }, + { + id: 'p8', + role: 'photo:3', + tint: { border: 'ink' }, + frame: { x: 1.6381, y: 0.0762, w: 0.2857, h: 0.3714 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0014, color: '#2e2a26' }, + }, + { + id: 't9', + role: 'caption', + frame: { x: 1.6381, y: 0.4714, w: 0.2857, h: 0.1571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0381, + weight: 400, + italic: true, + align: 'left', + leading: 1.35, + tracking: 0, + color: '#68635c', + token: 'muted', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 's10', + frame: { x: 1.1429, y: 0.6667, w: 0.1429, h: 0.0048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'shape', + shape: 'rect', + fill: '#b0603c', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't11', + role: 'title', + frame: { x: 1.1429, y: 0.6905, w: 0.781, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.1524, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#2e2a26', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1524, + }, + { + id: 't12', + role: 'subtitle', + frame: { x: 1.1429, y: 0.8048, w: 0.781, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'sacramento', + size: 0.0952, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#b0603c', + token: 'accent2', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't13', + role: 'date', + frame: { x: 1.1429, y: 0.881, w: 0.781, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#68635c', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + ], + }, + { + id: 'spine-band-album', + labelKey: 'studio.templates.name.spineBandAlbum', + kind: 'inner', + archetype: 'spine-band', + tags: ['grid', 'album', 'spine', 'seven-photos', 'label', 'gutter-5mm', 'calm'], + descr: + 'A bound album: a tall photo beside three stacked ones, an ink spine band with stitched seams down the fold, a wide photo over two on the right page and a slate blue stitched cloth label with the title, date and script line.', + background: '#efe8db', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: 0.0762, y: 0.0762, w: 0.3976, h: 0.8476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p2', + role: 'photo:2', + frame: { x: 0.4976, y: 0.0762, w: 0.3976, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p3', + role: 'photo:3', + frame: { x: 0.4976, y: 0.3667, w: 0.3976, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p4', + role: 'photo:4', + frame: { x: 0.4976, y: 0.6571, w: 0.3976, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's5', + frame: { x: 0.9524, y: -0.0143, w: 0.0952, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'spine', + kind: 'shape', + shape: 'rect', + fill: '#2e2a26', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l6', + tint: { stroke: 'paper' }, + frame: { x: 0.9619, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.8, + locked: false, + group: 'spine', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#efe8db', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l7', + tint: { stroke: 'paper' }, + frame: { x: 1.0324, y: 0.0286, w: 0.0057, h: 0.9429 }, + rotation: 0, + opacity: 0.8, + locked: false, + group: 'spine', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#efe8db', + strokeWidth: 0.0021, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p8', + role: 'photo:5', + frame: { x: 1.1048, y: 0.0762, w: 0.819, h: 0.381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p9', + role: 'photo:6', + frame: { x: 1.1048, y: 0.481, w: 0.3976, h: 0.2381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p10', + role: 'photo:7', + frame: { x: 1.5262, y: 0.481, w: 0.3976, h: 0.2381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's11', + frame: { x: 1.1048, y: 0.7429, w: 0.819, h: 0.181 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: '#5f7d99', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's12', + frame: { x: 1.119, y: 0.7571, w: 0.7905, h: 0.1524 }, + rotation: 0, + opacity: 0.8, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#efe8db', + strokeToken: 'paper', + strokeWidth: 0.0021, + strokeStyle: 'dashed', + radius: 0, + }, + { + id: 't13', + role: 'title', + on: 'accent', + frame: { x: 1.1429, y: 0.7667, w: 0.7429, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'cormorant', + size: 0.1143, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#efe8db', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1143, + }, + { + id: 't14', + role: 'date', + on: 'accent', + frame: { x: 1.1429, y: 0.8524, w: 0.3714, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#efe8db', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 't15', + role: 'subtitle', + on: 'accent', + frame: { x: 1.5333, y: 0.8381, w: 0.3524, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'sacramento', + size: 0.0857, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0, + color: '#efe8db', + token: 'paper', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/more-stamp-collage.data.ts b/shared/src/book/templates/data/more-stamp-collage.data.ts new file mode 100644 index 000000000..a65f573be --- /dev/null +++ b/shared/src/book/templates/data/more-stamp-collage.data.ts @@ -0,0 +1,1060 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * More stamp collage pages: an airmail envelope cover with one large + * perforated stamp, a postmarked letter of words only, a tall arch beside + * two stamps, and a souvenir sheet of seven stamps. Drawn in india-stamp. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const MORE_STAMP_COLLAGE: readonly BookDecoratedTemplate[] = [ + { + id: 'stamp-collage-airmail', + labelKey: 'studio.templates.name.stampCollageAirmail', + kind: 'single', + archetype: 'stamp-collage', + tags: ['stamps', 'airmail', 'envelope', 'stripes', 'perforated', 'postmark', 'one-photo', 'lively'], + descr: + 'An airmail envelope: magenta stripes round a cream field, one large perforated stamp tilted in a white border with a postmark over its corner, a paper plane, the title in a fat display serif and a script line.', + background: '#fbf2e2', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent', bg: 'paper' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#bd2275', + gradient: 'none', + paint: { type: 'pattern', pattern: 'stripes', fg: '#bd2275', bg: '#fbf2e2', scale: 1, angle: 45 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#fbf2e2', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + on: 'paper', + frame: { x: 0.1048, y: 0.0952, w: 0.3333, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.42, + color: '#695c64', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't4', + tint: { highlight: 'accent' }, + frame: { x: 0.5714, y: 0.0952, w: 0.3238, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: 'Par avion', + font: 'montserrat', + size: 0.0333, + weight: 700, + italic: false, + align: 'right', + leading: 1, + tracking: 0.4, + color: '#fbf2e2', + token: 'paper', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#bd2275', alpha: 1, padX: 0.0119, padY: 0.0048, radius: 0 }, + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 'p5', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.2667, y: 0.1714, w: 0.4667, h: 0.5333 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'stamp', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0167, color: '#ffffff' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#2a1b2e', alpha: 0.2 }, + edge: 'perforated', + edgeSize: 0.0076, + }, + { + id: 's6', + tint: { colors: ['ink'] }, + frame: { x: 0.5619, y: 0.5524, w: 0.2952, h: 0.1714 }, + rotation: -10, + opacity: 0.88, + locked: false, + group: 'stamp', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#2a1b2e'], + flipX: false, + }, + { + id: 's7', + tint: { colors: ['accent2', 'accent', 'ink'] }, + frame: { x: 0.0952, y: 0.5524, w: 0.1905, h: 0.1143 }, + rotation: -14, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'airplane', + colors: ['#e9801a', '#bd2275', '#2a1b2e'], + flipX: false, + }, + { + id: 't8', + role: 'title', + on: 'paper', + frame: { x: 0.1048, y: 0.7333, w: 0.7905, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'abril', + size: 0.2286, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.2286, + }, + { + id: 't9', + role: 'subtitle', + on: 'paper', + frame: { x: 0.1905, y: 0.8571, w: 0.619, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'parisienne', + size: 0.0952, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#bd2275', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + ], + }, + { + id: 'stamp-collage-letter', + labelKey: 'studio.templates.name.stampCollageLetter', + kind: 'inner', + archetype: 'stamp-collage', + tags: ['stamps', 'letter', 'postmark', 'checker', 'words-only', 'story', 'calm'], + descr: + 'Words only: a magenta checker strip down the left edge, a round postmark with the place on its ring and the date inside, the title in a fat display serif over a stamp and a passport stamp; on the right the story on a letter sheet.', + background: '#fbf2e2', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent', bg: 'paper' }, + frame: { x: -0.0143, y: -0.0143, w: 0.1619, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#bd2275', + gradient: 'none', + paint: { type: 'pattern', pattern: 'checker', fg: '#bd2275', bg: '#fbf2e2', scale: 0.9, angle: 0 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l2', + tint: { stroke: 'ink' }, + frame: { x: 0.3048, y: 0.1952, w: 0.2857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#2a1b2e', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'wave', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l3', + tint: { stroke: 'ink' }, + frame: { x: 0.3048, y: 0.2571, w: 0.2857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#2a1b2e', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'wave', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's4', + keep: true, + frame: { x: 0.5714, y: 0.0952, w: 0.3048, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#2a1b2e', + strokeToken: 'ink', + strokeWidth: 0.0029, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + keep: true, + frame: { x: 0.6143, y: 0.1381, w: 0.219, h: 0.219 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#2a1b2e', + strokeToken: 'ink', + strokeWidth: 0.0014, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't6', + role: 'subtitle', + keep: true, + frame: { x: 0.5786, y: 0.1024, w: 0.2905, h: 0.2905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.28, + color: '#2a1b2e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + curve: { type: 'circle', bend: 40, start: 0 }, + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 't7', + role: 'date', + keep: true, + frame: { x: 0.6381, y: 0.219, w: 0.1714, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'postmark', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 700, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0.2, + color: '#2a1b2e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 't8', + role: 'title', + frame: { x: 0.2286, y: 0.4857, w: 0.6952, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'abril', + size: 0.2667, + weight: 400, + italic: false, + align: 'left', + leading: 0.95, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.2667, + }, + { + id: 'l9', + tint: { stroke: 'accent' }, + frame: { x: 0.2286, y: 0.7619, w: 0.2857, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#bd2275', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'diamond', + }, + { + id: 's10', + tint: { colors: ['accent', 'accent3', 'accent2', null] }, + frame: { x: 0.2286, y: 0.7905, w: 0.1524, h: 0.1905 }, + rotation: -6, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'postageStamp', + colors: ['#bd2275', '#12807f', '#e9801a', '#ffffff'], + flipX: false, + }, + { + id: 's11', + tint: { colors: ['accent3'] }, + frame: { x: 0.4381, y: 0.8, w: 0.219, h: 0.1524 }, + rotation: 8, + opacity: 0.85, + locked: false, + kind: 'sticker', + stickerId: 'passportStamp', + colors: ['#12807f'], + flipX: false, + }, + { + id: 's12', + frame: { x: 1.0952, y: 0.0762, w: 0.8095, h: 0.8476 }, + rotation: 0, + opacity: 0.16, + locked: false, + group: 'letter', + kind: 'shape', + shape: 'rect', + fill: '#e9801a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't13', + role: 'body', + on: 'paper', + frame: { x: 1.1524, y: 0.1524, w: 0.6952, h: 0.6286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'letter', + kind: 'text', + text: '', + font: 'serif', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.6, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'l14', + tint: { stroke: 'accent' }, + frame: { x: 1.1524, y: 0.8286, w: 0.4762, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#bd2275', + strokeWidth: 0.0024, + dash: 'dotted', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's15', + tint: { colors: ['accent2', 'accent', 'ink'] }, + frame: { x: 1.7524, y: 0.0476, w: 0.1905, h: 0.1143 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'airplane', + colors: ['#e9801a', '#bd2275', '#2a1b2e'], + flipX: false, + }, + { + id: 's16', + tint: { colors: ['ink'] }, + frame: { x: 1.6667, y: 0.7905, w: 0.2381, h: 0.1381 }, + rotation: -8, + opacity: 0.85, + locked: false, + kind: 'sticker', + stickerId: 'postmark', + colors: ['#2a1b2e'], + flipX: false, + }, + ], + }, + { + id: 'stamp-collage-arch-stamps', + labelKey: 'studio.templates.name.stampCollageArchStamps', + kind: 'inner', + archetype: 'stamp-collage', + tags: ['stamps', 'arches', 'perforated', 'checker', 'elephant', 'three-photos', 'lively'], + descr: + 'On the left a tall arch photo in a white border standing on a saffron checker band with an elephant and a passport stamp; on the right two perforated stamps, a postmark, the title in a fat display serif, the date and the story.', + background: '#fbf2e2', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent2', bg: 'paper' }, + frame: { x: -0.0143, y: 0.6667, w: 1.0143, h: 0.3476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#e9801a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'checker', fg: '#e9801a', bg: '#fbf2e2', scale: 1, angle: 0 }, + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { colors: ['accent3', 'accent', 'accent2', 'paper'] }, + frame: { x: 0.0571, y: 0.7048, w: 0.219, h: 0.1786 }, + rotation: -8, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'elephant', + colors: ['#12807f', '#bd2275', '#e9801a', '#fbf2e2'], + flipX: false, + }, + { + id: 'p3', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.2857, y: 0.0952, w: 0.4286, h: 0.8095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch-tall', + frameStyle: 'none', + border: { width: 0.0167, color: '#ffffff' }, + shadow: { dx: 0.0076, dy: 0.0076, color: '#2a1b2e', alpha: 0.18 }, + }, + { + id: 's4', + tint: { colors: ['accent'] }, + frame: { x: 0.6, y: 0.7619, w: 0.2286, h: 0.16 }, + rotation: -12, + opacity: 0.9, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'passportStamp', + colors: ['#bd2275'], + flipX: false, + }, + { + id: 'p5', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 1.0952, y: 0.0952, w: 0.3714, h: 0.4381 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#ffffff' }, + shadow: { dx: 0.0057, dy: 0.0057, color: '#2a1b2e', alpha: 0.18 }, + edge: 'perforated', + edgeSize: 0.0067, + }, + { + id: 'p6', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 1.5143, y: 0.1429, w: 0.3714, h: 0.4381 }, + rotation: 4, + opacity: 1, + locked: false, + group: 'stamp', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#ffffff' }, + shadow: { dx: 0.0057, dy: 0.0057, color: '#2a1b2e', alpha: 0.18 }, + edge: 'perforated', + edgeSize: 0.0067, + }, + { + id: 's7', + tint: { colors: ['ink'] }, + frame: { x: 1.6952, y: 0.4952, w: 0.219, h: 0.1286 }, + rotation: -10, + opacity: 0.88, + locked: false, + group: 'stamp', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#2a1b2e'], + flipX: false, + }, + { + id: 't8', + role: 'title', + frame: { x: 1.0952, y: 0.6381, w: 0.8286, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'abril', + size: 0.1905, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'bottom', + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 't9', + role: 'date', + frame: { x: 1.1048, y: 0.781, w: 0.5714, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.42, + color: '#695c64', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't10', + role: 'body', + frame: { x: 1.1048, y: 0.8286, w: 0.819, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'stamp-collage-sheet', + labelKey: 'studio.templates.name.stampCollageSheet', + kind: 'inner', + archetype: 'stamp-collage', + tags: ['stamps', 'souvenir-sheet', 'perforated', 'checker', 'postmark', 'seven-photos', 'lively'], + descr: + 'On the left the title in a fat display serif and the date over one large and two small perforated stamps with a passport stamp; on the right a souvenir sheet on a teal checker holding four stamps, a postmark and the story.', + background: '#fbf2e2', + backgroundToken: 'paper', + elements: [ + { + id: 't1', + role: 'title', + frame: { x: 0.0857, y: 0.0762, w: 0.8381, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'abril', + size: 0.2095, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.2095, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.0952, y: 0.2381, w: 0.5714, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.42, + color: '#695c64', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'p3', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.0952, y: 0.3238, w: 0.4381, h: 0.5524 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'print', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#ffffff' }, + shadow: { dx: 0.0057, dy: 0.0057, color: '#2a1b2e', alpha: 0.18 }, + edge: 'perforated', + edgeSize: 0.0067, + }, + { + id: 's4', + tint: { colors: ['accent'] }, + frame: { x: 0.0571, y: 0.7714, w: 0.2286, h: 0.16 }, + rotation: 10, + opacity: 0.9, + locked: false, + group: 'print', + kind: 'sticker', + stickerId: 'passportStamp', + colors: ['#bd2275'], + flipX: false, + }, + { + id: 'p5', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 0.5714, y: 0.3048, w: 0.3333, h: 0.2667 }, + rotation: 3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0119, color: '#ffffff' }, + shadow: { dx: 0.0057, dy: 0.0057, color: '#2a1b2e', alpha: 0.18 }, + edge: 'perforated', + edgeSize: 0.0057, + }, + { + id: 'p6', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 0.5714, y: 0.6095, w: 0.3333, h: 0.2667 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0119, color: '#ffffff' }, + shadow: { dx: 0.0057, dy: 0.0057, color: '#2a1b2e', alpha: 0.18 }, + edge: 'perforated', + edgeSize: 0.0057, + }, + { + id: 's7', + tint: { fg: 'accent3', bg: 'paper' }, + frame: { x: 1, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'shape', + shape: 'rect', + fill: '#12807f', + gradient: 'none', + paint: { type: 'pattern', pattern: 'checker', fg: '#12807f', bg: '#fbf2e2', scale: 0.8, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's8', + frame: { x: 1.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'shape', + shape: 'rect', + fill: '#fbf2e2', + gradient: 'none', + stroke: '#695c64', + token: 'paper', + strokeToken: 'muted', + strokeWidth: 0.0014, + strokeStyle: 'dashed', + radius: 0, + }, + { + id: 'p9', + role: 'photo:4', + frame: { x: 1.1048, y: 0.1048, w: 0.3714, h: 0.3238 }, + rotation: -2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0119, color: '#ffffff' }, + edge: 'perforated', + edgeSize: 0.0057, + }, + { + id: 'p10', + role: 'photo:5', + frame: { x: 1.5238, y: 0.1048, w: 0.3714, h: 0.3238 }, + rotation: 2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0119, color: '#ffffff' }, + edge: 'perforated', + edgeSize: 0.0057, + }, + { + id: 'p11', + role: 'photo:6', + frame: { x: 1.1048, y: 0.4667, w: 0.3714, h: 0.3238 }, + rotation: 2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0119, color: '#ffffff' }, + edge: 'perforated', + edgeSize: 0.0057, + }, + { + id: 'p12', + role: 'photo:7', + frame: { x: 1.5238, y: 0.4667, w: 0.3714, h: 0.3238 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'stamp', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0119, color: '#ffffff' }, + edge: 'perforated', + edgeSize: 0.0057, + }, + { + id: 's13', + tint: { colors: ['ink'] }, + frame: { x: 1.6952, y: 0.6571, w: 0.219, h: 0.1286 }, + rotation: -10, + opacity: 0.88, + locked: false, + group: 'stamp', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#2a1b2e'], + flipX: false, + }, + { + id: 't14', + role: 'body', + on: 'paper', + frame: { x: 1.1048, y: 0.819, w: 0.7905, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.45, + tracking: 0, + color: '#2a1b2e', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/new-editorial.data.ts b/shared/src/book/templates/data/new-editorial.data.ts new file mode 100644 index 000000000..be21cb5e7 --- /dev/null +++ b/shared/src/book/templates/data/new-editorial.data.ts @@ -0,0 +1,2002 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * The editorial archetype: a travel magazine. A huge Bodoni headline or + * masthead, thin rules, an italic standfirst, the story set justified in a + * column, a pull quote, captions in small capitals, red squares and labels as + * the one accent, and photos edge to edge with tight gutters. Four covers + * from photo led to type led and five double spreads for one, two, three, + * five and eight photos. Drawn in magazine. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const NEW_EDITORIAL: readonly BookDecoratedTemplate[] = [ + { + id: 'editorial-masthead', + labelKey: 'studio.templates.name.editorialMasthead', + kind: 'single', + archetype: 'editorial', + tags: ['magazine', 'masthead', 'full-bleed', 'serif', 'one-photo', 'red-label', 'bold'], + descr: + 'A full bleed photo under soft ink fades at head and foot, the title as a huge Bodoni masthead between two paper hairlines with the year under it, and the subtitle on a red label at the foot.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.5143 }, + rotation: 0, + opacity: 0.55, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#111111', + gradient: 'up', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: -0.0143, y: 0.6667, w: 1.0286, h: 0.3476 }, + rotation: 0, + opacity: 0.45, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#111111', + gradient: 'down', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l4', + tint: { stroke: 'paper' }, + frame: { x: 0.0667, y: 0.0476, w: 0.8667, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f7f4ee', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't5', + role: 'title', + tint: { shadow: 'ink' }, + frame: { x: 0.0667, y: 0.0667, w: 0.8667, h: 0.2286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.2667, + weight: 800, + italic: false, + align: 'center', + leading: 0.88, + tracking: -0.01, + color: '#f7f4ee', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0024, dy: 0.0024, color: '#111111', alpha: 0.35 }, + fit: 'shrink', + fitMax: 0.2667, + }, + { + id: 'l6', + tint: { stroke: 'paper' }, + frame: { x: 0.0667, y: 0.3, w: 0.8667, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f7f4ee', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't7', + role: 'date', + tint: { shadow: 'ink' }, + frame: { x: 0.2667, y: 0.319, w: 0.4667, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#f7f4ee', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0024, dy: 0.0024, color: '#111111', alpha: 0.35 }, + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 't8', + role: 'subtitle', + tint: { highlight: 'accent' }, + frame: { x: 0.0857, y: 0.8571, w: 0.6667, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.3, + color: '#f7f4ee', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#d7261e', alpha: 1, padX: 0.0143, padY: 0.0071, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + ], + }, + { + id: 'editorial-cover-story', + labelKey: 'studio.templates.name.editorialCoverStory', + kind: 'single', + archetype: 'editorial', + tags: ['magazine', 'masthead', 'rules', 'serif', 'one-photo', 'ornament', 'calm'], + descr: + 'A red bar down the spine edge, the title as a Bodoni masthead between a heavy rule and a double rule, the year and subtitle on one line, a large photo with tight margins and a small fleuron under it.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 0.0429, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0762, y: 0.0571, w: 0.8476, h: 0.0071 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#111111', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.2381, + weight: 800, + italic: false, + align: 'center', + leading: 0.88, + tracking: -0.01, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.2381, + }, + { + id: 's4', + frame: { x: 0.0762, y: 0.2952, w: 0.8476, h: 0.0048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#111111', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.0762, y: 0.3048, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't6', + role: 'date', + frame: { x: 0.0762, y: 0.3238, w: 0.381, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#111111', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 't7', + role: 'subtitle', + frame: { x: 0.4762, y: 0.319, w: 0.4476, h: 0.0429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0476, + weight: 400, + italic: true, + align: 'right', + leading: 1, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0476, + }, + { + id: 'p8', + role: 'photo:1', + frame: { x: 0.0762, y: 0.381, w: 0.8476, h: 0.5333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's9', + tint: { colors: ['ink'] }, + frame: { x: 0.481, y: 0.9333, w: 0.0381, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'fleuron', + colors: ['#111111'], + flipX: false, + }, + ], + }, + { + id: 'editorial-split', + labelKey: 'studio.templates.name.editorialSplit', + kind: 'single', + archetype: 'editorial', + tags: ['magazine', 'split', 'headline', 'serif', 'one-photo', 'bookmark', 'calm'], + descr: + 'A bleed photo over the upper two thirds with a red bookmark ribbon hanging from the top, then a short red rule, the title in large Bodoni and a foot line with the subtitle in italics and the year in spaced capitals.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.6476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: 0.8, y: -0.0143, w: 0.0619, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'banner-bookmark', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: 0.0762, y: 0.6762, w: 0.0952, h: 0.0071 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't4', + role: 'title', + frame: { x: 0.0762, y: 0.6952, w: 0.8476, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.1905, + weight: 800, + italic: false, + align: 'left', + leading: 0.9, + tracking: -0.01, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.0762, y: 0.8857, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't6', + role: 'subtitle', + frame: { x: 0.0762, y: 0.9, w: 0.581, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0429, + weight: 400, + italic: true, + align: 'left', + leading: 1, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't7', + role: 'date', + frame: { x: 0.6762, y: 0.9024, w: 0.2476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0333, + weight: 600, + italic: false, + align: 'right', + leading: 1, + tracking: 0.4, + color: '#111111', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + ], + }, + { + id: 'editorial-headline', + labelKey: 'studio.templates.name.editorialHeadline', + kind: 'single', + archetype: 'editorial', + tags: ['magazine', 'headline', 'type-led', 'serif', 'one-photo', 'round-photo', 'quiet'], + descr: + 'A stone block over the upper page holding a red square, the year and a hairline over a huge Bodoni headline, a round photo in an ink ring breaking the block edge, the subtitle in italics beside it and a diamond rule at the foot.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.6429 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#e9e2d6', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0762, y: 0.081, w: 0.0238, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + on: 'accent2', + frame: { x: 0.1143, y: 0.0762, w: 0.5, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#d7261e', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 'l4', + tint: { stroke: 'ink' }, + frame: { x: 0.0762, y: 0.119, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't5', + role: 'title', + on: 'accent2', + frame: { x: 0.0762, y: 0.1429, w: 0.8476, h: 0.4286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.381, + weight: 800, + italic: false, + align: 'left', + leading: 0.86, + tracking: -0.02, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.381, + }, + { + id: 'p6', + keep: true, + role: 'photo:1', + tint: { border: 'ink' }, + frame: { x: 0.6, y: 0.5048, w: 0.3238, h: 0.3238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0029, color: '#111111' }, + }, + { + id: 't7', + role: 'subtitle', + frame: { x: 0.0762, y: 0.6857, w: 0.4857, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0762, + weight: 400, + italic: true, + align: 'left', + leading: 1.15, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0762, + }, + { + id: 'l8', + tint: { stroke: 'ink' }, + frame: { x: 0.0762, y: 0.9143, w: 0.8476, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'diamond', + }, + ], + }, + { + id: 'editorial-feature-opener', + labelKey: 'studio.templates.name.editorialFeatureOpener', + kind: 'inner', + archetype: 'editorial', + tags: ['magazine', 'feature', 'long-story', 'serif', 'one-photo', 'columns', 'calm'], + descr: + 'A full bleed photo fills the left page; on the right a red rule and the date over a Bodoni headline, an italic standfirst, a hairline and the story set justified in a wide column, closed by a small red square.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: 1.0762, y: 0.0762, w: 0.0952, h: 0.0071 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + frame: { x: 1.0762, y: 0.0952, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#d7261e', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 't4', + role: 'title', + frame: { x: 1.0762, y: 0.1381, w: 0.8476, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.1905, + weight: 800, + italic: false, + align: 'left', + leading: 0.9, + tracking: -0.01, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 't5', + role: 'subtitle', + frame: { x: 1.0762, y: 0.3571, w: 0.8476, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0619, + weight: 400, + italic: true, + align: 'left', + leading: 1.2, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0619, + }, + { + id: 'l6', + tint: { stroke: 'ink' }, + frame: { x: 1.0762, y: 0.4524, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't7', + role: 'body', + frame: { x: 1.0762, y: 0.481, w: 0.8476, h: 0.4429 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0452, + weight: 400, + italic: false, + align: 'justify', + leading: 1.5, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's8', + frame: { x: 1.9048, y: 0.9381, w: 0.019, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + ], + }, + { + id: 'editorial-pull-quote', + labelKey: 'studio.templates.name.editorialPullQuote', + kind: 'inner', + archetype: 'editorial', + tags: ['magazine', 'pull-quote', 'story', 'serif', 'two-photos', 'ornament', 'calm'], + descr: + 'The left page a bleed photo over a stone panel with the date and an italic standfirst; on the right a huge red quotation mark over the title set as a pull quote, a diamond rule, the story in a column and a second photo with its caption.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 0.6619 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: -0.0143, y: 0.6476, w: 1.0143, h: 0.3667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#e9e2d6', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + on: 'accent2', + frame: { x: 0.0762, y: 0.7048, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'deck', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#d7261e', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 't4', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.0762, y: 0.7524, w: 0.8476, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'deck', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0857, + weight: 400, + italic: true, + align: 'left', + leading: 1.15, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 't5', + frame: { x: 1.0762, y: 0.0476, w: 0.2, h: 0.2286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'quote', + kind: 'text', + text: '“', + font: 'bodoni', + size: 0.5714, + weight: 800, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#d7261e', + token: 'accent', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 't6', + role: 'title', + frame: { x: 1.0762, y: 0.2286, w: 0.8476, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'quote', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.1333, + weight: 700, + italic: true, + align: 'left', + leading: 1.1, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1333, + }, + { + id: 's7', + tint: { colors: ['ink'] }, + frame: { x: 1.0762, y: 0.5143, w: 0.2333, h: 0.04 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'quote', + kind: 'sticker', + stickerId: 'diamondRule', + colors: ['#111111'], + flipX: false, + }, + { + id: 't8', + role: 'body', + frame: { x: 1.0762, y: 0.581, w: 0.4, h: 0.3429 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0429, + weight: 400, + italic: false, + align: 'justify', + leading: 1.5, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'p9', + role: 'photo:2', + frame: { x: 1.5143, y: 0.581, w: 0.4095, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't10', + role: 'caption', + frame: { x: 1.5143, y: 0.8952, w: 0.4095, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0357, + weight: 500, + italic: false, + align: 'left', + leading: 1.2, + tracking: 0.08, + color: '#565553', + token: 'muted', + fontRole: 'body', + binding: null, + overridden: false, + transform: 'smallcaps', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + ], + }, + { + id: 'editorial-feature-columns', + labelKey: 'studio.templates.name.editorialFeatureColumns', + kind: 'inner', + archetype: 'editorial', + tags: ['magazine', 'columns', 'story', 'serif', 'three-photos', 'red-label', 'lively'], + descr: + 'The left page a red rule, the date and a Bodoni headline over a hairline, the story in a justified column beside a column rule and two stacked photos; the right page a full bleed photo with the subtitle on a red label.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0762, y: 0.0762, w: 0.0952, h: 0.0071 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.0762, y: 0.0952, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#d7261e', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.1381, w: 0.8476, h: 0.219 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.2095, + weight: 800, + italic: false, + align: 'left', + leading: 0.9, + tracking: -0.01, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.2095, + }, + { + id: 'l4', + tint: { stroke: 'ink' }, + frame: { x: 0.0762, y: 0.3714, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't5', + role: 'body', + frame: { x: 0.0762, y: 0.4, w: 0.4048, h: 0.5238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0429, + weight: 400, + italic: false, + align: 'justify', + leading: 1.5, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'l6', + tint: { stroke: 'ink' }, + frame: { x: 0.4952, y: 0.4, w: 0.0095, h: 0.5238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p7', + role: 'photo:2', + frame: { x: 0.519, y: 0.4, w: 0.4048, h: 0.2548 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p8', + role: 'photo:3', + frame: { x: 0.519, y: 0.669, w: 0.4048, h: 0.2548 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p9', + role: 'photo:1', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't10', + role: 'subtitle', + tint: { highlight: 'accent' }, + frame: { x: 1.0857, y: 0.8762, w: 0.6667, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.3, + color: '#f7f4ee', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#d7261e', alpha: 1, padX: 0.0143, padY: 0.0071, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + ], + }, + { + id: 'editorial-portfolio', + labelKey: 'studio.templates.name.editorialPortfolio', + kind: 'inner', + archetype: 'editorial', + tags: ['magazine', 'portfolio', 'grid', 'serif', 'five-photos', 'story', 'calm'], + descr: + 'The left page a bleed photo over a red square, the date, a Bodoni headline and a short story; the right page a stone panel holding four photos with tight gutters over a hairline, the subtitle in italics and a caption in small capitals.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 0.5857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: 0.0762, y: 0.6048, w: 0.0238, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#d7261e', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + frame: { x: 0.1143, y: 0.6, w: 0.5, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#d7261e', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 't4', + role: 'title', + frame: { x: 0.0762, y: 0.6476, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.1333, + weight: 800, + italic: false, + align: 'left', + leading: 0.9, + tracking: -0.01, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1333, + }, + { + id: 't5', + role: 'body', + frame: { x: 0.0762, y: 0.7905, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0429, + weight: 400, + italic: false, + align: 'justify', + leading: 1.5, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's6', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#e9e2d6', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p7', + role: 'photo:2', + frame: { x: 1.0762, y: 0.0762, w: 0.4167, h: 0.3548 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p8', + role: 'photo:3', + frame: { x: 1.5071, y: 0.0762, w: 0.4167, h: 0.3548 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p9', + role: 'photo:4', + frame: { x: 1.0762, y: 0.4452, w: 0.4167, h: 0.3548 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p10', + role: 'photo:5', + frame: { x: 1.5071, y: 0.4452, w: 0.4167, h: 0.3548 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'l11', + tint: { stroke: 'ink' }, + frame: { x: 1.0762, y: 0.8238, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't12', + role: 'subtitle', + on: 'accent2', + frame: { x: 1.0762, y: 0.8429, w: 0.5, h: 0.0429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0476, + weight: 400, + italic: true, + align: 'left', + leading: 1, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0476, + }, + { + id: 't13', + role: 'caption', + on: 'accent2', + frame: { x: 1.5905, y: 0.8476, w: 0.3333, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0381, + weight: 500, + italic: false, + align: 'right', + leading: 1.2, + tracking: 0.08, + color: '#565553', + token: 'muted', + fontRole: 'body', + binding: null, + overridden: false, + transform: 'smallcaps', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + ], + }, + { + id: 'editorial-contact-sheet', + labelKey: 'studio.templates.name.editorialContactSheet', + kind: 'inner', + archetype: 'editorial', + tags: ['magazine', 'contact-sheet', 'grid', 'serif', 'eight-photos', 'story', 'lively'], + descr: + 'The left page a heavy rule, the date, a Bodoni headline, an italic standfirst, two photos side by side and the story; the right page a bleed contact sheet of six photos, one large, with 3 mm gutters.', + background: '#f7f4ee', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0762, y: 0.0571, w: 0.8476, h: 0.0071 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'shape', + shape: 'rect', + fill: '#111111', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0357, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0.4, + color: '#d7261e', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0357, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.119, w: 0.8476, h: 0.181 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'bodoni', + size: 0.1714, + weight: 800, + italic: false, + align: 'left', + leading: 0.9, + tracking: -0.01, + color: '#111111', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't4', + role: 'subtitle', + frame: { x: 0.0762, y: 0.3, w: 0.8476, h: 0.0619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'garamond', + size: 0.0571, + weight: 400, + italic: true, + align: 'left', + leading: 1.1, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0571, + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.0762, y: 0.3714, w: 0.8476, h: 0.0095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#111111', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p6', + role: 'photo:7', + frame: { x: 0.0762, y: 0.3952, w: 0.4167, h: 0.2952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p7', + role: 'photo:8', + frame: { x: 0.5071, y: 0.3952, w: 0.4167, h: 0.2952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't8', + role: 'body', + frame: { x: 0.0762, y: 0.7143, w: 0.8476, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'garamond', + size: 0.0429, + weight: 400, + italic: false, + align: 'justify', + leading: 1.5, + tracking: 0, + color: '#111111', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'p9', + role: 'photo:1', + frame: { x: 1.0143, y: -0.0143, w: 0.6619, h: 0.681 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p10', + role: 'photo:2', + frame: { x: 1.6905, y: -0.0143, w: 0.3238, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p11', + role: 'photo:3', + frame: { x: 1.6905, y: 0.3333, w: 0.3238, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p12', + role: 'photo:4', + frame: { x: 1.0143, y: 0.681, w: 0.3238, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p13', + role: 'photo:5', + frame: { x: 1.3524, y: 0.681, w: 0.3238, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p14', + role: 'photo:6', + frame: { x: 1.6905, y: 0.681, w: 0.3238, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/new-field-notes.data.ts b/shared/src/book/templates/data/new-field-notes.data.ts new file mode 100644 index 000000000..8b23297b7 --- /dev/null +++ b/shared/src/book/templates/data/new-field-notes.data.ts @@ -0,0 +1,3168 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * Field notes: a traveller's notebook. Kraft board and cream squared paper, + * strips of tape, polaroids and prints taped in at slight angles, pressed + * leaves, a luggage tag on its string, words in a serif, a handwritten + * script and figures in mono. Four covers, from a full bleed photo to a + * label without one, and five double spreads holding one, three, four, six + * and eight photos. Drawn in field-notes. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const NEW_FIELD_NOTES: readonly BookDecoratedTemplate[] = [ + { + id: 'field-notes-torn', + labelKey: 'studio.templates.name.fieldNotesTorn', + kind: 'single', + archetype: 'field-notes', + tags: ['notebook', 'kraft', 'torn-paper', 'tape', 'full-bleed', 'one-photo', 'calm'], + descr: + 'A full bleed photo over a torn sheet of cream squared paper, taped down at both ends with a luggage tag hanging at the top and pressed leaves in the corner; the date in mono, a script note and a serif title.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.7 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.45, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: -0.0143, y: 0.6, w: 1.0286, h: 0.4143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + edge: 'torn', + edgeSize: 0.0105, + }, + { + id: 's3', + tint: { fg: 'accent3' }, + frame: { x: -0.0143, y: 0.6571, w: 1.0286, h: 0.3572 }, + rotation: 0, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + tint: { colors: ['paper'] }, + frame: { x: 0.0571, y: 0.5619, w: 0.2, h: 0.1 }, + rotation: -8, + opacity: 0.92, + locked: false, + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's5', + tint: { colors: ['paper'] }, + frame: { x: 0.7524, y: 0.5714, w: 0.2, h: 0.1 }, + rotation: 6, + opacity: 0.92, + locked: false, + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's6', + tint: { colors: ['accent2', 'accent', 'paper'] }, + frame: { x: 0.8, y: 0.0667, w: 0.1048, h: 0.1497 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'luggageTag', + colors: ['#f8f2e4', '#b5532c', '#e9dcc3'], + flipX: false, + }, + { + id: 's7', + frame: { x: 0.8, y: 0.7143, w: 0.0952, h: 0.207 }, + rotation: 26, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's8', + frame: { x: 0.8952, y: 0.6857, w: 0.0476, h: 0.2164 }, + rotation: -12, + opacity: 0.75, + locked: false, + kind: 'shape', + shape: 'leaf-long', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't9', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.4762, y: 0.6476, w: 0.4476, h: 0.0619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0952, + weight: 600, + italic: false, + align: 'right', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't10', + role: 'date', + on: 'accent2', + frame: { x: 0.0857, y: 0.7048, w: 0.381, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'mono', + size: 0.0381, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.32, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't11', + role: 'title', + on: 'accent2', + frame: { x: 0.0762, y: 0.7476, w: 0.6952, h: 0.1762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.2667, + weight: 700, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.2667, + }, + ], + }, + { + id: 'field-notes-polaroid', + labelKey: 'studio.templates.name.fieldNotesPolaroid', + kind: 'single', + archetype: 'field-notes', + tags: ['notebook', 'polaroid', 'squared-paper', 'tape', 'leaves', 'one-photo', 'calm'], + descr: + 'Kraft board with a sheet of cream squared paper set a little askew, a polaroid taped to it over two pressed leaves, a luggage tag at its side and an edelweiss; a centred serif title, a rust script line and the date in mono.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.08, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.0952, y: 0.0619, w: 0.8095, h: 0.881 }, + rotation: -1.5, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + tint: { fg: 'accent3' }, + keep: true, + frame: { x: 0.0952, y: 0.0619, w: 0.8095, h: 0.881 }, + rotation: -1.5, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 0.1524, y: 0.0857, w: 0.1333, h: 0.2898 }, + rotation: -30, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: 0.6857, y: 0.0952, w: 0.0571, h: 0.2595 }, + rotation: 22, + opacity: 0.8, + locked: false, + kind: 'shape', + shape: 'leaf-long', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p6', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.2, y: 0.1333, w: 0.6, h: 0.5714 }, + rotation: 3, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'polaroid', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.18 }, + }, + { + id: 's7', + tint: { colors: ['paper'] }, + frame: { x: 0.4, y: 0.1048, w: 0.2, h: 0.1 }, + rotation: -4, + opacity: 0.92, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's8', + tint: { colors: ['accent2', 'accent', 'paper'] }, + frame: { x: 0.7524, y: 0.4762, w: 0.1333, h: 0.1904 }, + rotation: -16, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'luggageTag', + colors: ['#f8f2e4', '#b5532c', '#e9dcc3'], + flipX: false, + }, + { + id: 't9', + role: 'title', + on: 'accent2', + frame: { x: 0.1429, y: 0.7333, w: 0.7143, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.219, + weight: 700, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.219, + }, + { + id: 't10', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.1905, y: 0.8286, w: 0.619, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0952, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't11', + role: 'date', + on: 'accent2', + frame: { x: 0.2857, y: 0.8857, w: 0.4286, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0.4, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 's12', + tint: { colors: ['accent2', 'accent', 'accent3'] }, + frame: { x: 0.0571, y: 0.7905, w: 0.1238, h: 0.1238 }, + rotation: -12, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'edelweiss', + colors: ['#f8f2e4', '#b5532c', '#6f8a5a'], + flipX: false, + }, + ], + }, + { + id: 'field-notes-specimens', + labelKey: 'studio.templates.name.fieldNotesSpecimens', + kind: 'single', + archetype: 'field-notes', + tags: ['notebook', 'kraft', 'collage', 'tape', 'specimens', 'three-photos', 'lively'], + descr: + 'A large serif title over kraft with the date in mono and a rust script line, then three prints in white borders taped down at angles like specimens, an olive sprig over the first, a dotted trail and a number in mono.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.07, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't2', + role: 'date', + frame: { x: 0.0857, y: 0.0762, w: 0.5238, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'mono', + size: 0.0362, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.32, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0362, + }, + { + id: 't3', + role: 'title', + frame: { x: 0.0762, y: 0.1143, w: 0.8476, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.2857, + weight: 700, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.2857, + }, + { + id: 't4', + role: 'subtitle', + frame: { x: 0.0857, y: 0.3143, w: 0.5714, h: 0.0667 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.1048, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1048, + }, + { + id: 's5', + tint: { colors: ['ink', 'accent'] }, + frame: { x: 0.4571, y: 0.3238, w: 0.1143, h: 0.1012 }, + rotation: -10, + opacity: 0.85, + locked: false, + kind: 'sticker', + stickerId: 'dottedPath', + colors: ['#2f3a2b', '#b5532c'], + flipX: false, + }, + { + id: 'p6', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.0857, y: 0.4286, w: 0.4571, h: 0.3905 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'print-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0114, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.2 }, + }, + { + id: 's7', + tint: { colors: ['paper'] }, + frame: { x: 0.0476, y: 0.4095, w: 0.1619, h: 0.0809 }, + rotation: -36, + opacity: 0.92, + locked: false, + group: 'print-1', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 'p8', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 0.5714, y: 0.3905, w: 0.3429, h: 0.2667 }, + rotation: 4, + opacity: 1, + locked: false, + group: 'print-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0114, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.2 }, + }, + { + id: 's9', + tint: { colors: ['accent', 'accent2'] }, + frame: { x: 0.6571, y: 0.3667, w: 0.1714, h: 0.0486 }, + rotation: 6, + opacity: 1, + locked: false, + group: 'print-2', + kind: 'sticker', + stickerId: 'washiStripes', + colors: ['#b5532c', '#f8f2e4'], + flipX: false, + }, + { + id: 'p10', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 0.5905, y: 0.6762, w: 0.3238, h: 0.2381 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'print-3', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0114, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.2 }, + }, + { + id: 's11', + tint: { colors: ['paper'] }, + frame: { x: 0.8286, y: 0.8667, w: 0.1333, h: 0.0667 }, + rotation: -30, + opacity: 0.92, + locked: false, + group: 'print-3', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's12', + tint: { colors: ['accent3', 'ink', 'ink'] }, + frame: { x: 0.3238, y: 0.7429, w: 0.1905, h: 0.1905 }, + rotation: -24, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'oliveBranch', + colors: ['#6f8a5a', '#2f3a2b', '#2f3a2b'], + flipX: false, + }, + { + id: 't13', + frame: { x: 0.0952, y: 0.8667, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: 'N° 01', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + ], + }, + { + id: 'field-notes-label', + labelKey: 'studio.templates.name.fieldNotesLabel', + kind: 'single', + archetype: 'field-notes', + tags: ['notebook', 'kraft', 'label', 'type-led', 'stitched', 'leaves', 'no-photo', 'calm'], + descr: + 'A kraft notebook cover with a stitched border and a rust elastic band, a cream label clipped on with the date in mono, a diamond rule, the serif title and a script line, a compass rose above and an olive sprig and an oak leaf below.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 0.8, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#f8f2e4', + strokeToken: 'accent2', + strokeWidth: 0.0029, + strokeStyle: 'dashed', + radius: 0.0143, + }, + { + id: 's3', + frame: { x: 0.7952, y: -0.0143, w: 0.0381, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#b5532c', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + tint: { colors: ['ink', 'accent2', 'accent'] }, + frame: { x: 0.1429, y: 0.1048, w: 0.1048, h: 0.1048 }, + rotation: 0, + opacity: 0.9, + locked: false, + kind: 'sticker', + stickerId: 'compassRose', + colors: ['#2f3a2b', '#f8f2e4', '#b5532c'], + flipX: false, + }, + { + id: 's5', + frame: { x: 0.1429, y: 0.2667, w: 0.5714, h: 0.381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: '#2f3a2b', + token: 'accent2', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0.0143, + }, + { + id: 's6', + frame: { x: 0.1619, y: 0.2857, w: 0.5333, h: 0.3429 }, + rotation: 0, + opacity: 0.55, + locked: false, + group: 'label', + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#2f3a2b', + strokeToken: 'ink', + strokeWidth: 0.0014, + strokeStyle: 'dashed', + radius: 0.0095, + }, + { + id: 't7', + role: 'date', + on: 'accent2', + frame: { x: 0.1905, y: 0.3095, w: 0.4762, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'mono', + size: 0.0362, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0.42, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0362, + }, + { + id: 'l8', + tint: { stroke: 'accent' }, + frame: { x: 0.3048, y: 0.3524, w: 0.2476, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#b5532c', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'diamond', + }, + { + id: 't9', + role: 'title', + on: 'accent2', + frame: { x: 0.1905, y: 0.381, w: 0.4762, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.1905, + weight: 700, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 't10', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.1905, y: 0.5619, w: 0.4762, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'label', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0952, + weight: 600, + italic: false, + align: 'center', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 's11', + tint: { colors: ['ink'] }, + frame: { x: 0.5905, y: 0.2095, w: 0.0476, h: 0.119 }, + rotation: 8, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'paperClip', + colors: ['#2f3a2b'], + flipX: false, + }, + { + id: 't12', + frame: { x: 0.4286, y: 0.6762, w: 0.2857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: 'N° 01', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0.2, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 's13', + tint: { colors: ['accent3', 'ink', 'ink'] }, + frame: { x: 0.0762, y: 0.6667, w: 0.2762, h: 0.2762 }, + rotation: 18, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'oliveBranch', + colors: ['#6f8a5a', '#2f3a2b', '#2f3a2b'], + flipX: false, + }, + { + id: 's14', + frame: { x: 0.4762, y: 0.7429, w: 0.0952, h: 0.207 }, + rotation: -48, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + ], + }, + { + id: 'field-notes-diary', + labelKey: 'studio.templates.name.fieldNotesDiary', + kind: 'inner', + archetype: 'field-notes', + tags: ['notebook', 'diary', 'squared-paper', 'story', 'polaroid', 'one-photo', 'calm'], + descr: + 'On the left a sheet of cream squared paper taped to kraft with a rust margin line, the date in mono, a serif title, a script line and a long story; on the right one large taped polaroid, an oak leaf, a luggage tag and pines.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 2.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.07, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + tint: { fg: 'accent3' }, + frame: { x: 0.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l4', + tint: { stroke: 'accent' }, + frame: { x: 0.1571, y: 0.0571, w: 0.0095, h: 0.8857 }, + rotation: 0, + opacity: 0.7, + locked: false, + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#b5532c', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's5', + tint: { colors: ['paper'] }, + frame: { x: 0.0238, y: 0.0333, w: 0.1524, h: 0.0762 }, + rotation: -40, + opacity: 0.92, + locked: false, + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's6', + tint: { colors: ['accent', 'accent2'] }, + frame: { x: 0.8, y: 0.0571, w: 0.1524, h: 0.0432 }, + rotation: 38, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'washiStripes', + colors: ['#b5532c', '#f8f2e4'], + flipX: false, + }, + { + id: 't7', + role: 'date', + on: 'accent2', + frame: { x: 0.2, y: 0.0952, w: 0.5238, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'mono', + size: 0.0362, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.32, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0362, + }, + { + id: 't8', + role: 'title', + on: 'accent2', + frame: { x: 0.2, y: 0.1381, w: 0.6857, h: 0.1429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.1905, + weight: 700, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 't9', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.2, y: 0.2857, w: 0.6286, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0857, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 't10', + role: 'body', + on: 'accent2', + frame: { x: 0.2, y: 0.3714, w: 0.6667, h: 0.5238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0452, + weight: 400, + italic: false, + align: 'left', + leading: 1.6, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's11', + frame: { x: 1.6762, y: 0.0476, w: 0.1333, h: 0.2898 }, + rotation: 32, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p12', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 1.1429, y: 0.1048, w: 0.7143, h: 0.6 }, + rotation: 2.5, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'polaroid', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.18 }, + }, + { + id: 's13', + tint: { colors: ['paper'] }, + frame: { x: 1.4095, y: 0.0667, w: 0.1905, h: 0.0953 }, + rotation: -5, + opacity: 0.92, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's14', + tint: { colors: ['accent2', 'accent', 'paper'] }, + frame: { x: 1.7619, y: 0.6, w: 0.1238, h: 0.1769 }, + rotation: -14, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'luggageTag', + colors: ['#f8f2e4', '#b5532c', '#e9dcc3'], + flipX: false, + }, + { + id: 't15', + role: 'caption', + frame: { x: 1.1429, y: 0.7714, w: 0.5524, h: 0.0857 }, + rotation: -2, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'caveat', + size: 0.0857, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 's16', + tint: { colors: ['accent3', 'ink'] }, + frame: { x: 1.6286, y: 0.8, w: 0.1429, h: 0.1299 }, + rotation: 0, + opacity: 0.9, + locked: false, + kind: 'sticker', + stickerId: 'pineTrees', + colors: ['#6f8a5a', '#2f3a2b'], + flipX: false, + }, + ], + }, + { + id: 'field-notes-trail', + labelKey: 'studio.templates.name.fieldNotesTrail', + kind: 'inner', + archetype: 'field-notes', + tags: ['notebook', 'full-bleed', 'note-card', 'tape', 'trail', 'three-photos', 'lively'], + descr: + 'A full bleed photo on the left with a deckled cream note card taped over its foot holding the title and the date; on the right two taped prints in white borders joined by a dotted rust trail, a script line, the story and an olive sprig.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.45, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + keep: true, + frame: { x: 0.0952, y: 0.6381, w: 0.5905, h: 0.2571 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'note', + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + edge: 'deckle', + edgeSize: 0.0057, + }, + { + id: 's3', + tint: { colors: ['paper'] }, + frame: { x: 0.3143, y: 0.6, w: 0.1429, h: 0.0715 }, + rotation: 4, + opacity: 0.92, + locked: false, + group: 'note', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't4', + role: 'title', + on: 'accent2', + frame: { x: 0.1333, y: 0.6762, w: 0.5143, h: 0.1238 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'note', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.1714, + weight: 700, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't5', + role: 'date', + on: 'accent2', + frame: { x: 0.1429, y: 0.8095, w: 0.419, h: 0.0286 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'note', + kind: 'text', + text: '', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.32, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 'l6', + tint: { stroke: 'accent' }, + frame: { x: 1.2857, y: 0.3619, w: 0.3524, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0 }, + { x: 0.35, y: 0.75 }, + { x: 1, y: 0.45 }, + ], + curve: 'smooth', + stroke: '#b5532c', + strokeWidth: 0.0038, + dash: 'dotted', + squiggle: 'none', + startCap: 'none', + endCap: 'arrow', + wobble: 0.3, + ornament: 'none', + }, + { + id: 'p7', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 1.0952, y: 0.0952, w: 0.4762, h: 0.381 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'print-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0114, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.2 }, + }, + { + id: 's8', + tint: { colors: ['accent3', 'accent2'] }, + frame: { x: 1.0667, y: 0.0857, w: 0.1714, h: 0.0486 }, + rotation: -30, + opacity: 1, + locked: false, + group: 'print-2', + kind: 'sticker', + stickerId: 'washiDots', + colors: ['#6f8a5a', '#f8f2e4'], + flipX: false, + }, + { + id: 'p9', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 1.4762, y: 0.4286, w: 0.4286, h: 0.3429 }, + rotation: 4, + opacity: 1, + locked: false, + group: 'print-3', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0114, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.2 }, + }, + { + id: 's10', + tint: { colors: ['paper'] }, + frame: { x: 1.8095, y: 0.4, w: 0.1333, h: 0.0667 }, + rotation: 40, + opacity: 0.92, + locked: false, + group: 'print-3', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't11', + role: 'subtitle', + frame: { x: 1.0952, y: 0.5333, w: 0.3429, h: 0.0667 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'caveat', + size: 0.0952, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't12', + role: 'body', + frame: { x: 1.0952, y: 0.6381, w: 0.3429, h: 0.2857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's13', + tint: { colors: ['accent'] }, + frame: { x: 1.6476, y: 0.3238, w: 0.0476, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'xMark', + colors: ['#b5532c'], + flipX: false, + }, + { + id: 's14', + tint: { colors: ['accent3', 'ink', 'ink'] }, + frame: { x: 1.7143, y: 0.7905, w: 0.1714, h: 0.1714 }, + rotation: -20, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'oliveBranch', + colors: ['#6f8a5a', '#2f3a2b', '#2f3a2b'], + flipX: false, + }, + ], + }, + { + id: 'field-notes-route', + labelKey: 'studio.templates.name.fieldNotesRoute', + kind: 'inner', + archetype: 'field-notes', + tags: ['notebook', 'map', 'route', 'polaroid', 'tape', 'four-photos', 'lively'], + descr: + 'On the left a sheet of cream squared paper with the serif title, a script line, a rust date stamp and the route map taped in under a compass rose; on the right four polaroids in a loose grid, each taped at the top, and a pressed leaf.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 2.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.07, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.8476 }, + rotation: -1.5, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + tint: { fg: 'accent3' }, + keep: true, + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.8476 }, + rotation: -1.5, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't4', + role: 'title', + on: 'accent2', + frame: { x: 0.1333, y: 0.1143, w: 0.5524, h: 0.1238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.1714, + weight: 700, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't5', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.1333, y: 0.2381, w: 0.5524, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0857, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 'b6', + role: 'date', + keep: true, + frame: { x: 0.6952, y: 0.1048, w: 0.1714, h: 0.1714 }, + rotation: -8, + opacity: 1, + locked: false, + font: 'montserrat', + color: '#b5532c', + accent: '#b5532c', + textScale: 1, + weight: 600, + stale: false, + token: 'accent', + accentToken: 'accent', + fontRole: 'heading', + kind: 'badge', + variant: 'date', + text: '14', + sub: 'MAY', + code: null, + style: 'stamp', + autoColor: true, + showIcon: true, + showLabel: true, + autoIconColor: true, + iconColor: '#b5532c', + }, + { + id: 'm7', + role: 'map', + frame: { x: 0.1333, y: 0.3333, w: 0.7333, h: 0.5333 }, + rotation: 0, + opacity: 1, + locked: false, + font: 'sans', + color: '#2f3a2b', + accent: '#b5532c', + textScale: 1, + weight: 700, + stale: false, + token: 'ink', + accentToken: 'accent', + kind: 'map', + source: 'vector', + tileUrl: '', + attribution: '', + zoom: null, + style: 'minimal', + showLand: true, + showRoute: true, + showPins: true, + showLabels: false, + routeStyle: 'plain', + routeArc: 'straight', + routeDash: 'solid', + pinStyle: 'dot', + countries: [], + points: [], + path: [], + roads: [], + fitPadding: 0.4, + fitToCountries: true, + clip: 'rect', + tripId: null, + }, + { + id: 's8', + frame: { x: 0.1333, y: 0.3333, w: 0.7333, h: 0.5333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'map', + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#2f3a2b', + strokeToken: 'ink', + strokeWidth: 0.0019, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's9', + tint: { colors: ['paper'] }, + frame: { x: 0.0857, y: 0.3048, w: 0.1429, h: 0.0715 }, + rotation: -35, + opacity: 0.92, + locked: false, + group: 'map', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's10', + tint: { colors: ['paper'] }, + frame: { x: 0.781, y: 0.8286, w: 0.1429, h: 0.0715 }, + rotation: -35, + opacity: 0.92, + locked: false, + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's11', + tint: { colors: ['ink', 'accent2', 'accent'] }, + frame: { x: 0.1524, y: 0.7429, w: 0.1143, h: 0.1143 }, + rotation: 0, + opacity: 0.9, + locked: false, + kind: 'sticker', + stickerId: 'compassRose', + colors: ['#2f3a2b', '#f8f2e4', '#b5532c'], + flipX: false, + }, + { + id: 'p12', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 1.1048, y: 0.0857, w: 0.381, h: 0.381 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'print-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'polaroid', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.18 }, + }, + { + id: 's13', + tint: { colors: ['paper'] }, + frame: { x: 1.2286, y: 0.0571, w: 0.1333, h: 0.0667 }, + rotation: -6, + opacity: 0.92, + locked: false, + group: 'print-1', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 'p14', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 1.5238, y: 0.1048, w: 0.381, h: 0.381 }, + rotation: 4, + opacity: 1, + locked: false, + group: 'print-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'polaroid', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.18 }, + }, + { + id: 's15', + tint: { colors: ['accent', 'accent2'] }, + frame: { x: 1.6381, y: 0.0762, w: 0.1524, h: 0.0432 }, + rotation: 5, + opacity: 1, + locked: false, + group: 'print-2', + kind: 'sticker', + stickerId: 'washiStripes', + colors: ['#b5532c', '#f8f2e4'], + flipX: false, + }, + { + id: 'p16', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 1.1238, y: 0.5143, w: 0.381, h: 0.381 }, + rotation: 3, + opacity: 1, + locked: false, + group: 'print-3', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'polaroid', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.18 }, + }, + { + id: 's17', + tint: { colors: ['accent3', 'accent2'] }, + frame: { x: 1.2381, y: 0.4952, w: 0.1524, h: 0.0432 }, + rotation: 3, + opacity: 1, + locked: false, + group: 'print-3', + kind: 'sticker', + stickerId: 'washiDots', + colors: ['#6f8a5a', '#f8f2e4'], + flipX: false, + }, + { + id: 'p18', + role: 'photo:4', + tint: { shadow: 'ink' }, + frame: { x: 1.5048, y: 0.5333, w: 0.381, h: 0.381 }, + rotation: -4, + opacity: 1, + locked: false, + group: 'print-4', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'polaroid', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.18 }, + }, + { + id: 's19', + tint: { colors: ['paper'] }, + frame: { x: 1.6286, y: 0.5048, w: 0.1333, h: 0.0667 }, + rotation: -8, + opacity: 0.92, + locked: false, + group: 'print-4', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's20', + frame: { x: 1.4667, y: 0.4095, w: 0.0667, h: 0.145 }, + rotation: 48, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + ], + }, + { + id: 'field-notes-contact', + labelKey: 'studio.templates.name.fieldNotesContact', + kind: 'inner', + archetype: 'field-notes', + tags: ['notebook', 'contact-sheet', 'squared-paper', 'numbered', 'tape', 'six-photos', 'lively'], + descr: + 'A large taped print in a white border on the left over the date in mono, a script line and the serif title; on the right five small prints on a sheet of cream squared paper, each numbered in rust mono, and a few lines of the story.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 2.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.07, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p2', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.0952, y: 0.0857, w: 0.8095, h: 0.5714 }, + rotation: -1.5, + opacity: 1, + locked: false, + group: 'hero', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.2 }, + }, + { + id: 's3', + tint: { colors: ['paper'] }, + frame: { x: 0.0381, y: 0.0571, w: 0.1619, h: 0.0809 }, + rotation: -38, + opacity: 0.92, + locked: false, + group: 'hero', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's4', + tint: { colors: ['paper'] }, + frame: { x: 0.8, y: 0.0571, w: 0.1619, h: 0.0809 }, + rotation: 38, + opacity: 0.92, + locked: false, + group: 'hero', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 's5', + tint: { colors: ['accent2', 'accent', 'accent3'] }, + frame: { x: 0.781, y: 0.5714, w: 0.1238, h: 0.1238 }, + rotation: 15, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'edelweiss', + colors: ['#f8f2e4', '#b5532c', '#6f8a5a'], + flipX: false, + }, + { + id: 't6', + role: 'date', + frame: { x: 0.0952, y: 0.7095, w: 0.381, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'mono', + size: 0.0362, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.32, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0362, + }, + { + id: 't7', + role: 'subtitle', + frame: { x: 0.4952, y: 0.6857, w: 0.4286, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0952, + weight: 600, + italic: false, + align: 'right', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't8', + role: 'title', + frame: { x: 0.0857, y: 0.7524, w: 0.8381, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.2095, + weight: 700, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.2095, + }, + { + id: 's9', + frame: { x: 1.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's10', + tint: { fg: 'accent3' }, + frame: { x: 1.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's11', + tint: { colors: ['paper'] }, + frame: { x: 1.4143, y: 0.0381, w: 0.1714, h: 0.0486 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'washiKraft', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 'p12', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 1.1048, y: 0.1143, w: 0.2476, h: 0.2476 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'print-02', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0076, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + }, + { + id: 't13', + on: 'accent2', + frame: { x: 1.1048, y: 0.3762, w: 0.0952, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print-02', + kind: 'text', + text: '02', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p14', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 1.3762, y: 0.1143, w: 0.2476, h: 0.2476 }, + rotation: 1.5, + opacity: 1, + locked: false, + group: 'print-03', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0076, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + }, + { + id: 't15', + on: 'accent2', + frame: { x: 1.3762, y: 0.3762, w: 0.0952, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print-03', + kind: 'text', + text: '03', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p16', + role: 'photo:4', + tint: { shadow: 'ink' }, + frame: { x: 1.6476, y: 0.1143, w: 0.2476, h: 0.2476 }, + rotation: -1, + opacity: 1, + locked: false, + group: 'print-04', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0076, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + }, + { + id: 't17', + on: 'accent2', + frame: { x: 1.6476, y: 0.3762, w: 0.0952, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print-04', + kind: 'text', + text: '04', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p18', + role: 'photo:5', + tint: { shadow: 'ink' }, + frame: { x: 1.1048, y: 0.4381, w: 0.381, h: 0.2571 }, + rotation: 1.5, + opacity: 1, + locked: false, + group: 'print-05', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0076, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + }, + { + id: 't19', + on: 'accent2', + frame: { x: 1.1048, y: 0.7095, w: 0.0952, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print-05', + kind: 'text', + text: '05', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p20', + role: 'photo:6', + tint: { shadow: 'ink' }, + frame: { x: 1.5143, y: 0.4381, w: 0.381, h: 0.2571 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'print-06', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0076, color: '#ffffff' }, + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + }, + { + id: 't21', + on: 'accent2', + frame: { x: 1.5143, y: 0.7095, w: 0.0952, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print-06', + kind: 'text', + text: '06', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 't22', + role: 'body', + on: 'accent2', + frame: { x: 1.1048, y: 0.7714, w: 0.7905, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'field-notes-herbarium', + labelKey: 'studio.templates.name.fieldNotesHerbarium', + kind: 'inner', + archetype: 'field-notes', + tags: ['notebook', 'herbarium', 'specimens', 'squared-paper', 'numbered', 'eight-photos', 'calm'], + descr: + 'Two sheets of cream squared paper laid out like a herbarium: eight deckled photos, each held by a strip of tape and numbered in mono; the serif title, a script line and the date on the left, the story and pressed leaves on the right.', + background: '#e9dcc3', + backgroundToken: 'paper', + elements: [ + { + id: 's25', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 2.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.07, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f3a2b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'linen', fg: '#2f3a2b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's26', + frame: { x: 0.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's27', + tint: { fg: 'accent3' }, + frame: { x: 0.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's28', + frame: { x: 1.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f8f2e4', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's29', + tint: { fg: 'accent3' }, + frame: { x: 1.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 0.32, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#6f8a5a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grid', fg: '#6f8a5a', bg: null, scale: 0.5, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't30', + role: 'title', + on: 'accent2', + frame: { x: 0.1143, y: 0.0952, w: 0.5238, h: 0.1238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'fraunces', + size: 0.1714, + weight: 700, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + vAlign: 'top', + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't31', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.1143, y: 0.219, w: 0.5238, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'caveat', + size: 0.0857, + weight: 600, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#b5532c', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 't32', + role: 'date', + on: 'accent2', + frame: { x: 0.6286, y: 0.1048, w: 0.2571, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0.32, + color: '#2f3a2b', + token: 'ink', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0333, + }, + { + id: 'p1', + role: 'photo:1', + tint: { shadow: 'ink' }, + frame: { x: 0.1143, y: 0.3143, w: 0.381, h: 0.2381 }, + rotation: -1.5, + opacity: 1, + locked: false, + group: 'sheet-01', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's2', + tint: { colors: ['paper'] }, + frame: { x: 0.2572, y: 0.2905, w: 0.0952, h: 0.0476 }, + rotation: -8, + opacity: 0.92, + locked: false, + group: 'sheet-01', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't3', + on: 'accent2', + frame: { x: 0.1143, y: 0.5619, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-01', + kind: 'text', + text: 'N° 01', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p4', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 0.5048, y: 0.3143, w: 0.381, h: 0.2381 }, + rotation: 1, + opacity: 1, + locked: false, + group: 'sheet-02', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's5', + tint: { colors: ['paper'] }, + frame: { x: 0.6477, y: 0.2905, w: 0.0952, h: 0.0476 }, + rotation: 6, + opacity: 0.92, + locked: false, + group: 'sheet-02', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't6', + on: 'accent2', + frame: { x: 0.5048, y: 0.5619, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-02', + kind: 'text', + text: 'N° 02', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p7', + role: 'photo:3', + tint: { shadow: 'ink' }, + frame: { x: 0.1143, y: 0.6095, w: 0.381, h: 0.2381 }, + rotation: 1.5, + opacity: 1, + locked: false, + group: 'sheet-03', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's8', + tint: { colors: ['paper'] }, + frame: { x: 0.2572, y: 0.5857, w: 0.0952, h: 0.0476 }, + rotation: 10, + opacity: 0.92, + locked: false, + group: 'sheet-03', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't9', + on: 'accent2', + frame: { x: 0.1143, y: 0.8571, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-03', + kind: 'text', + text: 'N° 03', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p10', + role: 'photo:4', + tint: { shadow: 'ink' }, + frame: { x: 0.5048, y: 0.6095, w: 0.381, h: 0.2381 }, + rotation: -1, + opacity: 1, + locked: false, + group: 'sheet-04', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's11', + tint: { colors: ['paper'] }, + frame: { x: 0.6477, y: 0.5857, w: 0.0952, h: 0.0476 }, + rotation: -6, + opacity: 0.92, + locked: false, + group: 'sheet-04', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't12', + on: 'accent2', + frame: { x: 0.5048, y: 0.8571, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-04', + kind: 'text', + text: 'N° 04', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p13', + role: 'photo:5', + tint: { shadow: 'ink' }, + frame: { x: 1.1143, y: 0.0952, w: 0.381, h: 0.2381 }, + rotation: 1, + opacity: 1, + locked: false, + group: 'sheet-05', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's14', + tint: { colors: ['paper'] }, + frame: { x: 1.2572, y: 0.0714, w: 0.0952, h: 0.0476 }, + rotation: 8, + opacity: 0.92, + locked: false, + group: 'sheet-05', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't15', + on: 'accent2', + frame: { x: 1.1143, y: 0.3428, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-05', + kind: 'text', + text: 'N° 05', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p16', + role: 'photo:6', + tint: { shadow: 'ink' }, + frame: { x: 1.5048, y: 0.0952, w: 0.381, h: 0.2381 }, + rotation: -1.5, + opacity: 1, + locked: false, + group: 'sheet-06', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's17', + tint: { colors: ['paper'] }, + frame: { x: 1.6477, y: 0.0714, w: 0.0952, h: 0.0476 }, + rotation: -10, + opacity: 0.92, + locked: false, + group: 'sheet-06', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't18', + on: 'accent2', + frame: { x: 1.5048, y: 0.3428, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-06', + kind: 'text', + text: 'N° 06', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p19', + role: 'photo:7', + tint: { shadow: 'ink' }, + frame: { x: 1.1143, y: 0.3905, w: 0.381, h: 0.2381 }, + rotation: -1, + opacity: 1, + locked: false, + group: 'sheet-07', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's20', + tint: { colors: ['paper'] }, + frame: { x: 1.2572, y: 0.3667, w: 0.0952, h: 0.0476 }, + rotation: 5, + opacity: 0.92, + locked: false, + group: 'sheet-07', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't21', + on: 'accent2', + frame: { x: 1.1143, y: 0.6381, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-07', + kind: 'text', + text: 'N° 07', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 'p22', + role: 'photo:8', + tint: { shadow: 'ink' }, + frame: { x: 1.5048, y: 0.3905, w: 0.381, h: 0.2381 }, + rotation: 1.5, + opacity: 1, + locked: false, + group: 'sheet-08', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0048, dy: 0.0057, color: '#2f3a2b', alpha: 0.16 }, + edge: 'deckle', + edgeSize: 0.0048, + }, + { + id: 's23', + tint: { colors: ['paper'] }, + frame: { x: 1.6477, y: 0.3667, w: 0.0952, h: 0.0476 }, + rotation: -7, + opacity: 0.92, + locked: false, + group: 'sheet-08', + kind: 'sticker', + stickerId: 'maskingTape', + colors: ['#e9dcc3'], + flipX: false, + }, + { + id: 't24', + on: 'accent2', + frame: { x: 1.5048, y: 0.6381, w: 0.1905, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'sheet-08', + kind: 'text', + text: 'N° 08', + font: 'mono', + size: 0.0305, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.2, + color: '#b5532c', + token: 'accent', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + }, + { + id: 't33', + role: 'body', + on: 'accent2', + frame: { x: 1.1143, y: 0.7048, w: 0.5714, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#2f3a2b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's34', + frame: { x: 1.7333, y: 0.6857, w: 0.0952, h: 0.207 }, + rotation: 20, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'leaf-oak', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's35', + frame: { x: 1.8286, y: 0.6667, w: 0.0476, h: 0.2164 }, + rotation: -16, + opacity: 0.75, + locked: false, + kind: 'shape', + shape: 'leaf-long', + fill: '#6f8a5a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's36', + tint: { colors: ['accent3'] }, + frame: { x: 1.7048, y: 0.8095, w: 0.0952, h: 0.0952 }, + rotation: 0, + opacity: 0.85, + locked: false, + kind: 'sticker', + stickerId: 'laurelWreath', + colors: ['#6f8a5a'], + flipX: false, + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/new-night-film.data.ts b/shared/src/book/templates/data/new-night-film.data.ts new file mode 100644 index 000000000..2dd78e5fb --- /dev/null +++ b/shared/src/book/templates/data/new-night-film.data.ts @@ -0,0 +1,3651 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * Night film: four covers and five double spreads in the manner of a film. + * A near black paper, film strips with sprocket holes, letterboxed wide + * photos, viewfinder corners, a neon accent, tall condensed capitals and a + * timecode and frame numbers in mono. Drawn in midnight. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const NEW_NIGHT_FILM: readonly BookDecoratedTemplate[] = [ + { + id: 'night-film-letterbox', + labelKey: 'studio.templates.name.nightFilmLetterbox', + kind: 'single', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'letterbox', 'one-photo', 'timecode', 'viewfinder', 'calm'], + descr: + 'Near black: a wide letterboxed photo across the page between two grey hairlines, viewfinder corners, a red REC dot and a timecode above, the year between neon rules and a tall condensed title under it.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: 0.2667, w: 1.0286, h: 0.4286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'l2', + tint: { stroke: 'accent3' }, + frame: { x: 0.0762, y: 0.2357, w: 0.8476, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#8a8f98', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l3', + tint: { stroke: 'accent3' }, + frame: { x: 0.0762, y: 0.7119, w: 0.8476, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#8a8f98', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l4', + tint: { stroke: 'ink' }, + frame: { x: 0.0571, y: 0.0571, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 0, y: 1 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.8857, y: 0.0571, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 1, y: 1 }, + { x: 1, y: 0 }, + { x: 0, y: 0 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l6', + tint: { stroke: 'ink' }, + frame: { x: 0.0571, y: 0.8857, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 0, y: 0 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l7', + tint: { stroke: 'ink' }, + frame: { x: 0.8857, y: 0.8857, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 1, y: 0 }, + { x: 1, y: 1 }, + { x: 0, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's8', + keep: true, + frame: { x: 0.0857, y: 0.1205, w: 0.0162, h: 0.0162 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'shape', + shape: 'ellipse', + fill: '#ff6b3d', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't9', + on: 'paper', + frame: { x: 0.1143, y: 0.1143, w: 0.1429, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'text', + text: 'REC', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.3, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't10', + on: 'paper', + frame: { x: 0.6381, y: 0.1143, w: 0.2762, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:00:01:00', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 'l11', + tint: { stroke: 'accent' }, + frame: { x: 0.3619, y: 0.1881, w: 0.0762, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'date', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't12', + role: 'date', + on: 'paper', + frame: { x: 0.3714, y: 0.1786, w: 0.2571, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'date', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.6, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 'l13', + tint: { stroke: 'accent' }, + frame: { x: 0.5619, y: 0.1881, w: 0.0762, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'date', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't14', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.7429, w: 0.8476, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.4, + weight: 400, + italic: false, + align: 'center', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.4, + }, + { + id: 't15', + role: 'subtitle', + on: 'paper', + frame: { x: 0.0762, y: 0.9, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.5, + color: '#afada9', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + ], + }, + { + id: 'night-film-strip', + labelKey: 'studio.templates.name.nightFilmStrip', + kind: 'single', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'filmstrip', 'three-photos', 'sprockets', 'script', 'graphic'], + descr: + 'Near black: a vertical film strip down the left with sprocket holes and three photos as its frames, frame numbers in neon mono, a stacked condensed title with the year above and a teal script subtitle on the right.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0857, y: -0.0143, w: 0.3429, h: 1.0286 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'strip', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l2', + tint: { stroke: 'ink' }, + frame: { x: 0.1024, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'strip', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l3', + tint: { stroke: 'ink' }, + frame: { x: 0.3976, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'strip', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p4', + role: 'photo:1', + frame: { x: 0.1381, y: 0.0667, w: 0.2381, h: 0.2762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p5', + role: 'photo:2', + frame: { x: 0.1381, y: 0.3619, w: 0.2381, h: 0.2762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p6', + role: 'photo:3', + frame: { x: 0.1381, y: 0.6571, w: 0.2381, h: 0.2762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't7', + on: 'paper', + frame: { x: 0.4476, y: 0.0667, w: 0.0571, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '12', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't8', + on: 'paper', + frame: { x: 0.4476, y: 0.3619, w: 0.0571, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '12A', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't9', + on: 'paper', + frame: { x: 0.4476, y: 0.6571, w: 0.0571, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '13', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's10', + tint: { colors: ['accent2'] }, + frame: { x: 0.8476, y: 0.1429, w: 0.0667, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#39d0c4'], + flipX: false, + }, + { + id: 't11', + role: 'date', + on: 'paper', + frame: { x: 0.5143, y: 0.2381, w: 0.4095, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.6, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't12', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.5048, y: 0.2762, w: 0.419, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.4571, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.4571, + }, + { + id: 't13', + role: 'subtitle', + on: 'paper', + frame: { x: 0.5048, y: 0.6857, w: 0.419, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'satisfy', + size: 0.1143, + weight: 400, + italic: false, + align: 'left', + leading: 1.1, + tracking: 0, + color: '#39d0c4', + token: 'accent2', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1143, + }, + { + id: 'l14', + tint: { stroke: 'accent' }, + frame: { x: 0.5143, y: 0.7929, w: 0.1143, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0038, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't15', + on: 'paper', + frame: { x: 0.5143, y: 0.8857, w: 0.4095, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:00:12:00', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + ], + }, + { + id: 'night-film-title-card', + labelKey: 'studio.templates.name.nightFilmTitleCard', + kind: 'single', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'title-card', 'typographic', 'one-photo', 'filmstrip', 'calm'], + descr: + 'Near black inside a faint frame: a timecode and a red REC dot at the top, the year in neon spaced capitals, a huge centred condensed title with a neon edge and a thin panorama on a small film strip at the foot.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0571, y: 0.0571, w: 0.8857, h: 0.8857 }, + rotation: 0, + opacity: 0.35, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#f2efe8', + strokeToken: 'ink', + strokeWidth: 0.0014, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't2', + on: 'paper', + frame: { x: 0.0952, y: 0.0952, w: 0.2857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:00:00:01', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's3', + keep: true, + frame: { x: 0.8, y: 0.1014, w: 0.0162, h: 0.0162 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'shape', + shape: 'ellipse', + fill: '#ff6b3d', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't4', + on: 'paper', + frame: { x: 0.8286, y: 0.0952, w: 0.0857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'text', + text: 'REC', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.3, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't5', + role: 'date', + on: 'paper', + frame: { x: 0.1905, y: 0.1905, w: 0.619, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.8, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't6', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.0952, y: 0.2381, w: 0.8095, h: 0.3619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.7143, + weight: 400, + italic: false, + align: 'center', + leading: 0.84, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.7143, + }, + { + id: 't7', + role: 'subtitle', + on: 'paper', + frame: { x: 0.0952, y: 0.6095, w: 0.8095, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0476, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.6, + color: '#afada9', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0476, + }, + { + id: 'l8', + tint: { stroke: 'accent' }, + frame: { x: 0.4524, y: 0.6738, w: 0.0952, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's9', + tint: { colors: ['accent2'] }, + frame: { x: 0.781, y: 0.2095, w: 0.0762, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#39d0c4'], + flipX: false, + }, + { + id: 's10', + frame: { x: 0.181, y: 0.7143, w: 0.6381, h: 0.2 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'strip', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l11', + tint: { stroke: 'ink' }, + frame: { x: 0.181, y: 0.7238, w: 0.6381, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'strip', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0057, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p12', + role: 'photo:1', + frame: { x: 0.2095, y: 0.7476, w: 0.581, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'strip', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'l13', + tint: { stroke: 'ink' }, + frame: { x: 0.181, y: 0.8905, w: 0.6381, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'strip', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0057, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + ], + }, + { + id: 'night-film-fade-out', + labelKey: 'studio.templates.name.nightFilmFadeOut', + kind: 'single', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'full-bleed', 'one-photo', 'fade', 'poster', 'moody'], + descr: + 'A full bleed photo over the top two thirds fading into near black, the year and a REC mark on small black bands over the picture, a tall centred condensed title with a neon edge, a teal subtitle and a timecode at the foot.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.7524 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.4, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: -0.0143, y: 0.3429, w: 1.0286, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#121417', + gradient: 'down', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + tint: { highlight: 'paper' }, + frame: { x: 0.0857, y: 0.0762, w: 0.3333, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.6, + color: '#f2efe8', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#121417', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 's4', + keep: true, + frame: { x: 0.819, y: 0.0848, w: 0.0162, h: 0.0162 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'shape', + shape: 'ellipse', + fill: '#ff6b3d', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't5', + tint: { highlight: 'paper' }, + frame: { x: 0.8476, y: 0.0762, w: 0.0762, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'text', + text: 'REC', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#f2efe8', + token: 'ink', + binding: null, + overridden: false, + vAlign: 'middle', + highlight: { color: '#121417', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + }, + { + id: 't6', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.5619, w: 0.8476, h: 0.2476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.5714, + weight: 400, + italic: false, + align: 'center', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.5714, + }, + { + id: 't7', + role: 'subtitle', + on: 'paper', + frame: { x: 0.0762, y: 0.819, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.6, + color: '#39d0c4', + token: 'accent2', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 'l8', + tint: { stroke: 'accent' }, + frame: { x: 0.4238, y: 0.8786, w: 0.1524, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0038, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't9', + on: 'paper', + frame: { x: 0.0762, y: 0.9238, w: 0.3333, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:01:24:16', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't10', + on: 'paper', + frame: { x: 0.5905, y: 0.9238, w: 0.3333, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '35MM', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + ], + }, + { + id: 'night-film-opening', + labelKey: 'studio.templates.name.nightFilmOpening', + kind: 'inner', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'letterbox', 'one-photo', 'story', 'long-text', 'calm'], + descr: + 'The left page a wide letterboxed photo between grey hairlines with a REC mark, a timecode and a neon ticket; the right page the date, a tall condensed title with a neon edge, the subtitle and a long story.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 't1', + on: 'paper', + frame: { x: 0.0762, y: 0.119, w: 0.2857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:00:00:01', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's2', + keep: true, + frame: { x: 0.8095, y: 0.1252, w: 0.0162, h: 0.0162 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'shape', + shape: 'ellipse', + fill: '#ff6b3d', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + on: 'paper', + frame: { x: 0.8381, y: 0.119, w: 0.0857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'text', + text: 'REC', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.3, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 'l4', + tint: { stroke: 'accent3' }, + frame: { x: -0.0143, y: 0.1833, w: 1.0143, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#8a8f98', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p5', + role: 'photo:1', + frame: { x: -0.0143, y: 0.2095, w: 1.0143, h: 0.5619 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'l6', + tint: { stroke: 'accent3' }, + frame: { x: -0.0143, y: 0.7833, w: 1.0143, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#8a8f98', + strokeWidth: 0.0012, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't7', + role: 'caption', + on: 'paper', + frame: { x: 0.0762, y: 0.8286, w: 0.6286, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0381, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0, + color: '#afada9', + token: 'muted', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 's8', + tint: { colors: ['accent', 'paper'] }, + frame: { x: 0.7524, y: 0.819, w: 0.1714, h: 0.0876 }, + rotation: -8, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'ticket', + colors: ['#ff6b3d', '#121417'], + flipX: false, + }, + { + id: 't9', + role: 'date', + on: 'paper', + frame: { x: 1.0762, y: 0.1143, w: 0.7143, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't10', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 1.0762, y: 0.1524, w: 0.8476, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.4, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.4, + }, + { + id: 't11', + role: 'subtitle', + on: 'paper', + frame: { x: 1.0762, y: 0.3619, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#afada9', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 'l12', + tint: { stroke: 'accent' }, + frame: { x: 1.081, y: 0.4119, w: 0.1048, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0038, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't13', + role: 'body', + frame: { x: 1.0762, y: 0.4571, w: 0.7619, h: 0.4667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0452, + weight: 400, + italic: false, + align: 'left', + leading: 1.6, + tracking: 0, + color: '#f2efe8', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's14', + tint: { colors: ['accent2'] }, + frame: { x: 1.8571, y: 0.4476, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#39d0c4'], + flipX: false, + }, + { + id: 't15', + on: 'paper', + frame: { x: 1.5714, y: 0.9381, w: 0.3524, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:03:12:08', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + ], + }, + { + id: 'night-film-subtitles', + labelKey: 'studio.templates.name.nightFilmSubtitles', + kind: 'inner', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'filmstrip', 'three-photos', 'full-bleed', 'subtitle', 'moody'], + descr: + 'The left page a vertical film strip of two photos with sprocket holes and frame numbers beside the date, a tall condensed title and a short story; the right page a full bleed photo in viewfinder corners with the place as a film subtitle.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0857, y: -0.0143, w: 0.381, h: 1.0286 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'strip', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l2', + tint: { stroke: 'ink' }, + frame: { x: 0.1024, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'strip', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l3', + tint: { stroke: 'ink' }, + frame: { x: 0.4357, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'strip', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p4', + role: 'photo:2', + frame: { x: 0.1429, y: 0.0857, w: 0.2667, h: 0.3905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p5', + role: 'photo:3', + frame: { x: 0.1429, y: 0.5238, w: 0.2667, h: 0.3905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't6', + on: 'paper', + frame: { x: 0.481, y: 0.0857, w: 0.0429, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '14', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't7', + on: 'paper', + frame: { x: 0.481, y: 0.5238, w: 0.0429, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '15', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't8', + role: 'date', + on: 'paper', + frame: { x: 0.5333, y: 0.1905, w: 0.3905, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't9', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.5333, y: 0.2286, w: 0.3905, h: 0.3429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.381, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.381, + }, + { + id: 't10', + role: 'body', + frame: { x: 0.5333, y: 0.6381, w: 0.3905, h: 0.2762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#f2efe8', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'p11', + role: 'photo:1', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'l12', + tint: { stroke: 'ink' }, + frame: { x: 1.0571, y: 0.0571, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 0, y: 1 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l13', + tint: { stroke: 'ink' }, + frame: { x: 1.8857, y: 0.0571, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 1, y: 1 }, + { x: 1, y: 0 }, + { x: 0, y: 0 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l14', + tint: { stroke: 'ink' }, + frame: { x: 1.0571, y: 0.8857, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 0, y: 0 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l15', + tint: { stroke: 'ink' }, + frame: { x: 1.8857, y: 0.8857, w: 0.0571, h: 0.0571 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 1, y: 0 }, + { x: 1, y: 1 }, + { x: 0, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't16', + tint: { highlight: 'paper' }, + frame: { x: 1.0762, y: 0.0857, w: 0.2857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:42:17:11', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#f2efe8', + token: 'ink', + binding: null, + overridden: false, + vAlign: 'middle', + highlight: { color: '#121417', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + }, + { + id: 's17', + keep: true, + frame: { x: 1.8, y: 0.0919, w: 0.0162, h: 0.0162 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'shape', + shape: 'ellipse', + fill: '#ff6b3d', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't18', + tint: { highlight: 'paper' }, + frame: { x: 1.8286, y: 0.0857, w: 0.0857, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'rec', + kind: 'text', + text: 'REC', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#f2efe8', + token: 'ink', + binding: null, + overridden: false, + vAlign: 'middle', + highlight: { color: '#121417', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + }, + { + id: 't19', + role: 'subtitle', + tint: { highlight: 'paper' }, + frame: { x: 1.1238, y: 0.8381, w: 0.7524, h: 0.0429 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0524, + weight: 400, + italic: false, + align: 'center', + leading: 1.2, + tracking: 0, + color: '#f2efe8', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'middle', + highlight: { color: '#121417', alpha: 0.85, padX: 0.0095, padY: 0.0038, radius: 0 }, + fit: 'shrink', + fitMax: 0.0524, + }, + ], + }, + { + id: 'night-film-reels', + labelKey: 'studio.templates.name.nightFilmReels', + kind: 'inner', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'filmstrip', 'five-photos', 'fade', 'sprockets', 'lively'], + descr: + 'The left page a photo fading into near black under the date band, with a tall condensed title, the subtitle in teal and the story; the right page two vertical film strips with sprocket holes holding four photos, set off against each other.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 0.6762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.4, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + frame: { x: -0.0143, y: 0.2857, w: 1.0143, h: 0.381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#121417', + gradient: 'down', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'date', + tint: { highlight: 'paper' }, + frame: { x: 0.0762, y: 0.0762, w: 0.4286, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#f2efe8', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#121417', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't4', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.5619, w: 0.8476, h: 0.2381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.4571, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.4571, + }, + { + id: 't5', + role: 'subtitle', + on: 'paper', + frame: { x: 0.0762, y: 0.8095, w: 0.8476, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#39d0c4', + token: 'accent2', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't6', + role: 'body', + frame: { x: 0.0762, y: 0.8619, w: 0.8476, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#f2efe8', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's7', + frame: { x: 1.0857, y: -0.0143, w: 0.3619, h: 1.0286 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'reel-a', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l8', + tint: { stroke: 'ink' }, + frame: { x: 1.1024, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-a', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l9', + tint: { stroke: 'ink' }, + frame: { x: 1.4167, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-a', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p10', + role: 'photo:2', + frame: { x: 1.1429, y: 0.0857, w: 0.2476, h: 0.3905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-a', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p11', + role: 'photo:3', + frame: { x: 1.1429, y: 0.5143, w: 0.2476, h: 0.3905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-a', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't12', + on: 'paper', + frame: { x: 1.1429, y: 0.9238, w: 0.2476, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-a', + kind: 'text', + text: '16 17', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's13', + frame: { x: 1.5143, y: -0.0143, w: 0.3619, h: 1.0286 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'reel-b', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l14', + tint: { stroke: 'ink' }, + frame: { x: 1.531, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-b', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l15', + tint: { stroke: 'ink' }, + frame: { x: 1.8452, y: -0.0143, w: 0.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-b', + kind: 'line', + points: [ + { x: 0.5, y: 0 }, + { x: 0.5, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p16', + role: 'photo:4', + frame: { x: 1.5714, y: 0.0476, w: 0.2476, h: 0.3905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-b', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p17', + role: 'photo:5', + frame: { x: 1.5714, y: 0.4762, w: 0.2476, h: 0.3905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-b', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't18', + on: 'paper', + frame: { x: 1.5714, y: 0.8857, w: 0.2476, h: 0.0214 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-b', + kind: 'text', + text: '18 19', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'center', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + ], + }, + { + id: 'night-film-contact', + labelKey: 'studio.templates.name.nightFilmContact', + kind: 'inner', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'contact-sheet', 'seven-photos', 'grease-pencil', 'viewfinder', 'graphic'], + descr: + 'The left page one photo in viewfinder corners over the date, a tall condensed title and the subtitle; the right page a contact sheet of six frames in three film rows with frame numbers, one circled and one crossed in neon.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: 0.1143, y: 0.1143, w: 0.7714, h: 0.5143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'l2', + tint: { stroke: 'ink' }, + frame: { x: 0.0905, y: 0.0905, w: 0.0476, h: 0.0476 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 0, y: 1 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l3', + tint: { stroke: 'ink' }, + frame: { x: 0.8619, y: 0.0905, w: 0.0476, h: 0.0476 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 1, y: 1 }, + { x: 1, y: 0 }, + { x: 0, y: 0 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l4', + tint: { stroke: 'ink' }, + frame: { x: 0.0905, y: 0.6048, w: 0.0476, h: 0.0476 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 0, y: 0 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.8619, y: 0.6048, w: 0.0476, h: 0.0476 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'viewfinder', + kind: 'line', + points: [ + { x: 1, y: 0 }, + { x: 1, y: 1 }, + { x: 0, y: 1 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0029, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't6', + on: 'paper', + frame: { x: 0.5905, y: 0.6714, w: 0.2952, h: 0.0238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '00:12:48:03', + font: 'mono', + size: 0.0333, + weight: 400, + italic: false, + align: 'right', + leading: 1, + tracking: 0.12, + color: '#afada9', + token: 'muted', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't7', + role: 'date', + on: 'paper', + frame: { x: 0.1143, y: 0.7048, w: 0.5714, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't8', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.1143, y: 0.7429, w: 0.7714, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.3429, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.3429, + }, + { + id: 't9', + role: 'subtitle', + on: 'paper', + frame: { x: 0.1143, y: 0.9048, w: 0.7714, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#afada9', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 's10', + frame: { x: 1.0286, y: 0.081, w: 0.9857, h: 0.2762 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'row-1', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l11', + tint: { stroke: 'ink' }, + frame: { x: 1.0286, y: 0.0905, w: 0.9857, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'row-1', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0067, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p12', + role: 'photo:2', + frame: { x: 1.0762, y: 0.119, w: 0.4048, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p13', + role: 'photo:3', + frame: { x: 1.519, y: 0.119, w: 0.4048, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't14', + on: 'paper', + frame: { x: 1.0762, y: 0.3357, w: 0.0952, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-1', + kind: 'text', + text: '21', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't15', + on: 'paper', + frame: { x: 1.519, y: 0.3357, w: 0.0952, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-1', + kind: 'text', + text: '21A', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's16', + frame: { x: 1.0286, y: 0.3667, w: 0.9857, h: 0.2762 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'row-2', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l17', + tint: { stroke: 'ink' }, + frame: { x: 1.0286, y: 0.3762, w: 0.9857, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'row-2', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0067, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p18', + role: 'photo:4', + frame: { x: 1.0762, y: 0.4048, w: 0.4048, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p19', + role: 'photo:5', + frame: { x: 1.519, y: 0.4048, w: 0.4048, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't20', + on: 'paper', + frame: { x: 1.0762, y: 0.6214, w: 0.0952, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-2', + kind: 'text', + text: '22', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't21', + on: 'paper', + frame: { x: 1.519, y: 0.6214, w: 0.0952, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-2', + kind: 'text', + text: '22A', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's22', + frame: { x: 1.0286, y: 0.6524, w: 0.9857, h: 0.2762 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'row-3', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l23', + tint: { stroke: 'ink' }, + frame: { x: 1.0286, y: 0.6619, w: 0.9857, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'row-3', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0067, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p24', + role: 'photo:6', + frame: { x: 1.0762, y: 0.6905, w: 0.4048, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-3', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p25', + role: 'photo:7', + frame: { x: 1.519, y: 0.6905, w: 0.4048, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-3', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't26', + on: 'paper', + frame: { x: 1.0762, y: 0.9071, w: 0.0952, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-3', + kind: 'text', + text: '23', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't27', + on: 'paper', + frame: { x: 1.519, y: 0.9071, w: 0.0952, h: 0.019 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'row-3', + kind: 'text', + text: '23A', + font: 'mono', + size: 0.031, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's28', + tint: { colors: ['accent'] }, + frame: { x: 1.4929, y: 0.0462, w: 0.4571, h: 0.3048 }, + rotation: -4, + opacity: 0.9, + locked: false, + kind: 'sticker', + stickerId: 'handCircle', + colors: ['#ff6b3d'], + flipX: false, + }, + { + id: 's29', + tint: { colors: ['accent'] }, + frame: { x: 1.3905, y: 0.7048, w: 0.0667, h: 0.0667 }, + rotation: 0, + opacity: 0.9, + locked: false, + kind: 'sticker', + stickerId: 'xMark', + colors: ['#ff6b3d'], + flipX: false, + }, + ], + }, + { + id: 'night-film-double-reel', + labelKey: 'studio.templates.name.nightFilmDoubleReel', + kind: 'inner', + archetype: 'night-film', + tags: ['cinematic', 'dark', 'filmstrip', 'eight-photos', 'sprockets', 'story', 'lively'], + descr: + 'Two film strips run across the spread with sprocket holes and neon frame numbers, four letterboxed photos each; between them the date and a tall condensed title on the left, the subtitle, a neon rule and the story on the right.', + background: '#121417', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: 0.0571, w: 2.0286, h: 0.2857 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'reel-1', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l2', + tint: { stroke: 'ink' }, + frame: { x: -0.0143, y: 0.069, w: 2.0286, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-1', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l3', + tint: { stroke: 'ink' }, + frame: { x: -0.0143, y: 0.3167, w: 2.0286, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-1', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p4', + role: 'photo:1', + frame: { x: 0.0762, y: 0.1048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p5', + role: 'photo:2', + frame: { x: 0.519, y: 0.1048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p6', + role: 'photo:3', + frame: { x: 1.0762, y: 0.1048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p7', + role: 'photo:4', + frame: { x: 1.519, y: 0.1048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't8', + on: 'paper', + frame: { x: 0.0762, y: 0.299, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'text', + text: '01', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't9', + on: 'paper', + frame: { x: 0.519, y: 0.299, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'text', + text: '02', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't10', + on: 'paper', + frame: { x: 1.0762, y: 0.299, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'text', + text: '03', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't11', + on: 'paper', + frame: { x: 1.519, y: 0.299, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-1', + kind: 'text', + text: '04', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 's12', + frame: { x: -0.0143, y: 0.6571, w: 2.0286, h: 0.2857 }, + rotation: 0, + opacity: 0.12, + locked: false, + group: 'reel-2', + kind: 'shape', + shape: 'rect', + fill: '#f2efe8', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l13', + tint: { stroke: 'ink' }, + frame: { x: -0.0143, y: 0.669, w: 2.0286, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-2', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'l14', + tint: { stroke: 'ink' }, + frame: { x: -0.0143, y: 0.9167, w: 2.0286, h: 0.0143 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'reel-2', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#f2efe8', + strokeWidth: 0.0076, + dash: 'dashed', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 'p15', + role: 'photo:5', + frame: { x: 0.0762, y: 0.7048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p16', + role: 'photo:6', + frame: { x: 0.519, y: 0.7048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p17', + role: 'photo:7', + frame: { x: 1.0762, y: 0.7048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 'p18', + role: 'photo:8', + frame: { x: 1.519, y: 0.7048, w: 0.4048, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + }, + { + id: 't19', + on: 'paper', + frame: { x: 0.0762, y: 0.899, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'text', + text: '05', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't20', + on: 'paper', + frame: { x: 0.519, y: 0.899, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'text', + text: '06', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't21', + on: 'paper', + frame: { x: 1.0762, y: 0.899, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'text', + text: '07', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't22', + on: 'paper', + frame: { x: 1.519, y: 0.899, w: 0.0667, h: 0.0171 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'reel-2', + kind: 'text', + text: '08', + font: 'mono', + size: 0.0286, + weight: 400, + italic: false, + align: 'left', + leading: 1, + tracking: 0.12, + color: '#ff6b3d', + token: 'accent', + binding: null, + overridden: false, + vAlign: 'middle', + }, + { + id: 't23', + role: 'date', + on: 'paper', + frame: { x: 0.0762, y: 0.381, w: 0.7143, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#ff6b3d', + token: 'accent', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't24', + role: 'title', + on: 'paper', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.419, w: 0.8476, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'league', + size: 0.3619, + weight: 400, + italic: false, + align: 'left', + leading: 0.86, + tracking: 0.04, + color: '#f2efe8', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0038, dy: 0.0019, color: '#ff6b3d', alpha: 1 }, + fit: 'shrink', + fitMax: 0.3619, + }, + { + id: 't25', + role: 'subtitle', + on: 'paper', + frame: { x: 1.0762, y: 0.381, w: 0.7143, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'side', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0429, + weight: 500, + italic: false, + align: 'left', + leading: 1, + tracking: 0.5, + color: '#afada9', + token: 'muted', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 'l26', + tint: { stroke: 'accent' }, + frame: { x: 1.819, y: 0.3905, w: 0.1048, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'side', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#ff6b3d', + strokeWidth: 0.0038, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't27', + role: 'body', + frame: { x: 1.0762, y: 0.4381, w: 0.8476, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#f2efe8', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/new-riso.data.ts b/shared/src/book/templates/data/new-riso.data.ts new file mode 100644 index 000000000..77cc41dde --- /dev/null +++ b/shared/src/book/templates/data/new-riso.data.ts @@ -0,0 +1,2189 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * Risograph pages: two or three spot inks printed over each other a little + * out of register, halftone and grain, heavy grotesque capitals and doodles. + * Four covers and five double spreads. Drawn in riso. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const NEW_RISO: readonly BookDecoratedTemplate[] = [ + { + id: 'riso-overprint', + labelKey: 'studio.templates.name.risoOverprint', + kind: 'single', + archetype: 'riso', + tags: ['riso', 'overprint', 'poster', 'halftone', 'one-photo', 'doodles', 'lively'], + descr: + 'Cream paper with grain: a yellow disc bleeding off the top right with a pink ring printed out of register, a large photo on a pink offset plate, a teal halftone blob over its corner, the title in heavy blue capitals with a pink misprint.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.16, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grain', fg: '#23306b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.381, y: -0.1238, w: 0.781, h: 0.781 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + keep: true, + frame: { x: 0.4048, y: -0.0952, w: 0.781, h: 0.781 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: null, + gradient: 'none', + stroke: '#ed4981', + strokeToken: 'accent', + strokeWidth: 0.0057, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p4', + role: 'photo:1', + tint: { shadow: 'accent' }, + frame: { x: 0.0857, y: 0.1286, w: 0.6, h: 0.581 }, + rotation: -2, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.019, dy: 0.0143, color: '#ed4981', alpha: 0.9 }, + }, + { + id: 's5', + keep: true, + tint: { fg: 'accent3' }, + frame: { x: 0.5333, y: 0.5048, w: 0.3429, h: 0.3048 }, + rotation: 12, + opacity: 0.9, + locked: false, + group: 'picture', + kind: 'shape', + shape: 'blob-2', + fill: '#00a39a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'polka', fg: '#00a39a', bg: null, scale: 0.4, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's6', + tint: { colors: ['ink'] }, + frame: { x: 0.781, y: 0.0571, w: 0.1333, h: 0.1067 }, + rotation: 10, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'doodleStars', + colors: ['#23306b'], + flipX: false, + }, + { + id: 't7', + role: 'date', + frame: { x: 0.0857, y: 0.0571, w: 0.2857, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't8', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.719, w: 0.8476, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.2857, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0086, dy: 0.0067, color: '#ed4981', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2857, + }, + { + id: 't9', + role: 'subtitle', + frame: { x: 0.0857, y: 0.8952, w: 0.581, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0476, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.22, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0476, + }, + { + id: 's10', + tint: { colors: ['accent'] }, + frame: { x: 0.7048, y: 0.8905, w: 0.2, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'sticker', + stickerId: 'squiggle', + colors: ['#ed4981'], + flipX: false, + }, + ], + }, + { + id: 'riso-halftone-sun', + labelKey: 'studio.templates.name.risoHalftoneSun', + kind: 'single', + archetype: 'riso', + tags: ['riso', 'sun', 'halftone', 'circle', 'one-photo', 'misregistered', 'loud'], + descr: + 'Yellow page with grain: a pink sun with a blue halftone copy slipped off register, a round photo in its middle on a teal crescent, a curly arrow and sparkles, the title in heavy capitals with a pink misprint across the foot.', + background: '#ffd23f', + backgroundToken: 'accent2', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.14, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grain', fg: '#23306b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.2571, y: 0.0571, w: 0.6286, h: 0.6286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ed4981', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + keep: true, + tint: { fg: 'ink' }, + frame: { x: 0.219, y: 0.0952, w: 0.6286, h: 0.6286 }, + rotation: 0, + opacity: 0.4, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'dots', fg: '#23306b', bg: null, scale: 0.35, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p4', + role: 'photo:1', + keep: true, + tint: { shadow: 'accent3' }, + frame: { x: 0.3095, y: 0.1095, w: 0.5238, h: 0.5238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'ellipse', + frameStyle: 'none', + shadow: { dx: 0.0143, dy: 0.0143, color: '#00a39a', alpha: 1 }, + }, + { + id: 's5', + tint: { colors: ['ink'] }, + frame: { x: 0.7619, y: 0.0952, w: 0.1143, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#23306b'], + flipX: false, + }, + { + id: 's6', + tint: { colors: ['ink'] }, + frame: { x: 0.0667, y: 0.3714, w: 0.1524, h: 0.1219 }, + rotation: -14, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'curlyArrow', + colors: ['#23306b'], + flipX: true, + }, + { + id: 't7', + role: 'date', + on: 'accent2', + frame: { x: 0.0762, y: 0.0667, w: 0.3048, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't8', + role: 'title', + on: 'accent2', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.7, w: 0.8476, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.3333, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0095, dy: 0.0076, color: '#ed4981', alpha: 1 }, + fit: 'shrink', + fitMax: 0.3333, + }, + { + id: 't9', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.0762, y: 0.9, w: 0.6667, h: 0.0429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.22, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + ], + }, + { + id: 'riso-zine-stack', + labelKey: 'studio.templates.name.risoZineStack', + kind: 'single', + archetype: 'riso', + tags: ['riso', 'zine', 'colour-block', 'wavy', 'two-photos', 'doodles', 'lively'], + descr: + 'A teal band across the head with a yellow wave along its edge and the subtitle and year in cream, a tilted photo on a pink plate and an arch photo on a yellow plate, the title in heavy capitals over a pink swoosh.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.3143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#00a39a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: -0.0476, y: 0.2524, w: 1.0952, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'wavy-band', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'subtitle', + on: 'accent3', + frame: { x: 0.0762, y: 0.0619, w: 0.581, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0571, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.22, + color: '#f4efe4', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0571, + }, + { + id: 't4', + role: 'date', + on: 'accent3', + frame: { x: 0.6857, y: 0.0667, w: 0.2381, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0476, + weight: 700, + italic: false, + align: 'right', + leading: 1, + tracking: 0.38, + color: '#f4efe4', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0476, + }, + { + id: 'p5', + role: 'photo:1', + tint: { shadow: 'accent' }, + frame: { x: 0.0857, y: 0.181, w: 0.5048, h: 0.5524 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0152, dy: 0.0152, color: '#ed4981', alpha: 0.95 }, + }, + { + id: 'p6', + role: 'photo:2', + keep: true, + tint: { shadow: 'accent2' }, + frame: { x: 0.5524, y: 0.3238, w: 0.3333, h: 0.4 }, + rotation: 4, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'arch', + frameStyle: 'none', + shadow: { dx: -0.0143, dy: 0.0143, color: '#ffd23f', alpha: 1 }, + }, + { + id: 's7', + tint: { colors: ['accent'] }, + frame: { x: 0.8143, y: 0.6571, w: 0.1143, h: 0.0914 }, + rotation: 12, + opacity: 1, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'doodleStars', + colors: ['#ed4981'], + flipX: false, + }, + { + id: 't8', + role: 'title', + tint: { shadow: 'accent3' }, + frame: { x: 0.0762, y: 0.7524, w: 0.8476, h: 0.1429 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.2286, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0086, dy: 0.0067, color: '#00a39a', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2286, + }, + { + id: 's9', + tint: { colors: ['accent'] }, + frame: { x: 0.0762, y: 0.8905, w: 0.381, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'sticker', + stickerId: 'underlineSwoosh', + colors: ['#ed4981'], + flipX: false, + }, + ], + }, + { + id: 'riso-pink-press', + labelKey: 'studio.templates.name.risoPinkPress', + kind: 'single', + archetype: 'riso', + tags: ['riso', 'type-led', 'poster', 'halftone', 'one-photo', 'misregistered', 'loud'], + descr: + 'Fluo pink page with grain: a huge stacked title in blue capitals with a teal misprint, a yellow half sun rising at the foot with a halftone copy off register, a small photo cut as a sun and the subtitle on a blue band.', + background: '#ed4981', + backgroundToken: 'accent', + elements: [ + { + id: 's1', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 1.0286 }, + rotation: 0, + opacity: 0.14, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grain', fg: '#23306b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0952, y: 0.6, w: 0.8095, h: 0.4143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'half-circle', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + tint: { fg: 'ink' }, + frame: { x: 0.1286, y: 0.6286, w: 0.8095, h: 0.4143 }, + rotation: 0, + opacity: 0.4, + locked: false, + kind: 'shape', + shape: 'half-circle', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'dots', fg: '#23306b', bg: null, scale: 0.35, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't4', + role: 'date', + on: 'accent', + frame: { x: 0.0762, y: 0.0571, w: 0.4, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 's5', + tint: { colors: ['paper'] }, + frame: { x: 0.8, y: 0.0476, w: 0.1143, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#f4efe4'], + flipX: false, + }, + { + id: 't6', + role: 'title', + on: 'accent', + tint: { shadow: 'accent3' }, + frame: { x: 0.0762, y: 0.1143, w: 0.8476, h: 0.4762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.4286, + weight: 800, + italic: false, + align: 'left', + leading: 0.84, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + shadow: { dx: 0.0114, dy: 0.0086, color: '#00a39a', alpha: 1 }, + fit: 'shrink', + fitMax: 0.4286, + }, + { + id: 's7', + tint: { colors: ['paper'] }, + frame: { x: 0.0762, y: 0.5905, w: 0.2286, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'sticker', + stickerId: 'squiggle', + colors: ['#f4efe4'], + flipX: false, + }, + { + id: 'p8', + role: 'photo:1', + keep: true, + tint: { shadow: 'ink' }, + frame: { x: 0.6095, y: 0.5714, w: 0.3048, h: 0.3048 }, + rotation: 8, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'sun-cutout', + frameStyle: 'none', + shadow: { dx: 0.0114, dy: 0.0114, color: '#23306b', alpha: 1 }, + }, + { + id: 't9', + role: 'subtitle', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.7048, w: 0.4762, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0476, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.22, + color: '#f4efe4', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#23306b', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0476, + }, + ], + }, + { + id: 'riso-story-plate', + labelKey: 'studio.templates.name.risoStoryPlate', + kind: 'inner', + archetype: 'riso', + tags: ['riso', 'story', 'long-text', 'halftone', 'one-photo', 'stamp', 'calm'], + descr: + 'A bleed photo on the left with a pink halftone disc over its foot; on the right a yellow head block with a pink outline printed off register, the title with a pink misprint, the place, a stamped date and a long story.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 'p1', + role: 'photo:1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + }, + { + id: 's2', + keep: true, + tint: { fg: 'accent' }, + frame: { x: 0.4762, y: 0.5905, w: 0.4286, h: 0.4286 }, + rotation: 0, + opacity: 0.85, + locked: false, + group: 'picture', + kind: 'shape', + shape: 'ellipse', + fill: '#ed4981', + gradient: 'none', + paint: { type: 'pattern', pattern: 'polka', fg: '#ed4981', bg: null, scale: 0.45, angle: 0 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 0.3714 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 1.0333, y: 0.019, w: 0.9381, h: 0.3524 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#ed4981', + strokeToken: 'accent', + strokeWidth: 0.0048, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't5', + role: 'title', + on: 'accent2', + tint: { shadow: 'accent' }, + frame: { x: 1.0762, y: 0.0952, w: 0.6286, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.1714, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0067, dy: 0.0052, color: '#ed4981', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't6', + role: 'subtitle', + frame: { x: 1.0762, y: 0.4, w: 0.6286, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.3, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'b7', + role: 'date', + keep: true, + frame: { x: 1.7429, y: 0.2667, w: 0.1714, h: 0.1714 }, + rotation: -8, + opacity: 1, + locked: false, + font: 'montserrat', + color: '#23306b', + accent: '#ed4981', + textScale: 1, + weight: 700, + stale: false, + token: 'ink', + accentToken: 'accent', + fontRole: 'heading', + kind: 'badge', + variant: 'date', + text: '14', + sub: 'MAY', + code: null, + style: 'stamp', + autoColor: true, + showIcon: true, + showLabel: true, + autoIconColor: true, + iconColor: '#ed4981', + }, + { + id: 't8', + role: 'body', + frame: { x: 1.0762, y: 0.4762, w: 0.6952, h: 0.4476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.55, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's9', + tint: { colors: ['accent3'] }, + frame: { x: 1.8095, y: 0.5238, w: 0.0952, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'side', + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#00a39a'], + flipX: false, + }, + { + id: 's10', + tint: { colors: ['accent'] }, + frame: { x: 1.7619, y: 0.6952, w: 0.1714, h: 0.0571 }, + rotation: -90, + opacity: 1, + locked: false, + group: 'side', + kind: 'sticker', + stickerId: 'squiggle', + colors: ['#ed4981'], + flipX: false, + }, + { + id: 's11', + tint: { colors: ['accent'] }, + frame: { x: 1.8095, y: 0.8381, w: 0.0952, h: 0.0857 }, + rotation: 8, + opacity: 1, + locked: false, + group: 'side', + kind: 'sticker', + stickerId: 'doodleHeart', + colors: ['#ed4981'], + flipX: false, + }, + ], + }, + { + id: 'riso-offset-pair', + labelKey: 'studio.templates.name.risoOffsetPair', + kind: 'inner', + archetype: 'riso', + tags: ['riso', 'overprint', 'stripes', 'two-photos', 'story', 'doodles', 'lively'], + descr: + 'A tall photo on the left on a pink plate with a yellow disc behind it; on the right the date, the place and the story beside a rounded photo on a teal plate, the title in heavy capitals, a pink stripe band along the foot of both pages.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + tint: { fg: 'accent' }, + frame: { x: -0.0143, y: 0.9143, w: 2.0286, h: 0.1 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ed4981', + gradient: 'none', + paint: { type: 'pattern', pattern: 'stripes', fg: '#ed4981', bg: null, scale: 0.5, angle: 45 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.5048, y: 0.4857, w: 0.4286, h: 0.4286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.0762, w: 0.6, h: 0.7619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.019, dy: 0.019, color: '#ed4981', alpha: 0.9 }, + }, + { + id: 's4', + tint: { colors: ['ink'] }, + frame: { x: 0.7048, y: 0.0952, w: 0.1524, h: 0.1219 }, + rotation: 10, + opacity: 1, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'curlyArrow', + colors: ['#23306b'], + flipX: false, + }, + { + id: 't5', + role: 'date', + frame: { x: 1.0762, y: 0.0762, w: 0.2857, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't6', + role: 'subtitle', + frame: { x: 1.0762, y: 0.1238, w: 0.2857, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1.1, + tracking: 0.22, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'top', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't7', + role: 'body', + frame: { x: 1.0762, y: 0.2286, w: 0.2857, h: 0.4571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0405, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 'p8', + role: 'photo:2', + tint: { shadow: 'accent3' }, + frame: { x: 1.4, y: 0.1238, w: 0.5238, h: 0.5619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'squircle', + frameStyle: 'none', + shadow: { dx: -0.0152, dy: 0.0152, color: '#00a39a', alpha: 1 }, + }, + { + id: 's9', + tint: { colors: ['accent2'] }, + frame: { x: 1.8095, y: 0.6, w: 0.1143, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print', + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ffd23f'], + flipX: false, + }, + { + id: 't10', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 1.0762, y: 0.7143, w: 0.6667, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.2095, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0086, dy: 0.0067, color: '#ed4981', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2095, + }, + { + id: 's11', + tint: { colors: ['accent'] }, + frame: { x: 1.781, y: 0.7619, w: 0.1143, h: 0.0914 }, + rotation: 12, + opacity: 1, + locked: false, + group: 'title', + kind: 'sticker', + stickerId: 'doodleStars', + colors: ['#ed4981'], + flipX: false, + }, + ], + }, + { + id: 'riso-blob-trio', + labelKey: 'studio.templates.name.risoBlobTrio', + kind: 'inner', + archetype: 'riso', + tags: ['riso', 'blobs', 'halftone', 'colour-block', 'three-photos', 'doodles', 'lively'], + descr: + 'The left page a teal block with grain and a pink halftone disc, a photo cut as a blob on a pink misprint, the title in cream capitals with a blue misprint; on the right a rounded and an arched photo on plates, the date and story.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#00a39a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 0.16, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'grain', fg: '#23306b', bg: null, scale: 1, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + keep: true, + tint: { fg: 'accent' }, + frame: { x: 0.3619, y: -0.1619, w: 0.6, h: 0.6 }, + rotation: 0, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ed4981', + gradient: 'none', + paint: { type: 'pattern', pattern: 'polka', fg: '#ed4981', bg: null, scale: 0.45, angle: 0 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p4', + role: 'photo:1', + keep: true, + tint: { shadow: 'accent' }, + frame: { x: 0.0952, y: 0.0952, w: 0.6667, h: 0.6 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'blob-1', + frameStyle: 'none', + shadow: { dx: 0.0152, dy: 0.0114, color: '#ed4981', alpha: 1 }, + }, + { + id: 's5', + tint: { colors: ['accent2'] }, + frame: { x: 0.7619, y: 0.5238, w: 0.1143, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ffd23f'], + flipX: false, + }, + { + id: 't6', + role: 'subtitle', + on: 'accent3', + frame: { x: 0.0762, y: 0.7333, w: 0.6667, h: 0.0476 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0476, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.22, + color: '#f4efe4', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0476, + }, + { + id: 't7', + role: 'title', + on: 'accent3', + tint: { shadow: 'ink' }, + frame: { x: 0.0762, y: 0.7905, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.1714, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#f4efe4', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0076, dy: 0.0067, color: '#23306b', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 'p8', + role: 'photo:2', + keep: true, + tint: { shadow: 'accent2' }, + frame: { x: 1.0952, y: 0.0952, w: 0.4381, h: 0.4381 }, + rotation: -4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'squircle', + frameStyle: 'none', + shadow: { dx: 0.0143, dy: 0.0143, color: '#ffd23f', alpha: 1 }, + }, + { + id: 'p9', + role: 'photo:3', + tint: { shadow: 'accent' }, + frame: { x: 1.5048, y: 0.2286, w: 0.419, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: 'arch', + frameStyle: 'none', + shadow: { dx: -0.0143, dy: 0.0143, color: '#ed4981', alpha: 1 }, + }, + { + id: 't10', + role: 'date', + frame: { x: 1.0762, y: 0.6095, w: 0.381, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'notes', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't11', + role: 'body', + frame: { x: 1.0762, y: 0.6667, w: 0.381, h: 0.2571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'notes', + kind: 'text', + text: '', + font: 'inter', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.5, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's12', + tint: { colors: ['accent'] }, + frame: { x: 1.5333, y: 0.8476, w: 0.2286, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'side', + kind: 'sticker', + stickerId: 'squiggle', + colors: ['#ed4981'], + flipX: false, + }, + { + id: 's13', + tint: { colors: ['accent3'] }, + frame: { x: 1.8, y: 0.8286, w: 0.1143, h: 0.0914 }, + rotation: -10, + opacity: 1, + locked: false, + group: 'side', + kind: 'sticker', + stickerId: 'doodleStars', + colors: ['#00a39a'], + flipX: false, + }, + ], + }, + { + id: 'riso-zine-grid', + labelKey: 'studio.templates.name.risoZineGrid', + kind: 'inner', + archetype: 'riso', + tags: ['riso', 'zine', 'grid', 'offset-plates', 'five-photos', 'halftone', 'lively'], + descr: + 'A large photo on the left on a pink plate with a teal halftone blob and a curly arrow, the title with a pink misprint, the date on a blue band and the place; on the right four photos in a grid on yellow, teal and pink plates off register.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + keep: true, + tint: { fg: 'accent' }, + frame: { x: 1.7143, y: -0.1238, w: 0.4, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#ed4981', + gradient: 'none', + paint: { type: 'pattern', pattern: 'polka', fg: '#ed4981', bg: null, scale: 0.45, angle: 0 }, + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p2', + role: 'photo:1', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'picture', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0152, dy: 0.0152, color: '#ed4981', alpha: 0.9 }, + }, + { + id: 's3', + keep: true, + tint: { fg: 'accent3' }, + frame: { x: 0.0381, y: 0.4667, w: 0.2286, h: 0.2 }, + rotation: -12, + opacity: 0.9, + locked: false, + group: 'picture', + kind: 'shape', + shape: 'blob-3', + fill: '#00a39a', + gradient: 'none', + paint: { type: 'pattern', pattern: 'polka', fg: '#00a39a', bg: null, scale: 0.4, angle: 0 }, + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + tint: { colors: ['ink'] }, + frame: { x: 0.781, y: 0.581, w: 0.1333, h: 0.1067 }, + rotation: 6, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'curlyArrow', + colors: ['#23306b'], + flipX: false, + }, + { + id: 't5', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.6857, w: 0.8476, h: 0.1619 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.2, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0086, dy: 0.0067, color: '#ed4981', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2, + }, + { + id: 't6', + role: 'date', + tint: { highlight: 'ink' }, + frame: { x: 0.0857, y: 0.8762, w: 0.4, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#f4efe4', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + highlight: { color: '#23306b', alpha: 1, padX: 0.0114, padY: 0.0052, radius: 0 }, + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't7', + role: 'subtitle', + frame: { x: 0.5238, y: 0.8762, w: 0.4, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 700, + italic: false, + align: 'right', + leading: 1, + tracking: 0.22, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 's8', + frame: { x: 1.0905, y: 0.0905, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile1', + kind: 'shape', + shape: 'rect', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p9', + role: 'photo:2', + frame: { x: 1.0762, y: 0.0762, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile1', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + }, + { + id: 's10', + frame: { x: 1.5286, y: 0.0905, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile2', + kind: 'shape', + shape: 'rect', + fill: '#00a39a', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p11', + role: 'photo:3', + frame: { x: 1.5143, y: 0.0762, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile2', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + }, + { + id: 's12', + frame: { x: 1.0905, y: 0.5191, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile3', + kind: 'shape', + shape: 'rect', + fill: '#ed4981', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p13', + role: 'photo:4', + frame: { x: 1.0762, y: 0.5048, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile3', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + }, + { + id: 's14', + frame: { x: 1.5286, y: 0.5191, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile4', + kind: 'shape', + shape: 'rect', + fill: '#ffd23f', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p15', + role: 'photo:5', + frame: { x: 1.5143, y: 0.5048, w: 0.4095, h: 0.4 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'tile4', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + }, + { + id: 's16', + tint: { colors: ['accent'] }, + frame: { x: 1.8476, y: 0.4381, w: 0.1048, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ed4981'], + flipX: false, + }, + ], + }, + { + id: 'riso-print-scatter', + labelKey: 'studio.templates.name.risoPrintScatter', + kind: 'inner', + archetype: 'riso', + tags: ['riso', 'collage', 'band', 'halftone', 'seven-photos', 'doodles', 'lively'], + descr: + 'A pink band with a blue halftone across both pages, seven photos laid over it at slight angles on teal, blue and yellow plates off register, the title and date at the top left, the story at the foot of the right page.', + background: '#f4efe4', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: 0.381, w: 2.0286, h: 0.2381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#ed4981', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + tint: { fg: 'ink' }, + frame: { x: -0.0143, y: 0.381, w: 2.0286, h: 0.2381 }, + rotation: 0, + opacity: 0.25, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#23306b', + gradient: 'none', + paint: { type: 'pattern', pattern: 'dots', fg: '#23306b', bg: null, scale: 0.4, angle: 0 }, + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't3', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'bricolage', + size: 0.2, + weight: 800, + italic: false, + align: 'left', + leading: 0.88, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'bottom', + shadow: { dx: 0.0086, dy: 0.0067, color: '#ed4981', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2, + }, + { + id: 't4', + role: 'date', + frame: { x: 0.0762, y: 0.2571, w: 0.419, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0429, + weight: 700, + italic: false, + align: 'left', + leading: 1, + tracking: 0.38, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0429, + }, + { + id: 't5', + role: 'subtitle', + frame: { x: 0.5048, y: 0.2571, w: 0.419, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'montserrat', + size: 0.0381, + weight: 700, + italic: false, + align: 'right', + leading: 1, + tracking: 0.22, + color: '#23306b', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'p6', + role: 'photo:1', + tint: { shadow: 'accent3' }, + frame: { x: 0.0762, y: 0.3333, w: 0.4571, h: 0.5714 }, + rotation: -2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0143, dy: 0.0143, color: '#00a39a', alpha: 1 }, + }, + { + id: 'p7', + role: 'photo:2', + tint: { shadow: 'ink' }, + frame: { x: 0.5714, y: 0.419, w: 0.3524, h: 0.2667 }, + rotation: 3, + opacity: 1, + locked: false, + group: 'print', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0114, dy: 0.0114, color: '#23306b', alpha: 1 }, + }, + { + id: 's8', + tint: { colors: ['accent2'] }, + frame: { x: 0.8286, y: 0.3619, w: 0.1048, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'print', + kind: 'sticker', + stickerId: 'sparkles', + colors: ['#ffd23f'], + flipX: false, + }, + { + id: 'p9', + role: 'photo:3', + tint: { shadow: 'accent2' }, + frame: { x: 0.5714, y: 0.7238, w: 0.3524, h: 0.2 }, + rotation: -2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0114, dy: 0.0114, color: '#ffd23f', alpha: 1 }, + }, + { + id: 'p10', + role: 'photo:4', + tint: { shadow: 'accent2' }, + frame: { x: 1.0857, y: 0.0762, w: 0.381, h: 0.2857 }, + rotation: 2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0114, dy: 0.0114, color: '#ffd23f', alpha: 1 }, + }, + { + id: 'p11', + role: 'photo:5', + tint: { shadow: 'accent3' }, + frame: { x: 1.5048, y: 0.0762, w: 0.419, h: 0.4381 }, + rotation: -3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: -0.0143, dy: 0.0143, color: '#00a39a', alpha: 1 }, + }, + { + id: 'p12', + role: 'photo:6', + tint: { shadow: 'ink' }, + frame: { x: 1.0857, y: 0.4, w: 0.381, h: 0.3 }, + rotation: -2, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0114, dy: 0.0114, color: '#23306b', alpha: 1 }, + }, + { + id: 'p13', + role: 'photo:7', + tint: { shadow: 'accent3' }, + frame: { x: 1.5048, y: 0.5524, w: 0.419, h: 0.3333 }, + rotation: 3, + opacity: 1, + locked: false, + group: 'tile', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'contrast', + mask: null, + frameStyle: 'none', + shadow: { dx: 0.0143, dy: 0.0143, color: '#00a39a', alpha: 1 }, + }, + { + id: 's14', + tint: { colors: ['accent'] }, + frame: { x: 1.8381, y: 0.8286, w: 0.0952, h: 0.0857 }, + rotation: 10, + opacity: 1, + locked: false, + group: 'tile', + kind: 'sticker', + stickerId: 'doodleHeart', + colors: ['#ed4981'], + flipX: false, + }, + { + id: 't15', + role: 'body', + frame: { x: 1.0857, y: 0.7524, w: 0.381, h: 0.1714 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'inter', + size: 0.0381, + weight: 400, + italic: false, + align: 'left', + leading: 1.45, + tracking: 0, + color: '#23306b', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, +]; diff --git a/shared/src/book/templates/data/new-vintage-poster.data.ts b/shared/src/book/templates/data/new-vintage-poster.data.ts new file mode 100644 index 000000000..a3cbf21f3 --- /dev/null +++ b/shared/src/book/templates/data/new-vintage-poster.data.ts @@ -0,0 +1,2583 @@ +import type { BookDecoratedTemplate } from '../template-format'; + +/** + * The vintage travel poster pages, after the posters of the 1930s to the + * 1960s: flat layered landscapes (mountains, hills, sea, arches), a sun or a + * sunburst, an arched or stacked title in a slab face with a hard shadow, a + * script line, a thin ink frame on an aged paper. Drawn in retro-travel. + * + * Drawn on a 210 mm page and kept as fractions of it (template-format.ts), + * in the colours and faces of the theme named above; their links let any + * other theme recolour them. + */ +export const NEW_VINTAGE_POSTER: readonly BookDecoratedTemplate[] = [ + { + id: 'vintage-poster-panorama', + labelKey: 'studio.templates.name.vintagePosterPanorama', + kind: 'single', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'framed', 'mountains', 'sun-badge', 'one-photo', 'bold'], + descr: + 'An aged paper poster in a thin ink frame: a large warm photo, a teal peak and an orange range rising into its foot, gulls in its sky, a sunburst badge with the year, the title on the orange panel.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0029, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0524, y: 0.0524, w: 0.8952, h: 0.8952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0012, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.6286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.45, + radius: 0, + filter: 'warm', + mask: null, + frameStyle: 'none', + }, + { + id: 's4', + frame: { x: 0.5619, y: 0.5143, w: 0.3619, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'triangle', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: 0.0762, y: 0.5714, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'mountain', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's6', + frame: { x: 0.0762, y: 0.7, w: 0.8476, h: 0.2238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'shape', + shape: 'rect', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't7', + role: 'title', + on: 'accent', + tint: { shadow: 'ink' }, + frame: { x: 0.1048, y: 0.7238, w: 0.7905, h: 0.1238 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'alfa', + size: 0.2095, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2095, + }, + { + id: 't8', + role: 'subtitle', + on: 'accent', + frame: { x: 0.1048, y: 0.8476, w: 0.7905, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0667, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0667, + }, + { + id: 's9', + tint: { colors: ['paper', 'ink', 'accent3'] }, + frame: { x: 0.1238, y: 0.1333, w: 0.1286, h: 0.0702 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'birds', + kind: 'sticker', + stickerId: 'seagull', + colors: ['#f3e7cf', '#3b2a1e', '#f2b33d'], + flipX: false, + }, + { + id: 's10', + tint: { colors: ['paper', 'ink', 'accent3'] }, + frame: { x: 0.2571, y: 0.1905, w: 0.0857, h: 0.0468 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'birds', + kind: 'sticker', + stickerId: 'seagull', + colors: ['#f3e7cf', '#3b2a1e', '#f2b33d'], + flipX: false, + }, + { + id: 's11', + keep: true, + frame: { x: 0.6571, y: 0.0333, w: 0.2762, h: 0.2762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'sunburst-24', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's12', + keep: true, + frame: { x: 0.6952, y: 0.0714, w: 0.2, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'shape', + shape: 'ellipse', + fill: '#f2b33d', + gradient: 'none', + stroke: '#3b2a1e', + token: 'accent3', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't13', + role: 'date', + keep: true, + on: 'accent3', + frame: { x: 0.7095, y: 0.1381, w: 0.1714, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'badge', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0571, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.08, + color: '#3b2a1e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0571, + }, + ], + }, + { + id: 'vintage-poster-arch', + labelKey: 'studio.templates.name.vintagePosterArch', + kind: 'single', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'arched-title', 'arch-photo', 'sea', 'sunburst', 'calm'], + descr: + 'Mustard rays on aged paper behind an orange sun: a photo in an arch with a paper border, teal waves and a sailing boat at its foot, the title arched over the top, a script line and the year on the sea.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + keep: true, + frame: { x: 0.0476, y: 0.1143, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.45, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.181, y: 0.219, w: 0.6381, h: 0.6381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + tint: { border: 'paper' }, + frame: { x: 0.2381, y: 0.2667, w: 0.5238, h: 0.5524 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + }, + { + id: 's4', + frame: { x: -0.0143, y: 0.6952, w: 1.0286, h: 0.1429 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'wave', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: -0.0143, y: 0.7952, w: 1.0286, h: 0.2191 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's6', + tint: { colors: ['accent', 'paper', 'ink', 'accent2'] }, + frame: { x: 0.0857, y: 0.6286, w: 0.1333, h: 0.1481 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sailboat', + colors: ['#d56129', '#f3e7cf', '#3b2a1e', '#2f7f7a'], + flipX: false, + }, + { + id: 's7', + frame: { x: 0.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't8', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0857, y: 0.0619, w: 0.8286, h: 0.1762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'alfa', + size: 0.1524, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0.04, + color: '#3b2a1e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0057, dy: 0.0057, color: '#d56129', alpha: 1 }, + curve: { type: 'arc', bend: 35, start: 0 }, + fit: 'shrink', + fitMax: 0.1524, + }, + { + id: 't9', + role: 'subtitle', + on: 'accent2', + frame: { x: 0.1143, y: 0.8143, w: 0.7714, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0857, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 't10', + role: 'date', + on: 'accent2', + frame: { x: 0.2381, y: 0.8952, w: 0.5238, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#f3e7cf', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + ], + }, + { + id: 'vintage-poster-sun-disc', + labelKey: 'studio.templates.name.vintagePosterSunDisc', + kind: 'single', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'sunset', 'round-photo', 'hills', 'two-tone', 'warm'], + descr: + 'An orange sky with pale rays: a round photo in a mustard ring sets behind two teal hills and an ink ridge with pines, gulls beside it, the title, a script line and the year on the aged paper below.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0286, h: 0.7048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: -0.0476, y: -0.1905, w: 1.0952, h: 1.0952 }, + rotation: 0, + opacity: 0.25, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + keep: true, + tint: { border: 'accent3' }, + frame: { x: 0.2381, y: 0.0952, w: 0.5238, h: 0.5238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0167, color: '#f2b33d' }, + }, + { + id: 's4', + frame: { x: -0.0143, y: 0.4762, w: 0.6286, h: 0.2143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'half-circle', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: 0.381, y: 0.5143, w: 0.6333, h: 0.1762 }, + rotation: 0, + opacity: 0.8, + locked: false, + kind: 'shape', + shape: 'half-circle', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's6', + frame: { x: -0.0143, y: 0.5905, w: 1.0286, h: 0.1 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'mountain', + fill: '#3b2a1e', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's7', + tint: { colors: ['ink', 'ink'] }, + frame: { x: 0.7524, y: 0.5333, w: 0.1286, h: 0.1169 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'pines', + kind: 'sticker', + stickerId: 'pineTrees', + colors: ['#3b2a1e', '#3b2a1e'], + flipX: false, + }, + { + id: 's8', + tint: { colors: ['ink', 'ink'] }, + frame: { x: 0.8476, y: 0.5619, w: 0.0952, h: 0.0866 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'pines', + kind: 'sticker', + stickerId: 'pineTrees', + colors: ['#3b2a1e', '#3b2a1e'], + flipX: false, + }, + { + id: 's9', + tint: { colors: ['paper', 'ink', 'accent3'] }, + frame: { x: 0.0952, y: 0.1429, w: 0.1143, h: 0.0624 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'birds', + kind: 'sticker', + stickerId: 'seagull', + colors: ['#f3e7cf', '#3b2a1e', '#f2b33d'], + flipX: false, + }, + { + id: 's10', + tint: { colors: ['paper', 'ink', 'accent3'] }, + frame: { x: 0.0571, y: 0.2286, w: 0.0762, h: 0.0416 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'birds', + kind: 'sticker', + stickerId: 'seagull', + colors: ['#f3e7cf', '#3b2a1e', '#f2b33d'], + flipX: false, + }, + { + id: 's11', + frame: { x: 0.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't12', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.719, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'alfa', + size: 0.1714, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#3b2a1e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0057, dy: 0.0057, color: '#d56129', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't13', + role: 'subtitle', + frame: { x: 0.0952, y: 0.8429, w: 0.8095, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0762, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#d56129', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0762, + }, + { + id: 't14', + role: 'date', + frame: { x: 0.2381, y: 0.9095, w: 0.5238, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#3b2a1e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + ], + }, + { + id: 'vintage-poster-peaks', + labelKey: 'studio.templates.name.vintagePosterPeaks', + kind: 'single', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'type-led', 'stacked-title', 'mountains', 'stamp', 'bold'], + descr: + 'A type led poster: the year between two rules, a huge stacked slab title with an orange shadow and a script line over a sun, a teal range and a snow capped ink peak, a perforated photo stamp with a postmark.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0029, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + frame: { x: 0.0524, y: 0.0524, w: 0.8952, h: 0.8952 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0012, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'l3', + tint: { stroke: 'ink' }, + frame: { x: 0.1619, y: 0.0857, w: 0.1524, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#3b2a1e', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 't4', + role: 'date', + frame: { x: 0.3333, y: 0.0762, w: 0.3333, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.5, + color: '#3b2a1e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'l5', + tint: { stroke: 'ink' }, + frame: { x: 0.6857, y: 0.0857, w: 0.1524, h: 0.0143 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#3b2a1e', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'none', + }, + { + id: 's6', + keep: true, + frame: { x: 0.4619, y: 0.4619, w: 0.4762, h: 0.4762 }, + rotation: 0, + opacity: 0.6, + locked: false, + kind: 'shape', + shape: 'sunburst-12', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's7', + keep: true, + frame: { x: 0.5667, y: 0.5667, w: 0.2667, h: 0.2667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's8', + frame: { x: -0.0143, y: 0.5714, w: 1.0286, h: 0.3048 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'mountain', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's9', + frame: { x: 0.2, y: 0.6286, w: 0.5286, h: 0.3024 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'triangle', + fill: '#3b2a1e', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's10', + frame: { x: 0.4167, y: 0.6286, w: 0.0952, h: 0.0545 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'triangle', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's11', + frame: { x: -0.0143, y: 0.8571, w: 1.0286, h: 0.1571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#3b2a1e', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p12', + role: 'photo:1', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 0.1048, y: 0.6667, w: 0.2, h: 0.2476 }, + rotation: -4, + opacity: 1, + locked: false, + group: 'stamp', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0095, color: '#f3e7cf' }, + shadow: { dx: 0.0057, dy: 0.0057, color: '#3b2a1e', alpha: 0.25 }, + edge: 'perforated', + edgeSize: 0.0062, + }, + { + id: 's13', + tint: { colors: ['ink'] }, + frame: { x: 0.2286, y: 0.6476, w: 0.1714, h: 0.0997 }, + rotation: -10, + opacity: 0.85, + locked: false, + group: 'stamp', + kind: 'sticker', + stickerId: 'postmark', + colors: ['#3b2a1e'], + flipX: false, + }, + { + id: 't14', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.1333, w: 0.8476, h: 0.3333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'alfa', + size: 0.2857, + weight: 400, + italic: false, + align: 'center', + leading: 0.86, + tracking: 0, + color: '#3b2a1e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0076, dy: 0.0076, color: '#d56129', alpha: 1 }, + fit: 'shrink', + fitMax: 0.2857, + }, + { + id: 't15', + role: 'subtitle', + frame: { x: 0.0952, y: 0.4667, w: 0.8095, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.1048, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#d56129', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.1048, + }, + ], + }, + { + id: 'vintage-poster-story', + labelKey: 'studio.templates.name.vintagePosterStory', + kind: 'inner', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'story', 'arch-photo', 'sea', 'one-photo', 'calm'], + descr: + 'The left page an orange poster: pale rays, a photo in an arch with a paper border, teal waves with a sailing boat and the date; the right page in a thin frame, an arched title, a script line, a sun rule and a long story.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: -0.0143, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.0238, y: -0.0286, w: 0.9524, h: 0.9524 }, + rotation: 0, + opacity: 0.25, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + tint: { border: 'paper' }, + frame: { x: 0.1619, y: 0.1048, w: 0.6762, h: 0.6762 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + }, + { + id: 's4', + frame: { x: -0.0143, y: 0.7143, w: 1.0143, h: 0.1429 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'wave', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: -0.0143, y: 0.8143, w: 1.0143, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's6', + tint: { colors: ['accent', 'paper', 'ink', 'accent2'] }, + frame: { x: 0.7429, y: 0.6476, w: 0.1333, h: 0.1481 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sailboat', + colors: ['#d56129', '#f3e7cf', '#3b2a1e', '#2f7f7a'], + flipX: false, + }, + { + id: 's7', + tint: { colors: ['paper', 'ink', 'accent3'] }, + frame: { x: 0.0762, y: 0.1429, w: 0.1143, h: 0.0624 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'birds', + kind: 'sticker', + stickerId: 'seagull', + colors: ['#f3e7cf', '#3b2a1e', '#f2b33d'], + flipX: false, + }, + { + id: 's8', + tint: { colors: ['paper', 'ink', 'accent3'] }, + frame: { x: 0.0952, y: 0.2286, w: 0.0762, h: 0.0416 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'birds', + kind: 'sticker', + stickerId: 'seagull', + colors: ['#f3e7cf', '#3b2a1e', '#f2b33d'], + flipX: false, + }, + { + id: 't9', + role: 'date', + on: 'accent2', + frame: { x: 0.0762, y: 0.881, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#f3e7cf', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 's10', + frame: { x: 1.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't11', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 1.0762, y: 0.0762, w: 0.8476, h: 0.181 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'alfa', + size: 0.1524, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0.03, + color: '#3b2a1e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0057, dy: 0.0057, color: '#d56129', alpha: 1 }, + curve: { type: 'arc', bend: 22, start: 0 }, + fit: 'shrink', + fitMax: 0.1524, + }, + { + id: 't12', + role: 'subtitle', + frame: { x: 1.0952, y: 0.2571, w: 0.8095, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0857, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#d56129', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 'l13', + tint: { stroke: 'accent2' }, + frame: { x: 1.2381, y: 0.3476, w: 0.5238, h: 0.0286 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'line', + points: [ + { x: 0, y: 0.5 }, + { x: 1, y: 0.5 }, + ], + curve: 'straight', + stroke: '#2f7f7a', + strokeWidth: 0.0019, + dash: 'solid', + squiggle: 'none', + startCap: 'none', + endCap: 'none', + wobble: 0, + ornament: 'sun', + }, + { + id: 't14', + role: 'body', + frame: { x: 1.0952, y: 0.4095, w: 0.8095, h: 0.4571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0476, + weight: 400, + italic: false, + align: 'left', + leading: 1.6, + tracking: 0, + color: '#3b2a1e', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + { + id: 's15', + tint: { colors: ['accent2'] }, + frame: { x: 1.3667, y: 0.8857, w: 0.2667, h: 0.0571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sunDivider', + colors: ['#2f7f7a'], + flipX: false, + }, + ], + }, + { + id: 'vintage-poster-twin', + labelKey: 'studio.templates.name.vintagePosterTwin', + kind: 'inner', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'two-posters', 'mountains', 'arch-photo', 'two-photos', 'lively'], + descr: + 'Two posters side by side: on the left a warm photo over a teal peak and an orange range with the title on the orange panel; on the right a teal sky, a mustard sun behind an arch photo, waves, a script line, the date and the story.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + frame: { x: 0.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p2', + role: 'photo:1', + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.6381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.45, + radius: 0, + filter: 'warm', + mask: null, + frameStyle: 'none', + }, + { + id: 's3', + frame: { x: 0.5714, y: 0.5333, w: 0.3524, h: 0.1905 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'triangle', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 0.0762, y: 0.5905, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'mountain', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: 0.0762, y: 0.7143, w: 0.8476, h: 0.2095 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'band', + kind: 'shape', + shape: 'rect', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't6', + role: 'title', + on: 'accent', + tint: { shadow: 'ink' }, + frame: { x: 0.1048, y: 0.7429, w: 0.7905, h: 0.1524 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'band', + kind: 'text', + text: '', + font: 'alfa', + size: 0.1905, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1905, + }, + { + id: 's7', + frame: { x: 1, y: -0.0143, w: 1.0143, h: 1.0286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's8', + keep: true, + frame: { x: 1.0476, y: -0.0857, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.2, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's9', + keep: true, + frame: { x: 1.2143, y: 0.0762, w: 0.5714, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p10', + role: 'photo:2', + tint: { border: 'paper' }, + frame: { x: 1.2857, y: 0.1238, w: 0.4286, h: 0.5143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + }, + { + id: 's11', + frame: { x: 1, y: 0.5905, w: 1.0143, h: 0.1143 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'wave', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's12', + frame: { x: 1, y: 0.6667, w: 1.0143, h: 0.3476 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's13', + tint: { colors: ['accent', 'paper', 'ink', 'accent2'] }, + frame: { x: 1.0952, y: 0.5048, w: 0.1143, h: 0.127 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'sailboat', + colors: ['#d56129', '#f3e7cf', '#3b2a1e', '#2f7f7a'], + flipX: false, + }, + { + id: 's14', + frame: { x: 1.0381, y: 0.0381, w: 0.9238, h: 0.9238 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: null, + gradient: 'none', + stroke: '#3b2a1e', + strokeToken: 'ink', + strokeWidth: 0.0024, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't15', + role: 'subtitle', + frame: { x: 1.0952, y: 0.6952, w: 0.8095, h: 0.0762 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0857, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#d56129', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0857, + }, + { + id: 't16', + role: 'date', + frame: { x: 1.2381, y: 0.7762, w: 0.5238, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#3b2a1e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't17', + role: 'body', + frame: { x: 1.1429, y: 0.8286, w: 0.7143, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'foot', + kind: 'text', + text: '', + font: 'serif', + size: 0.0429, + weight: 400, + italic: false, + align: 'center', + leading: 1.6, + tracking: 0, + color: '#3b2a1e', + token: 'ink', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'vintage-poster-arcade', + labelKey: 'studio.templates.name.vintagePosterArcade', + kind: 'inner', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'arches', 'arched-title', 'mountains', 'three-photos', 'warm'], + descr: + 'On the left an arched slab title and a script line over mustard rays, an orange sun, a teal range and an ink ground with the date; on the right three tall arch photos standing on an orange block with a wave rule and the story.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + keep: true, + frame: { x: 0, y: 0.1429, w: 1, h: 1 }, + rotation: 0, + opacity: 0.45, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 0.2857, y: 0.4286, w: 0.4286, h: 0.4286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'ellipse', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's3', + frame: { x: -0.0143, y: 0.5905, w: 1.0143, h: 0.2857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'mountain', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's4', + frame: { x: 0.5238, y: 0.6762, w: 0.4762, h: 0.2 }, + rotation: 0, + opacity: 0.9, + locked: false, + kind: 'shape', + shape: 'triangle', + fill: '#3b2a1e', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's5', + frame: { x: -0.0143, y: 0.8571, w: 1.0143, h: 0.1571 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#3b2a1e', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't6', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.2 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'alfa', + size: 0.1714, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0.03, + color: '#3b2a1e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0057, dy: 0.0057, color: '#d56129', alpha: 1 }, + curve: { type: 'arc', bend: 30, start: 0 }, + fit: 'shrink', + fitMax: 0.1714, + }, + { + id: 't7', + role: 'subtitle', + frame: { x: 0.0952, y: 0.2762, w: 0.8095, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'title', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0952, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#d56129', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't8', + role: 'date', + on: 'ink', + frame: { x: 0.0762, y: 0.9, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#f3e7cf', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 's9', + frame: { x: 1, y: 0.4286, w: 1.0143, h: 0.5857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p10', + role: 'photo:1', + tint: { border: 'paper' }, + frame: { x: 1.0857, y: 0.1143, w: 0.2381, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'arcade', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch-tall', + frameStyle: 'none', + border: { width: 0.0105, color: '#f3e7cf' }, + }, + { + id: 'p11', + role: 'photo:2', + tint: { border: 'paper' }, + frame: { x: 1.381, y: 0.1143, w: 0.2381, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'arcade', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch-tall', + frameStyle: 'none', + border: { width: 0.0105, color: '#f3e7cf' }, + }, + { + id: 'p12', + role: 'photo:3', + tint: { border: 'paper' }, + frame: { x: 1.6762, y: 0.1143, w: 0.2381, h: 0.5714 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'arcade', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch-tall', + frameStyle: 'none', + border: { width: 0.0105, color: '#f3e7cf' }, + }, + { + id: 's13', + tint: { colors: ['paper'] }, + frame: { x: 1.381, y: 0.7143, w: 0.2381, h: 0.034 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'waveRule', + colors: ['#f3e7cf'], + flipX: false, + }, + { + id: 't14', + role: 'body', + on: 'accent', + frame: { x: 1.0857, y: 0.7714, w: 0.8286, h: 0.1619 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0429, + weight: 400, + italic: false, + align: 'center', + leading: 1.6, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'vintage-poster-panels', + labelKey: 'studio.templates.name.vintagePosterPanels', + kind: 'inner', + archetype: 'vintage-poster', + tags: ['vintage', 'poster', 'panels', 'mountains', 'landscape', 'four-photos', 'lively'], + descr: + 'Four photo panels in paper borders behind a teal range that runs across the fold, pines on the hills, an ink ground; the title top left, a script line and the date at the top right, the story on the ground.', + background: '#f3e7cf', + backgroundToken: 'paper', + elements: [ + { + id: 's1', + keep: true, + frame: { x: 0.0476, y: 0.0952, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.35, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 1.0476, y: 0.0952, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.35, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f2b33d', + gradient: 'none', + stroke: null, + token: 'accent3', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 0.0952, y: 0.2571, w: 0.381, h: 0.5048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'panels', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.25 }, + }, + { + id: 'p4', + role: 'photo:2', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 0.5238, y: 0.2571, w: 0.381, h: 0.5048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'panels', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.25 }, + }, + { + id: 'p5', + role: 'photo:3', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 1.0952, y: 0.2571, w: 0.381, h: 0.5048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'panels', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.25 }, + }, + { + id: 'p6', + role: 'photo:4', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 1.5238, y: 0.2571, w: 0.381, h: 0.5048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'panels', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: null, + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.25 }, + }, + { + id: 's7', + frame: { x: -0.0143, y: 0.6476, w: 2.0286, h: 0.2286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'mountain', + fill: '#2f7f7a', + gradient: 'none', + stroke: null, + token: 'accent2', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's8', + frame: { x: -0.0143, y: 0.8476, w: 2.0286, h: 0.1667 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'shape', + shape: 'rect', + fill: '#3b2a1e', + gradient: 'none', + stroke: null, + token: 'ink', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's9', + tint: { colors: ['ink', 'ink'] }, + frame: { x: 0.0571, y: 0.7238, w: 0.1429, h: 0.1299 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'pines', + kind: 'sticker', + stickerId: 'pineTrees', + colors: ['#3b2a1e', '#3b2a1e'], + flipX: false, + }, + { + id: 's10', + tint: { colors: ['ink', 'ink'] }, + frame: { x: 0.1714, y: 0.7619, w: 0.0952, h: 0.0866 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'pines', + kind: 'sticker', + stickerId: 'pineTrees', + colors: ['#3b2a1e', '#3b2a1e'], + flipX: false, + }, + { + id: 's11', + tint: { colors: ['ink', 'ink'] }, + frame: { x: 1.7714, y: 0.7238, w: 0.1429, h: 0.1299 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'pineTrees', + colors: ['#3b2a1e', '#3b2a1e'], + flipX: false, + }, + { + id: 't12', + role: 'title', + tint: { shadow: 'accent' }, + frame: { x: 0.0762, y: 0.0762, w: 0.8476, h: 0.1333 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'alfa', + size: 0.1429, + weight: 400, + italic: false, + align: 'left', + leading: 0.9, + tracking: 0, + color: '#3b2a1e', + token: 'ink', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0057, dy: 0.0057, color: '#d56129', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1429, + }, + { + id: 't13', + role: 'subtitle', + frame: { x: 1.0762, y: 0.0667, w: 0.8476, h: 0.0952 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0952, + weight: 400, + italic: false, + align: 'right', + leading: 1.1, + tracking: 0, + color: '#d56129', + token: 'accent', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0952, + }, + { + id: 't14', + role: 'date', + frame: { x: 1.0762, y: 0.1714, w: 0.8476, h: 0.0381 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'right', + leading: 1, + tracking: 0.45, + color: '#3b2a1e', + token: 'ink', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 't15', + role: 'body', + on: 'ink', + frame: { x: 1.0762, y: 0.8762, w: 0.8476, h: 0.0857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'text', + text: '', + font: 'serif', + size: 0.0429, + weight: 400, + italic: false, + align: 'left', + leading: 1.6, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'body', + binding: null, + overridden: false, + vAlign: 'top', + }, + ], + }, + { + id: 'vintage-poster-labels', + labelKey: 'studio.templates.name.vintagePosterLabels', + kind: 'inner', + archetype: 'vintage-poster', + tags: ['vintage', 'luggage-labels', 'collage', 'ribbon', 'stickers', 'six-photos', 'lively'], + descr: + 'Six photos as old hotel luggage labels on a teal spread with pale rays: a round, a shield, a chamfered, an octagon, an arch and a notched label in paper borders, the title on an orange ribbon, a script line, the date and a luggage tag.', + background: '#2f7f7a', + backgroundToken: 'accent2', + elements: [ + { + id: 's1', + keep: true, + frame: { x: 0.0476, y: 0.0476, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.15, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 's2', + keep: true, + frame: { x: 1.0476, y: 0.0476, w: 0.9048, h: 0.9048 }, + rotation: 0, + opacity: 0.15, + locked: false, + kind: 'shape', + shape: 'sunburst-24', + fill: '#f3e7cf', + gradient: 'none', + stroke: null, + token: 'paper', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 'p3', + role: 'photo:1', + keep: true, + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 0.0857, y: 0.1048, w: 0.4286, h: 0.4286 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'ellipse', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.3 }, + }, + { + id: 'p4', + role: 'photo:2', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 0.5714, y: 0.0857, w: 0.3333, h: 0.3714 }, + rotation: 4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'shield', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.3 }, + }, + { + id: 'p5', + role: 'photo:3', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 0.1714, y: 0.5905, w: 0.4571, h: 0.3238 }, + rotation: -3, + opacity: 1, + locked: false, + group: 'tagged', + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'frame-chamfer', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.3 }, + }, + { + id: 's6', + tint: { colors: ['paper', 'accent3', 'accent'] }, + frame: { x: 0.0476, y: 0.7905, w: 0.1524, h: 0.1524 }, + rotation: -12, + opacity: 1, + locked: false, + group: 'tagged', + kind: 'sticker', + stickerId: 'compassRose', + colors: ['#f3e7cf', '#f2b33d', '#d56129'], + flipX: false, + }, + { + id: 's7', + tint: { colors: ['accent', 'ink', 'accent3', 'paper'] }, + frame: { x: 0.6857, y: 0.6, w: 0.2286, h: 0.2059 }, + rotation: 6, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'suitcase', + colors: ['#d56129', '#3b2a1e', '#f2b33d', '#f3e7cf'], + flipX: false, + }, + { + id: 's8', + frame: { x: 1.119, y: 0.0476, w: 0.7619, h: 0.2059 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'ribbon', + kind: 'shape', + shape: 'ribbon-ends', + fill: '#d56129', + gradient: 'none', + stroke: null, + token: 'accent', + strokeWidth: 0, + strokeStyle: 'solid', + radius: 0, + }, + { + id: 't9', + role: 'title', + on: 'accent', + tint: { shadow: 'ink' }, + frame: { x: 1.2476, y: 0.0667, w: 0.5048, h: 0.1048 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'ribbon', + kind: 'text', + text: '', + font: 'alfa', + size: 0.1048, + weight: 400, + italic: false, + align: 'center', + leading: 0.9, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'display', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + shadow: { dx: 0.0048, dy: 0.0048, color: '#3b2a1e', alpha: 1 }, + fit: 'shrink', + fitMax: 0.1048, + }, + { + id: 't10', + role: 'subtitle', + on: 'accent2', + frame: { x: 1.0952, y: 0.2571, w: 0.8095, h: 0.0667 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'yellowtail', + size: 0.0762, + weight: 400, + italic: false, + align: 'center', + leading: 1.1, + tracking: 0, + color: '#f3e7cf', + token: 'paper', + fontRole: 'script', + binding: null, + overridden: false, + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0762, + }, + { + id: 't11', + role: 'date', + on: 'accent2', + frame: { x: 1.2381, y: 0.3286, w: 0.5238, h: 0.0333 }, + rotation: 0, + opacity: 1, + locked: false, + group: 'head', + kind: 'text', + text: '', + font: 'oswald', + size: 0.0381, + weight: 500, + italic: false, + align: 'center', + leading: 1, + tracking: 0.45, + color: '#f3e7cf', + token: 'paper', + fontRole: 'heading', + binding: null, + overridden: false, + transform: 'upper', + vAlign: 'middle', + fit: 'shrink', + fitMax: 0.0381, + }, + { + id: 'p12', + role: 'photo:4', + keep: true, + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 1.0857, y: 0.4048, w: 0.2857, h: 0.2857 }, + rotation: 0, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'octagon', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.3 }, + }, + { + id: 'p13', + role: 'photo:5', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 1.4286, y: 0.3905, w: 0.3333, h: 0.4286 }, + rotation: 3, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'arch', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.3 }, + }, + { + id: 'p14', + role: 'photo:6', + tint: { border: 'paper', shadow: 'ink' }, + frame: { x: 1.0857, y: 0.7238, w: 0.3238, h: 0.2 }, + rotation: -4, + opacity: 1, + locked: false, + kind: 'photo', + photoId: null, + fit: 'cover', + focalX: 0.5, + focalY: 0.5, + radius: 0, + filter: 'none', + mask: 'frame-notched', + frameStyle: 'none', + border: { width: 0.0143, color: '#f3e7cf' }, + shadow: { dx: 0.0067, dy: 0.0067, color: '#3b2a1e', alpha: 0.3 }, + }, + { + id: 's15', + tint: { colors: ['accent3', 'accent', 'paper'] }, + frame: { x: 1.7952, y: 0.5524, w: 0.1333, h: 0.1905 }, + rotation: 12, + opacity: 1, + locked: false, + kind: 'sticker', + stickerId: 'luggageTag', + colors: ['#f2b33d', '#d56129', '#f3e7cf'], + flipX: false, + }, + ], + }, +]; diff --git a/shared/src/book/templates/template-catalogue.spec.ts b/shared/src/book/templates/template-catalogue.spec.ts index 403f86526..8014d8f68 100644 --- a/shared/src/book/templates/template-catalogue.spec.ts +++ b/shared/src/book/templates/template-catalogue.spec.ts @@ -55,12 +55,12 @@ function box(el: BookElement) { const camel = (id: string) => id.replace(/-([a-z0-9])/g, (_, c: string) => c.toUpperCase()); describe('the decorated template set', () => { - it('TPLCAT-001: holds 21 covers, three in each archetype, and 16 double spreads', () => { - expect(covers).toHaveLength(21); - expect(spreads).toHaveLength(16); + it('TPLCAT-001: holds 48 covers and 60 double spreads, four covers and five spreads in each archetype', () => { + expect(covers).toHaveLength(48); + expect(spreads).toHaveLength(60); for (const archetype of BOOK_COVER_ARCHETYPES) { - expect(decoratedTemplatesFor('single', archetype), archetype).toHaveLength(3); - expect(decoratedTemplatesFor('inner', archetype).length, archetype).toBeGreaterThanOrEqual(1); + expect(decoratedTemplatesFor('single', archetype), archetype).toHaveLength(4); + expect(decoratedTemplatesFor('inner', archetype), archetype).toHaveLength(5); } }); @@ -190,7 +190,7 @@ describe('finding the templates', () => { expect(findDecoratedTemplate('no-such-template')).toBeUndefined(); expect(decoratedTemplatesFor('single').every((t) => t.kind === 'single')).toBe(true); expect(decoratedTemplatesFor('inner', 'postcard').every((t) => t.archetype === 'postcard')).toBe(true); - expect(decoratedTemplatesFor('single', null)).toHaveLength(21); + expect(decoratedTemplatesFor('single', null)).toHaveLength(48); expect(isBookTemplateId('grid-badge-circle')).toBe(true); expect(isBookTemplateId('two-up')).toBe(true); expect(isBookTemplateId('cover-full')).toBe(true); @@ -203,10 +203,10 @@ describe('finding the templates', () => { expect(row.roles).toEqual(['title', 'date', 'body']); expect(row.tags).toContain('word-art'); const all = listBookLayouts(null, square); - expect(all.decorated.single).toHaveLength(21); - expect(all.decorated.inner).toHaveLength(16); + expect(all.decorated.single).toHaveLength(48); + expect(all.decorated.inner).toHaveLength(60); expect(all.notes.decorated).toMatch(/whole designed page/); const inner = listBookLayouts(null, square, 'inner'); - expect([inner.decorated.single, inner.decorated.inner.length]).toEqual([[], 16]); + expect([inner.decorated.single, inner.decorated.inner.length]).toEqual([[], 60]); }); }); diff --git a/shared/src/book/templates/template-catalogue.ts b/shared/src/book/templates/template-catalogue.ts index 6ba2c4d27..e64e065e1 100644 --- a/shared/src/book/templates/template-catalogue.ts +++ b/shared/src/book/templates/template-catalogue.ts @@ -12,6 +12,18 @@ import { INNER_COLLAGE } from './data/inner-collage.data'; import { INNER_EPHEMERA } from './data/inner-ephemera.data'; import { INNER_GRIDS } from './data/inner-grids.data'; import { INNER_STORY } from './data/inner-story.data'; +import { MORE_CUTOUT } from './data/more-cutout.data'; +import { MORE_GRID_BADGE } from './data/more-grid-badge.data'; +import { MORE_MINIMAL_SERIF } from './data/more-minimal-serif.data'; +import { MORE_POSTCARD } from './data/more-postcard.data'; +import { MORE_POSTER_POP } from './data/more-poster-pop.data'; +import { MORE_SPINE_BAND } from './data/more-spine-band.data'; +import { MORE_STAMP_COLLAGE } from './data/more-stamp-collage.data'; +import { NEW_EDITORIAL } from './data/new-editorial.data'; +import { NEW_FIELD_NOTES } from './data/new-field-notes.data'; +import { NEW_NIGHT_FILM } from './data/new-night-film.data'; +import { NEW_RISO } from './data/new-riso.data'; +import { NEW_VINTAGE_POSTER } from './data/new-vintage-poster.data'; import { templatePhotoSlots, templateRoles, @@ -19,26 +31,56 @@ import { type BookTemplateKind, } from './template-format'; +/** The covers or the spreads of a data file that holds both. */ +function ofKind(set: readonly BookDecoratedTemplate[], kind: BookTemplateKind): BookDecoratedTemplate[] { + return set.filter((t) => t.kind === kind); +} + /** * The decorated templates the Studio offers and the assistant lays pages - * on: 21 covers, three in each of the seven archetypes, and 16 double - * spreads, each set in the manner of one of them. The data files hold them - * as drawn (template-format.ts); this is the one list the Studio's panel, - * the page operations and `list_book_layouts` read. + * on: 48 covers, four in each of the twelve archetypes, and 60 double + * spreads, five in the manner of each. The data files hold them as drawn + * (template-format.ts); this is the one list the Studio's panel, the page + * operations and `list_book_layouts` read. Its order is the panel's: the + * covers archetype by archetype, then the spreads. */ export const BOOK_DECORATED_TEMPLATES: readonly BookDecoratedTemplate[] = [ ...COVERS_SPINE_BAND, + ...ofKind(MORE_SPINE_BAND, 'single'), ...COVERS_POSTER_POP, + ...ofKind(MORE_POSTER_POP, 'single'), ...COVERS_CUTOUT, + ...ofKind(MORE_CUTOUT, 'single'), ...COVERS_POSTCARD, + ...ofKind(MORE_POSTCARD, 'single'), ...COVERS_GRID_BADGE, + ...ofKind(MORE_GRID_BADGE, 'single'), ...COVERS_MINIMAL_SERIF, + ...ofKind(MORE_MINIMAL_SERIF, 'single'), ...COVERS_STAMP_COLLAGE, + ...ofKind(MORE_STAMP_COLLAGE, 'single'), + ...ofKind(NEW_RISO, 'single'), + ...ofKind(NEW_EDITORIAL, 'single'), + ...ofKind(NEW_VINTAGE_POSTER, 'single'), + ...ofKind(NEW_NIGHT_FILM, 'single'), + ...ofKind(NEW_FIELD_NOTES, 'single'), ...INNER_STORY, ...INNER_CHAPTERS, ...INNER_COLLAGE, ...INNER_EPHEMERA, ...INNER_GRIDS, + ...ofKind(MORE_SPINE_BAND, 'inner'), + ...ofKind(MORE_POSTER_POP, 'inner'), + ...ofKind(MORE_CUTOUT, 'inner'), + ...ofKind(MORE_POSTCARD, 'inner'), + ...ofKind(MORE_GRID_BADGE, 'inner'), + ...ofKind(MORE_MINIMAL_SERIF, 'inner'), + ...ofKind(MORE_STAMP_COLLAGE, 'inner'), + ...ofKind(NEW_RISO, 'inner'), + ...ofKind(NEW_EDITORIAL, 'inner'), + ...ofKind(NEW_VINTAGE_POSTER, 'inner'), + ...ofKind(NEW_NIGHT_FILM, 'inner'), + ...ofKind(NEW_FIELD_NOTES, 'inner'), ]; const BY_ID = new Map(BOOK_DECORATED_TEMPLATES.map((t) => [t.id, t])); diff --git a/shared/src/book/theme/book-theme.schema.ts b/shared/src/book/theme/book-theme.schema.ts index ada86285a..010ef2473 100644 --- a/shared/src/book/theme/book-theme.schema.ts +++ b/shared/src/book/theme/book-theme.schema.ts @@ -53,6 +53,11 @@ export const BOOK_THEME_IDS = [ 'nordic', 'alpine', 'india-stamp', + 'riso', + 'magazine', + 'retro-travel', + 'midnight', + 'field-notes', ] as const; export type BookThemeId = (typeof BOOK_THEME_IDS)[number]; diff --git a/shared/src/book/theme/book-theme.spec.ts b/shared/src/book/theme/book-theme.spec.ts index 1b967e649..32de821d6 100644 --- a/shared/src/book/theme/book-theme.spec.ts +++ b/shared/src/book/theme/book-theme.spec.ts @@ -27,9 +27,9 @@ import { describe, expect, it } from 'vitest'; // BKTHEME-001 to BKTHEME-010 describe('the built-in themes', () => { - it('BKTHEME-001: are twelve, one per id, in the order of the ids', () => { + it('BKTHEME-001: are seventeen, one per id, in the order of the ids', () => { expect(BOOK_THEME_PRESETS.map((p) => p.id)).toEqual([...BOOK_THEME_IDS]); - expect(BOOK_THEME_IDS).toHaveLength(12); + expect(BOOK_THEME_IDS).toHaveLength(17); for (const id of BOOK_THEME_IDS) expect(bookThemeOf(id).id).toBe(id); expect(bookThemePreset('nope')).toBeUndefined(); expect(() => bookThemeOf('nope' as never)).toThrow(); diff --git a/shared/src/book/theme/book-themes.data.ts b/shared/src/book/theme/book-themes.data.ts index f61e16840..dfd79faea 100644 --- a/shared/src/book/theme/book-themes.data.ts +++ b/shared/src/book/theme/book-themes.data.ts @@ -8,7 +8,7 @@ import type { } from './book-theme.schema'; /** - * The twelve built-in themes, each a look of its own rather than a recolour: + * The seventeen built-in themes, each a look of its own rather than a recolour: * a paper and an ink that read together, three accents that belong to the * same place, a display face for the cover, a heading and a body face that * pair, a script for the words laid over a photo, and the motifs that suit. @@ -253,4 +253,90 @@ export const BOOK_THEME_PRESETS: readonly BookThemePreset[] = [ frameStyle: 'white', tilt: 2, }, + { + id: 'riso', + labelKey: 'studio.theme.name.riso', + descrKey: 'studio.theme.descr.riso', + descr: 'Riso print: cream paper, riso blue, fluo pink, yellow and teal inks overprinted, a bold grotesque.', + palette: { paper: '#f4efe4', ink: '#23306b', accent: '#ed4981', accent2: '#ffd23f', accent3: '#00a39a' }, + fonts: { + display: { font: 'bricolage', weight: 800 }, + heading: { font: 'montserrat', weight: 700 }, + body: { font: 'inter' }, + script: { font: 'marker', weight: 400 }, + }, + motifs: ['doodles', 'paper'], + decoration: 'rich', + frameStyle: 'none', + tilt: 2, + }, + { + id: 'magazine', + labelKey: 'studio.theme.name.magazine', + descrKey: 'studio.theme.descr.magazine', + descr: 'Travel magazine: off white paper, black ink, one signal red, a huge Bodoni masthead over Garamond.', + palette: { paper: '#f7f4ee', ink: '#111111', accent: '#d7261e', accent2: '#e9e2d6', accent3: '#6b6b6b' }, + fonts: { + display: { font: 'bodoni', weight: 800 }, + heading: { font: 'montserrat', weight: 600 }, + body: { font: 'garamond' }, + script: null, + }, + motifs: ['ornaments'], + decoration: 'light', + frameStyle: 'none', + tilt: 0, + }, + { + id: 'retro-travel', + labelKey: 'studio.theme.name.retroTravel', + descrKey: 'studio.theme.descr.retroTravel', + descr: + 'Retro travel poster: aged cream paper, brown ink, orange, teal and mustard, a slab title over condensed caps.', + palette: { paper: '#f3e7cf', ink: '#3b2a1e', accent: '#d56129', accent2: '#2f7f7a', accent3: '#f2b33d' }, + fonts: { + display: { font: 'alfa', weight: 400 }, + heading: { font: 'oswald', weight: 500 }, + body: { font: 'serif' }, + script: { font: 'yellowtail', weight: 400 }, + }, + motifs: ['mountains', 'mediterranean', 'landmarks'], + decoration: 'rich', + frameStyle: 'white', + tilt: 0, + }, + { + id: 'midnight', + labelKey: 'studio.theme.name.midnight', + descrKey: 'studio.theme.descr.midnight', + descr: 'Midnight film: near black paper, warm white ink, neon orange and cyan, tall condensed capitals.', + palette: { paper: '#121417', ink: '#f2efe8', accent: '#ff6b3d', accent2: '#39d0c4', accent3: '#8a8f98' }, + fonts: { + display: { font: 'league', weight: 400 }, + heading: { font: 'oswald', weight: 500 }, + body: { font: 'inter' }, + script: { font: 'satisfy', weight: 400 }, + }, + motifs: ['doodles'], + decoration: 'light', + frameStyle: 'none', + tilt: 0, + }, + { + id: 'field-notes', + labelKey: 'studio.theme.name.fieldNotes', + descrKey: 'studio.theme.descr.fieldNotes', + descr: 'Field notes: kraft paper, moss green ink, rust and sage, a soft serif title, handwriting, tape and leaves.', + palette: { paper: '#e9dcc3', ink: '#2f3a2b', accent: '#b5532c', accent2: '#f8f2e4', accent3: '#6f8a5a' }, + fonts: { + display: { font: 'fraunces', weight: 700 }, + heading: { font: 'montserrat', weight: 600 }, + body: { font: 'serif' }, + script: { font: 'caveat', weight: 400 }, + }, + motifs: ['paper', 'mountains', 'nordic'], + decoration: 'rich', + frameStyle: 'polaroid', + tilt: 3, + }, ]; diff --git a/shared/src/i18n/ar/studioTemplates.ts b/shared/src/i18n/ar/studioTemplates.ts index 7fe7e2c58..48c674bdf 100644 --- a/shared/src/i18n/ar/studioTemplates.ts +++ b/shared/src/i18n/ar/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'شبكة وشارة', 'studio.templates.archetype.minimal-serif': 'بسيط', 'studio.templates.archetype.stamp-collage': 'طوابع', + 'studio.templates.archetype.riso': 'ريزو', + 'studio.templates.archetype.editorial': 'مجلة', + 'studio.templates.archetype.vintage-poster': 'ملصق قديم', + 'studio.templates.archetype.night-film': 'فيلم ليلي', + 'studio.templates.archetype.field-notes': 'ملاحظات ميدانية', 'studio.templates.name.spineBandStitched': 'شريط مخيط', 'studio.templates.name.spineBandGingham': 'شريط مربعات', 'studio.templates.name.spineBandScript': 'شريط وخط يدوي', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'شبكة بصورة رئيسية', 'studio.templates.name.gridColumns': 'شبكة أعمدة', 'studio.templates.name.gridMosaic': 'شبكة فسيفساء', + 'studio.templates.name.spineBandPlate': 'لوحة ملصقة', + 'studio.templates.name.posterPopSunDisc': 'قرص الشمس', + 'studio.templates.name.cutoutCircle': 'دائرة مقصوصة', + 'studio.templates.name.postcardGreetings': 'بطاقة تحية بريدية', + 'studio.templates.name.gridBadgeTiles': 'شبكة شارات', + 'studio.templates.name.minimalSerifCameo': 'نقش بيضاوي', + 'studio.templates.name.stampCollageAirmail': 'ظرف بريد جوي', + 'studio.templates.name.risoOverprint': 'ملصق بطباعة متراكبة', + 'studio.templates.name.risoHalftoneSun': 'شمس نقطية', + 'studio.templates.name.risoZineStack': 'كومة مجلات صغيرة', + 'studio.templates.name.risoPinkPress': 'طباعة وردية', + 'studio.templates.name.editorialMasthead': 'غلاف بترويسة', + 'studio.templates.name.editorialCoverStory': 'قصة الغلاف', + 'studio.templates.name.editorialSplit': 'صورة فوق العنوان', + 'studio.templates.name.editorialHeadline': 'غلاف بعنوان عريض', + 'studio.templates.name.vintagePosterPanorama': 'بانوراما ملصق', + 'studio.templates.name.vintagePosterArch': 'قوس وبحر', + 'studio.templates.name.vintagePosterSunDisc': 'شمس فوق التلال', + 'studio.templates.name.vintagePosterPeaks': 'قمم متراصة', + 'studio.templates.name.nightFilmLetterbox': 'غلاف بشاشة عريضة', + 'studio.templates.name.nightFilmStrip': 'غلاف بشريط فيلم', + 'studio.templates.name.nightFilmTitleCard': 'بطاقة العنوان', + 'studio.templates.name.nightFilmFadeOut': 'تلاشٍ إلى السواد', + 'studio.templates.name.fieldNotesTorn': 'ورقة دفتر ممزقة', + 'studio.templates.name.fieldNotesPolaroid': 'بولارويد بشريط لاصق', + 'studio.templates.name.fieldNotesSpecimens': 'عينات بشريط لاصق', + 'studio.templates.name.fieldNotesLabel': 'ملصق الدفتر', + 'studio.templates.name.spineBandClothStory': 'قصة على القماش', + 'studio.templates.name.spineBandGinghamTrio': 'ثلاثية بكعب مربعات', + 'studio.templates.name.spineBandAlbum': 'ألبوم مجلد', + 'studio.templates.name.posterPopHeadline': 'عنوان ملصق', + 'studio.templates.name.posterPopPostcards': 'صور مائلة', + 'studio.templates.name.posterPopPhotoWall': 'جدار صور', + 'studio.templates.name.cutoutStoryPage': 'قصة مقصوصة', + 'studio.templates.name.cutoutTrio': 'ثلاثية مقصوصة', + 'studio.templates.name.cutoutScatter': 'صور متناثرة', + 'studio.templates.name.cutoutMosaic': 'فسيفساء مقصوصة', + 'studio.templates.name.postcardAirmail': 'رسالة بريد جوي', + 'studio.templates.name.postcardRack': 'حامل بطاقات بريدية', + 'studio.templates.name.gridBadgeLetter': 'ختم وقصة', + 'studio.templates.name.gridBadgeHeroSix': 'صورة رئيسية وست', + 'studio.templates.name.minimalSerifEssay': 'مقالة هادئة', + 'studio.templates.name.minimalSerifTriptych': 'ثلاث لوحات', + 'studio.templates.name.stampCollageLetter': 'رسالة مختومة', + 'studio.templates.name.stampCollageArchStamps': 'قوس وطوابع', + 'studio.templates.name.stampCollageSheet': 'ورقة طوابع', + 'studio.templates.name.risoStoryPlate': 'قصة ولوحة', + 'studio.templates.name.risoOffsetPair': 'زوج مزاح', + 'studio.templates.name.risoBlobTrio': 'ثلاثية بقع', + 'studio.templates.name.risoZineGrid': 'شبكة مجلة صغيرة', + 'studio.templates.name.risoPrintScatter': 'طبعات منثورة', + 'studio.templates.name.editorialFeatureOpener': 'افتتاحية تحقيق', + 'studio.templates.name.editorialPullQuote': 'اقتباس بارز', + 'studio.templates.name.editorialFeatureColumns': 'تحقيق في أعمدة', + 'studio.templates.name.editorialPortfolio': 'صفحتا معرض أعمال', + 'studio.templates.name.editorialContactSheet': 'ورقة تلامس', + 'studio.templates.name.vintagePosterStory': 'ملصق وقصة', + 'studio.templates.name.vintagePosterTwin': 'ملصقان توأمان', + 'studio.templates.name.vintagePosterArcade': 'رواق أقواس', + 'studio.templates.name.vintagePosterPanels': 'ألواح وتلال', + 'studio.templates.name.vintagePosterLabels': 'بطاقات أمتعة', + 'studio.templates.name.nightFilmOpening': 'المشهد الافتتاحي', + 'studio.templates.name.nightFilmSubtitles': 'ترجمة الفيلم', + 'studio.templates.name.nightFilmReels': 'تلاشٍ وبكرات', + 'studio.templates.name.nightFilmContact': 'ورقة تلامس الفيلم', + 'studio.templates.name.nightFilmDoubleReel': 'بكرة مزدوجة', + 'studio.templates.name.fieldNotesDiary': 'صفحة يوميات', + 'studio.templates.name.fieldNotesTrail': 'درب بطاقات ملاحظات', + 'studio.templates.name.fieldNotesRoute': 'مسار وصور بولارويد', + 'studio.templates.name.fieldNotesContact': 'ورقة تلامس مرقمة', + 'studio.templates.name.fieldNotesHerbarium': 'أوراق معشبة', }; export default studioTemplates; diff --git a/shared/src/i18n/ar/studioThemes.ts b/shared/src/i18n/ar/studioThemes.ts index fd042288c..4889d61e6 100644 --- a/shared/src/i18n/ar/studioThemes.ts +++ b/shared/src/i18n/ar/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'شمالي', 'studio.theme.name.alpine': 'جبال الألب', 'studio.theme.name.indiaStamp': 'مجموعة طوابع', + 'studio.theme.name.riso': 'طباعة ريزو', + 'studio.theme.name.magazine': 'مجلة', + 'studio.theme.name.retroTravel': 'سفر قديم الطراز', + 'studio.theme.name.midnight': 'منتصف الليل', + 'studio.theme.name.fieldNotes': 'ملاحظات ميدانية', 'studio.theme.descr.posterPop': 'ورق كريمي ومرجاني ودوّار الشمس وعناوين ملصقات عريضة', 'studio.theme.descr.cutout': 'ورق كوبالتي وأشكال بلون المرجان والرمل وكتابة بيضاء', 'studio.theme.descr.postcard': 'ورق بلون النعناع وحبر كحلي وأحمر الختم وعنوان فرعي بخط اليد', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'ورق رمادي فاتح مع لون الأردواز والمغرة والوردي', 'studio.theme.descr.alpine': 'أبيض ثلجي مع أخضر الغابات ولون الصدأ وأزرق السماء', 'studio.theme.descr.indiaStamp': 'ورق دافئ مع الأرجواني والزعفراني والأزرق المخضر', + 'studio.theme.descr.riso': 'ورق كريمي وأزرق ريزو ووردي فسفوري مطبوعان فوق بعضهما', + 'studio.theme.descr.magazine': 'ورق أبيض مائل للصفرة وحبر أسود ولون أحمر وترويسة كبيرة', + 'studio.theme.descr.retroTravel': 'ورق كريمي معتق بالبرتقالي والأخضر المزرق والخردلي', + 'studio.theme.descr.midnight': 'ورق شبه أسود ونص أبيض دافئ ولمسات نيون', + 'studio.theme.descr.fieldNotes': 'ورق كرافت وأخضر طحلبي وصدئ وخط يد وشريط لاصق', 'studio.theme.panel': 'السمة', 'studio.theme.intro': 'اختر مظهرًا للكتاب كله. الألوان والخطوط التي تتبع السمة تتغير معها، وكل ما عداها يبقى كما هو.', 'studio.theme.themes': 'السمات', diff --git a/shared/src/i18n/az/studioTemplates.ts b/shared/src/i18n/az/studioTemplates.ts index b66fc97b8..1f76d7079 100644 --- a/shared/src/i18n/az/studioTemplates.ts +++ b/shared/src/i18n/az/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Şəbəkə və nişan', 'studio.templates.archetype.minimal-serif': 'Minimal', // same-as-en 'studio.templates.archetype.stamp-collage': 'Markalar', + 'studio.templates.archetype.riso': 'Rizo', + 'studio.templates.archetype.editorial': 'Jurnal', + 'studio.templates.archetype.vintage-poster': 'Retro afişa', + 'studio.templates.archetype.night-film': 'Gecə filmi', + 'studio.templates.archetype.field-notes': 'Səyahət qeydləri', 'studio.templates.name.spineBandStitched': 'Tikişli zolaq', 'studio.templates.name.spineBandGingham': 'Damalı zolaq', 'studio.templates.name.spineBandScript': 'Zolaq və əl yazısı', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Əsas fotolu şəbəkə', 'studio.templates.name.gridColumns': 'Sütunlu şəbəkə', 'studio.templates.name.gridMosaic': 'Mozaika şəbəkəsi', + 'studio.templates.name.spineBandPlate': 'Yapışdırılmış lövhə', + 'studio.templates.name.posterPopSunDisc': 'Günəş diski', + 'studio.templates.name.cutoutCircle': 'Kəsilmiş dairə', + 'studio.templates.name.postcardGreetings': 'Salam açıqcası', + 'studio.templates.name.gridBadgeTiles': 'Nişan şəbəkəsi', + 'studio.templates.name.minimalSerifCameo': 'Oval kameya', + 'studio.templates.name.stampCollageAirmail': 'Hava poçtu zərfi', + 'studio.templates.name.risoOverprint': 'Üst-üstə çap plakatı', + 'studio.templates.name.risoHalftoneSun': 'Rastrlı günəş', + 'studio.templates.name.risoZineStack': 'Zin yığını', + 'studio.templates.name.risoPinkPress': 'Çəhrayı çap', + 'studio.templates.name.editorialMasthead': 'Başlıqlı üz qabığı', + 'studio.templates.name.editorialCoverStory': 'Üz qabığı hekayəsi', + 'studio.templates.name.editorialSplit': 'Başlıq üzərində foto', + 'studio.templates.name.editorialHeadline': 'Manşetli üz qabığı', + 'studio.templates.name.vintagePosterPanorama': 'Plakat panoraması', + 'studio.templates.name.vintagePosterArch': 'Tağ və dəniz', + 'studio.templates.name.vintagePosterSunDisc': 'Təpələr üzərində günəş', + 'studio.templates.name.vintagePosterPeaks': 'Pilləli zirvələr', + 'studio.templates.name.nightFilmLetterbox': 'Geniş ekranlı üz qabığı', + 'studio.templates.name.nightFilmStrip': 'Kino lentli üz qabığı', + 'studio.templates.name.nightFilmTitleCard': 'Başlıq kartı', + 'studio.templates.name.nightFilmFadeOut': 'Qaranlığa keçid', + 'studio.templates.name.fieldNotesTorn': 'Cırılmış dəftər vərəqi', + 'studio.templates.name.fieldNotesPolaroid': 'Lentlə yapışdırılmış polaroid', + 'studio.templates.name.fieldNotesSpecimens': 'Lentlə yapışdırılmış nümunələr', + 'studio.templates.name.fieldNotesLabel': 'Dəftər etiketi', + 'studio.templates.name.spineBandClothStory': 'Parça üzərində hekayə', + 'studio.templates.name.spineBandGinghamTrio': 'Damalı cildli üçlük', + 'studio.templates.name.spineBandAlbum': 'Cildlənmiş albom', + 'studio.templates.name.posterPopHeadline': 'Plakat manşeti', + 'studio.templates.name.posterPopPostcards': 'Əyilmiş fotolar', + 'studio.templates.name.posterPopPhotoWall': 'Foto divarı', + 'studio.templates.name.cutoutStoryPage': 'Kəsilmiş hekayə', + 'studio.templates.name.cutoutTrio': 'Kəsilmiş üçlük', + 'studio.templates.name.cutoutScatter': 'Səpələnmiş fotolar', + 'studio.templates.name.cutoutMosaic': 'Kəsilmiş mozaika', + 'studio.templates.name.postcardAirmail': 'Hava poçtu məktubu', + 'studio.templates.name.postcardRack': 'Açıqca rəfi', + 'studio.templates.name.gridBadgeLetter': 'Möhür və hekayə', + 'studio.templates.name.gridBadgeHeroSix': 'Əsas foto və altı', + 'studio.templates.name.minimalSerifEssay': 'Sakit esse', + 'studio.templates.name.minimalSerifTriptych': 'Üç lövhə', + 'studio.templates.name.stampCollageLetter': 'Möhürlənmiş məktub', + 'studio.templates.name.stampCollageArchStamps': 'Tağ və markalar', + 'studio.templates.name.stampCollageSheet': 'Marka vərəqi', + 'studio.templates.name.risoStoryPlate': 'Hekayə və lövhə', + 'studio.templates.name.risoOffsetPair': 'Sürüşmüş cüt', + 'studio.templates.name.risoBlobTrio': 'Ləkə üçlüyü', + 'studio.templates.name.risoZineGrid': 'Zin şəbəkəsi', + 'studio.templates.name.risoPrintScatter': 'Dağınıq çaplar', + 'studio.templates.name.editorialFeatureOpener': 'Reportaj girişi', + 'studio.templates.name.editorialPullQuote': 'Seçilmiş sitat', + 'studio.templates.name.editorialFeatureColumns': 'Sütunlarda reportaj', + 'studio.templates.name.editorialPortfolio': 'Portfolio səhifə cütü', + 'studio.templates.name.editorialContactSheet': 'Kontakt vərəqi', + 'studio.templates.name.vintagePosterStory': 'Plakat və hekayə', + 'studio.templates.name.vintagePosterTwin': 'Əkiz plakatlar', + 'studio.templates.name.vintagePosterArcade': 'Tağlı qalereya', + 'studio.templates.name.vintagePosterPanels': 'Panellər və təpələr', + 'studio.templates.name.vintagePosterLabels': 'Baqaj etiketləri', + 'studio.templates.name.nightFilmOpening': 'Açılış səhnəsi', + 'studio.templates.name.nightFilmSubtitles': 'Film altyazıları', + 'studio.templates.name.nightFilmReels': 'Keçid və çarxlar', + 'studio.templates.name.nightFilmContact': 'Film kontakt vərəqi', + 'studio.templates.name.nightFilmDoubleReel': 'İkiqat çarx', + 'studio.templates.name.fieldNotesDiary': 'Gündəlik səhifəsi', + 'studio.templates.name.fieldNotesTrail': 'Qeyd kartları izi', + 'studio.templates.name.fieldNotesRoute': 'Marşrut və polaroidlər', + 'studio.templates.name.fieldNotesContact': 'Nömrəli kontakt vərəqi', + 'studio.templates.name.fieldNotesHerbarium': 'Herbari vərəqləri', }; export default studioTemplates; diff --git a/shared/src/i18n/az/studioThemes.ts b/shared/src/i18n/az/studioThemes.ts index 01d9a2e1a..a7c1d2e27 100644 --- a/shared/src/i18n/az/studioThemes.ts +++ b/shared/src/i18n/az/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Şimal', 'studio.theme.name.alpine': 'Alp', 'studio.theme.name.indiaStamp': 'Marka kollajı', + 'studio.theme.name.riso': 'Riso çapı', + 'studio.theme.name.magazine': 'Jurnal', + 'studio.theme.name.retroTravel': 'Retro səyahət', + 'studio.theme.name.midnight': 'Gecəyarısı', + 'studio.theme.name.fieldNotes': 'Səyahət qeydləri', 'studio.theme.descr.posterPop': 'Krem kağız, mərcan və günəbaxan, qalın afişa başlıqları', 'studio.theme.descr.cutout': 'Kobalt kağız, mərcan və qum rəngli fiqurlar, ağ yazı', 'studio.theme.descr.postcard': 'Nanə rəngli kağız, tünd göy mürəkkəb, möhür qırmızısı və əl yazısı ilə alt başlıq', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Şifer, oxra və çəhrayı ilə açıq boz kağız', 'studio.theme.descr.alpine': 'Meşə yaşılı, pas və səma mavisi ilə qar ağı', 'studio.theme.descr.indiaStamp': 'Bənövşəyi, zəfəran və firuzəyi ilə isti kağız', + 'studio.theme.descr.riso': 'Krem kağız, riso mavisi və neon çəhrayı üst üstə', + 'studio.theme.descr.magazine': 'Süd ağı kağız, qara mürəkkəb, bir qırmızı və böyük başlıq', + 'studio.theme.descr.retroTravel': 'Köhnəlmiş krem kağız, narıncı, firuzəyi və xardal', + 'studio.theme.descr.midnight': 'Demək olar ki qara kağız, isti ağ yazı və neon vurğular', + 'studio.theme.descr.fieldNotes': 'Kraft kağız, mamır yaşılı və pas, əl yazısı və lent', 'studio.theme.panel': 'Mövzu', 'studio.theme.intro': 'Bütün kitab üçün bir görünüş seçin. Mövzunu izləyən rənglər və yazı onunla birlikdə dəyişir, qalan hər şey olduğu kimi qalır.', diff --git a/shared/src/i18n/br/studioTemplates.ts b/shared/src/i18n/br/studioTemplates.ts index 2ef60deb7..50b317b4c 100644 --- a/shared/src/i18n/br/studioTemplates.ts +++ b/shared/src/i18n/br/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Grade e selo', 'studio.templates.archetype.minimal-serif': 'Minimalista', 'studio.templates.archetype.stamp-collage': 'Selos', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Revista', + 'studio.templates.archetype.vintage-poster': 'Pôster vintage', + 'studio.templates.archetype.night-film': 'Filme noturno', + 'studio.templates.archetype.field-notes': 'Caderno de campo', 'studio.templates.name.spineBandStitched': 'Faixa costurada', 'studio.templates.name.spineBandGingham': 'Faixa xadrez', 'studio.templates.name.spineBandScript': 'Faixa e caligrafia', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Grade em destaque', 'studio.templates.name.gridColumns': 'Grade em colunas', 'studio.templates.name.gridMosaic': 'Grade mosaico', + 'studio.templates.name.spineBandPlate': 'Prancha colada', + 'studio.templates.name.posterPopSunDisc': 'Disco de sol', + 'studio.templates.name.cutoutCircle': 'Círculo recortado', + 'studio.templates.name.postcardGreetings': 'Cartão-postal de saudações', + 'studio.templates.name.gridBadgeTiles': 'Grade de emblemas', + 'studio.templates.name.minimalSerifCameo': 'Camafeu oval', + 'studio.templates.name.stampCollageAirmail': 'Envelope de correio aéreo', + 'studio.templates.name.risoOverprint': 'Pôster sobreposto', + 'studio.templates.name.risoHalftoneSun': 'Sol em retícula', + 'studio.templates.name.risoZineStack': 'Pilha de zines', + 'studio.templates.name.risoPinkPress': 'Prensa rosa', + 'studio.templates.name.editorialMasthead': 'Capa com cabeçalho', + 'studio.templates.name.editorialCoverStory': 'Matéria de capa', + 'studio.templates.name.editorialSplit': 'Foto sobre a manchete', + 'studio.templates.name.editorialHeadline': 'Capa de manchete', + 'studio.templates.name.vintagePosterPanorama': 'Panorama de pôster', + 'studio.templates.name.vintagePosterArch': 'Arco e mar', + 'studio.templates.name.vintagePosterSunDisc': 'Sol sobre colinas', + 'studio.templates.name.vintagePosterPeaks': 'Picos escalonados', + 'studio.templates.name.nightFilmLetterbox': 'Capa em tela larga', + 'studio.templates.name.nightFilmStrip': 'Capa com tira de filme', + 'studio.templates.name.nightFilmTitleCard': 'Cartela de título', + 'studio.templates.name.nightFilmFadeOut': 'Fusão para o preto', + 'studio.templates.name.fieldNotesTorn': 'Folha de caderno rasgada', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid com fita', + 'studio.templates.name.fieldNotesSpecimens': 'Amostras com fita', + 'studio.templates.name.fieldNotesLabel': 'Etiqueta de caderno', + 'studio.templates.name.spineBandClothStory': 'História no tecido', + 'studio.templates.name.spineBandGinghamTrio': 'Trio com lombada xadrez', + 'studio.templates.name.spineBandAlbum': 'Álbum encadernado', + 'studio.templates.name.posterPopHeadline': 'Manchete de pôster', + 'studio.templates.name.posterPopPostcards': 'Fotos inclinadas', + 'studio.templates.name.posterPopPhotoWall': 'Mural de fotos', + 'studio.templates.name.cutoutStoryPage': 'História recortada', + 'studio.templates.name.cutoutTrio': 'Trio recortado', + 'studio.templates.name.cutoutScatter': 'Fotos espalhadas', + 'studio.templates.name.cutoutMosaic': 'Mosaico recortado', + 'studio.templates.name.postcardAirmail': 'Carta por avião', + 'studio.templates.name.postcardRack': 'Expositor de postais', + 'studio.templates.name.gridBadgeLetter': 'Selo e história', + 'studio.templates.name.gridBadgeHeroSix': 'Destaque e seis', + 'studio.templates.name.minimalSerifEssay': 'Ensaio tranquilo', + 'studio.templates.name.minimalSerifTriptych': 'Três pranchas', + 'studio.templates.name.stampCollageLetter': 'Carta carimbada', + 'studio.templates.name.stampCollageArchStamps': 'Arco e selos', + 'studio.templates.name.stampCollageSheet': 'Folha de selos', + 'studio.templates.name.risoStoryPlate': 'História e prancha', + 'studio.templates.name.risoOffsetPair': 'Par deslocado', + 'studio.templates.name.risoBlobTrio': 'Trio de manchas', + 'studio.templates.name.risoZineGrid': 'Grade de zine', + 'studio.templates.name.risoPrintScatter': 'Impressões espalhadas', + 'studio.templates.name.editorialFeatureOpener': 'Abertura de reportagem', + 'studio.templates.name.editorialPullQuote': 'Citação em destaque', + 'studio.templates.name.editorialFeatureColumns': 'Reportagem em colunas', + 'studio.templates.name.editorialPortfolio': 'Página dupla de portfólio', + 'studio.templates.name.editorialContactSheet': 'Folha de contato', + 'studio.templates.name.vintagePosterStory': 'Pôster e história', + 'studio.templates.name.vintagePosterTwin': 'Pôsteres gêmeos', + 'studio.templates.name.vintagePosterArcade': 'Arcada de arcos', + 'studio.templates.name.vintagePosterPanels': 'Painéis e colinas', + 'studio.templates.name.vintagePosterLabels': 'Etiquetas de bagagem', + 'studio.templates.name.nightFilmOpening': 'Cena de abertura', + 'studio.templates.name.nightFilmSubtitles': 'Legendas de filme', + 'studio.templates.name.nightFilmReels': 'Fusão e rolos', + 'studio.templates.name.nightFilmContact': 'Folha de contato de filme', + 'studio.templates.name.nightFilmDoubleReel': 'Rolo duplo', + 'studio.templates.name.fieldNotesDiary': 'Página de diário', + 'studio.templates.name.fieldNotesTrail': 'Trilha de fichas', + 'studio.templates.name.fieldNotesRoute': 'Rota e polaroids', + 'studio.templates.name.fieldNotesContact': 'Folha de contato numerada', + 'studio.templates.name.fieldNotesHerbarium': 'Folhas de herbário', }; export default studioTemplates; diff --git a/shared/src/i18n/br/studioThemes.ts b/shared/src/i18n/br/studioThemes.ts index 4355925ee..188d404d0 100644 --- a/shared/src/i18n/br/studioThemes.ts +++ b/shared/src/i18n/br/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nórdico', 'studio.theme.name.alpine': 'Alpino', 'studio.theme.name.indiaStamp': 'Colagem de selos', + 'studio.theme.name.riso': 'Impressão riso', + 'studio.theme.name.magazine': 'Revista', + 'studio.theme.name.retroTravel': 'Viagem retrô', + 'studio.theme.name.midnight': 'Noite escura', + 'studio.theme.name.fieldNotes': 'Caderno de campo', 'studio.theme.descr.posterPop': 'Papel creme, coral e girassol, títulos de pôster encorpados', 'studio.theme.descr.cutout': 'Papel cobalto, formas em coral e areia, letras brancas', 'studio.theme.descr.postcard': 'Papel menta, tinta azul-marinho, vermelho de carimbo e um subtítulo manuscrito', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Papel cinza-claro com ardósia, ocre e rosa', 'studio.theme.descr.alpine': 'Branco-neve com verde-floresta, ferrugem e azul-céu', 'studio.theme.descr.indiaStamp': 'Papel quente com magenta, açafrão e verde-petróleo', + 'studio.theme.descr.riso': 'Papel creme, azul riso e rosa flúor sobrepostos', + 'studio.theme.descr.magazine': 'Papel branco gelo, tinta preta, um vermelho e um grande cabeçalho', + 'studio.theme.descr.retroTravel': 'Papel creme envelhecido com laranja, verde petróleo e mostarda', + 'studio.theme.descr.midnight': 'Papel quase preto, texto branco quente e toques neon', + 'studio.theme.descr.fieldNotes': 'Papel kraft, verde musgo e ferrugem, letra à mão e fita', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Escolha um visual para o livro todo. As cores e as letras que seguem o tema mudam com ele, todo o resto continua como está.', diff --git a/shared/src/i18n/ca/studioTemplates.ts b/shared/src/i18n/ca/studioTemplates.ts index c49b2add7..3608af84a 100644 --- a/shared/src/i18n/ca/studioTemplates.ts +++ b/shared/src/i18n/ca/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Quadrícula i insígnia', 'studio.templates.archetype.minimal-serif': 'Minimalista', 'studio.templates.archetype.stamp-collage': 'Segells', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Revista', + 'studio.templates.archetype.vintage-poster': 'Cartell antic', + 'studio.templates.archetype.night-film': 'Cinema nocturn', + 'studio.templates.archetype.field-notes': 'Quadern de camp', 'studio.templates.name.spineBandStitched': 'Banda cosida', 'studio.templates.name.spineBandGingham': 'Banda de quadres', 'studio.templates.name.spineBandScript': 'Banda i cal·ligrafia', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Quadrícula destacada', 'studio.templates.name.gridColumns': 'Quadrícula en columnes', 'studio.templates.name.gridMosaic': 'Quadrícula mosaic', + 'studio.templates.name.spineBandPlate': 'Làmina enganxada', + 'studio.templates.name.posterPopSunDisc': 'Disc solar', + 'studio.templates.name.cutoutCircle': 'Cercle retallat', + 'studio.templates.name.postcardGreetings': 'Postal de salutacions', + 'studio.templates.name.gridBadgeTiles': 'Graella d’insígnies', + 'studio.templates.name.minimalSerifCameo': 'Camafeu oval', + 'studio.templates.name.stampCollageAirmail': 'Sobre per avió', + 'studio.templates.name.risoOverprint': 'Cartell sobreimprès', + 'studio.templates.name.risoHalftoneSun': 'Sol en trama', + 'studio.templates.name.risoZineStack': 'Pila de fanzins', + 'studio.templates.name.risoPinkPress': 'Premsa rosa', + 'studio.templates.name.editorialMasthead': 'Portada amb capçalera', + 'studio.templates.name.editorialCoverStory': 'Tema de portada', + 'studio.templates.name.editorialSplit': 'Foto sobre el titular', + 'studio.templates.name.editorialHeadline': 'Portada de titular', + 'studio.templates.name.vintagePosterPanorama': 'Panorama de cartell', + 'studio.templates.name.vintagePosterArch': 'Arc i mar', + 'studio.templates.name.vintagePosterSunDisc': 'Sol sobre turons', + 'studio.templates.name.vintagePosterPeaks': 'Cims esglaonats', + 'studio.templates.name.nightFilmLetterbox': 'Portada panoràmica', + 'studio.templates.name.nightFilmStrip': 'Portada amb tira de pel·lícula', + 'studio.templates.name.nightFilmTitleCard': 'Cartó de títol', + 'studio.templates.name.nightFilmFadeOut': 'Fos a negre', + 'studio.templates.name.fieldNotesTorn': 'Full de llibreta esquinçat', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid amb cinta', + 'studio.templates.name.fieldNotesSpecimens': 'Mostres amb cinta', + 'studio.templates.name.fieldNotesLabel': 'Etiqueta de llibreta', + 'studio.templates.name.spineBandClothStory': 'Relat sobre tela', + 'studio.templates.name.spineBandGinghamTrio': 'Trio amb llom de quadres', + 'studio.templates.name.spineBandAlbum': 'Àlbum enquadernat', + 'studio.templates.name.posterPopHeadline': 'Titular de cartell', + 'studio.templates.name.posterPopPostcards': 'Còpies inclinades', + 'studio.templates.name.posterPopPhotoWall': 'Mur de fotos', + 'studio.templates.name.cutoutStoryPage': 'Relat retallat', + 'studio.templates.name.cutoutTrio': 'Trio retallat', + 'studio.templates.name.cutoutScatter': 'Còpies escampades', + 'studio.templates.name.cutoutMosaic': 'Mosaic retallat', + 'studio.templates.name.postcardAirmail': 'Carta per avió', + 'studio.templates.name.postcardRack': 'Expositor de postals', + 'studio.templates.name.gridBadgeLetter': 'Segell i relat', + 'studio.templates.name.gridBadgeHeroSix': 'Foto gran i sis', + 'studio.templates.name.minimalSerifEssay': 'Assaig serè', + 'studio.templates.name.minimalSerifTriptych': 'Tres làmines', + 'studio.templates.name.stampCollageLetter': 'Carta mata-segellada', + 'studio.templates.name.stampCollageArchStamps': 'Arc i segells', + 'studio.templates.name.stampCollageSheet': 'Full de segells', + 'studio.templates.name.risoStoryPlate': 'Relat i làmina', + 'studio.templates.name.risoOffsetPair': 'Parella desplaçada', + 'studio.templates.name.risoBlobTrio': 'Trio de taques', + 'studio.templates.name.risoZineGrid': 'Graella de fanzín', + 'studio.templates.name.risoPrintScatter': 'Còpies disperses', + 'studio.templates.name.editorialFeatureOpener': 'Obertura de reportatge', + 'studio.templates.name.editorialPullQuote': 'Cita destacada', + 'studio.templates.name.editorialFeatureColumns': 'Reportatge en columnes', + 'studio.templates.name.editorialPortfolio': 'Doble pàgina de portafoli', + 'studio.templates.name.editorialContactSheet': 'Full de contactes', + 'studio.templates.name.vintagePosterStory': 'Cartell i relat', + 'studio.templates.name.vintagePosterTwin': 'Cartells bessons', + 'studio.templates.name.vintagePosterArcade': 'Arcada d’arcs', + 'studio.templates.name.vintagePosterPanels': 'Plafons i turons', + 'studio.templates.name.vintagePosterLabels': 'Etiquetes d’equipatge', + 'studio.templates.name.nightFilmOpening': 'Escena inicial', + 'studio.templates.name.nightFilmSubtitles': 'Subtítols de pel·lícula', + 'studio.templates.name.nightFilmReels': 'Fos i bobines', + 'studio.templates.name.nightFilmContact': 'Full de contactes de cinema', + 'studio.templates.name.nightFilmDoubleReel': 'Bobina doble', + 'studio.templates.name.fieldNotesDiary': 'Pàgina de diari', + 'studio.templates.name.fieldNotesTrail': 'Rastre de fitxes', + 'studio.templates.name.fieldNotesRoute': 'Ruta i polaroids', + 'studio.templates.name.fieldNotesContact': 'Full de contactes numerat', + 'studio.templates.name.fieldNotesHerbarium': 'Plecs d’herbari', }; export default studioTemplates; diff --git a/shared/src/i18n/ca/studioThemes.ts b/shared/src/i18n/ca/studioThemes.ts index a21ae9a9d..296065a7c 100644 --- a/shared/src/i18n/ca/studioThemes.ts +++ b/shared/src/i18n/ca/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nòrdic', 'studio.theme.name.alpine': 'Alpí', 'studio.theme.name.indiaStamp': 'Collage de segells', + 'studio.theme.name.riso': 'Impressió riso', + 'studio.theme.name.magazine': 'Revista', + 'studio.theme.name.retroTravel': 'Viatge retro', + 'studio.theme.name.midnight': 'Mitjanit', + 'studio.theme.name.fieldNotes': 'Quadern de camp', 'studio.theme.descr.posterPop': 'Paper crema, corall i gira-sol, títols de pòster gruixuts', 'studio.theme.descr.cutout': 'Paper cobalt, formes corall i sorra, lletra blanca', 'studio.theme.descr.postcard': 'Paper menta, tinta blau marí, vermell de segell i un subtítol manuscrit', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Paper gris clar amb pissarra, ocre i rosa', 'studio.theme.descr.alpine': 'Blanc de neu amb verd bosc, rovell i blau cel', 'studio.theme.descr.indiaStamp': 'Paper càlid amb magenta, safrà i verd blavós', + 'studio.theme.descr.riso': 'Paper crema, blau riso i rosa fluor sobreimpresos', + 'studio.theme.descr.magazine': 'Paper blanc trencat, tinta negra, un vermell i una gran capçalera', + 'studio.theme.descr.retroTravel': 'Paper crema envellit amb taronja, verd blavós i mostassa', + 'studio.theme.descr.midnight': 'Paper gairebé negre, lletra blanca càlida i tocs de neó', + 'studio.theme.descr.fieldNotes': 'Paper kraft, verd molsa i rovell, lletra a mà i cinta', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Tria un estil per a tot el llibre. Els colors i la lletra que segueixen el tema canvien amb ell, tota la resta es queda com està.', diff --git a/shared/src/i18n/cs/studioTemplates.ts b/shared/src/i18n/cs/studioTemplates.ts index ef10e50a7..179a05d56 100644 --- a/shared/src/i18n/cs/studioTemplates.ts +++ b/shared/src/i18n/cs/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Mřížka a odznak', 'studio.templates.archetype.minimal-serif': 'Minimalismus', 'studio.templates.archetype.stamp-collage': 'Známky', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Časopis', + 'studio.templates.archetype.vintage-poster': 'Retro plakát', + 'studio.templates.archetype.night-film': 'Noční film', + 'studio.templates.archetype.field-notes': 'Terénní zápisky', 'studio.templates.name.spineBandStitched': 'Prošitý pruh', 'studio.templates.name.spineBandGingham': 'Kostkovaný pruh', 'studio.templates.name.spineBandScript': 'Pruh s psacím písmem', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Mřížka s hlavní fotkou', 'studio.templates.name.gridColumns': 'Sloupcová mřížka', 'studio.templates.name.gridMosaic': 'Mozaiková mřížka', + 'studio.templates.name.spineBandPlate': 'Vlepená tabule', + 'studio.templates.name.posterPopSunDisc': 'Sluneční kotouč', + 'studio.templates.name.cutoutCircle': 'Vystřižený kruh', + 'studio.templates.name.postcardGreetings': 'Pozdrav z cest', + 'studio.templates.name.gridBadgeTiles': 'Mřížka odznaků', + 'studio.templates.name.minimalSerifCameo': 'Oválná kamej', + 'studio.templates.name.stampCollageAirmail': 'Obálka letecké pošty', + 'studio.templates.name.risoOverprint': 'Plakát s přetiskem', + 'studio.templates.name.risoHalftoneSun': 'Rastrové slunce', + 'studio.templates.name.risoZineStack': 'Hromádka zinů', + 'studio.templates.name.risoPinkPress': 'Růžový tisk', + 'studio.templates.name.editorialMasthead': 'Obálka s hlavičkou', + 'studio.templates.name.editorialCoverStory': 'Titulní příběh', + 'studio.templates.name.editorialSplit': 'Fotka nad titulkem', + 'studio.templates.name.editorialHeadline': 'Obálka s titulkem', + 'studio.templates.name.vintagePosterPanorama': 'Plakátové panorama', + 'studio.templates.name.vintagePosterArch': 'Oblouk a moře', + 'studio.templates.name.vintagePosterSunDisc': 'Slunce nad kopci', + 'studio.templates.name.vintagePosterPeaks': 'Vrstvené štíty', + 'studio.templates.name.nightFilmLetterbox': 'Širokoúhlá obálka', + 'studio.templates.name.nightFilmStrip': 'Obálka s filmovým pásem', + 'studio.templates.name.nightFilmTitleCard': 'Titulková karta', + 'studio.templates.name.nightFilmFadeOut': 'Stmívačka', + 'studio.templates.name.fieldNotesTorn': 'Vytržený list zápisníku', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid na pásce', + 'studio.templates.name.fieldNotesSpecimens': 'Vzorky na pásce', + 'studio.templates.name.fieldNotesLabel': 'Štítek zápisníku', + 'studio.templates.name.spineBandClothStory': 'Příběh na plátně', + 'studio.templates.name.spineBandGinghamTrio': 'Trojice s kostkovaným hřbetem', + 'studio.templates.name.spineBandAlbum': 'Vázané album', + 'studio.templates.name.posterPopHeadline': 'Plakátový titulek', + 'studio.templates.name.posterPopPostcards': 'Šikmé fotky', + 'studio.templates.name.posterPopPhotoWall': 'Stěna fotek', + 'studio.templates.name.cutoutStoryPage': 'Vystřižený příběh', + 'studio.templates.name.cutoutTrio': 'Vystřižená trojice', + 'studio.templates.name.cutoutScatter': 'Rozházené fotky', + 'studio.templates.name.cutoutMosaic': 'Vystřižená mozaika', + 'studio.templates.name.postcardAirmail': 'Dopis leteckou poštou', + 'studio.templates.name.postcardRack': 'Stojan s pohlednicemi', + 'studio.templates.name.gridBadgeLetter': 'Pečeť a příběh', + 'studio.templates.name.gridBadgeHeroSix': 'Hlavní fotka a šest', + 'studio.templates.name.minimalSerifEssay': 'Tichá esej', + 'studio.templates.name.minimalSerifTriptych': 'Tři tabule', + 'studio.templates.name.stampCollageLetter': 'Orazítkovaný dopis', + 'studio.templates.name.stampCollageArchStamps': 'Oblouk a známky', + 'studio.templates.name.stampCollageSheet': 'Arch známek', + 'studio.templates.name.risoStoryPlate': 'Příběh a tabule', + 'studio.templates.name.risoOffsetPair': 'Posunutá dvojice', + 'studio.templates.name.risoBlobTrio': 'Trojice skvrn', + 'studio.templates.name.risoZineGrid': 'Mřížka zinu', + 'studio.templates.name.risoPrintScatter': 'Rozptýlené tisky', + 'studio.templates.name.editorialFeatureOpener': 'Úvod reportáže', + 'studio.templates.name.editorialPullQuote': 'Zvýrazněný citát', + 'studio.templates.name.editorialFeatureColumns': 'Reportáž ve sloupcích', + 'studio.templates.name.editorialPortfolio': 'Dvoustrana portfolia', + 'studio.templates.name.editorialContactSheet': 'Kontaktní arch', + 'studio.templates.name.vintagePosterStory': 'Plakát a příběh', + 'studio.templates.name.vintagePosterTwin': 'Dvojčata plakátů', + 'studio.templates.name.vintagePosterArcade': 'Arkáda oblouků', + 'studio.templates.name.vintagePosterPanels': 'Panely a kopce', + 'studio.templates.name.vintagePosterLabels': 'Zavazadlové štítky', + 'studio.templates.name.nightFilmOpening': 'Úvodní scéna', + 'studio.templates.name.nightFilmSubtitles': 'Filmové titulky', + 'studio.templates.name.nightFilmReels': 'Stmívačka a cívky', + 'studio.templates.name.nightFilmContact': 'Filmový kontaktní arch', + 'studio.templates.name.nightFilmDoubleReel': 'Dvojitá cívka', + 'studio.templates.name.fieldNotesDiary': 'Stránka deníku', + 'studio.templates.name.fieldNotesTrail': 'Stopa kartiček', + 'studio.templates.name.fieldNotesRoute': 'Trasa a polaroidy', + 'studio.templates.name.fieldNotesContact': 'Číslovaný kontaktní arch', + 'studio.templates.name.fieldNotesHerbarium': 'Herbářové archy', }; export default studioTemplates; diff --git a/shared/src/i18n/cs/studioThemes.ts b/shared/src/i18n/cs/studioThemes.ts index 2ec925a02..1d0af3751 100644 --- a/shared/src/i18n/cs/studioThemes.ts +++ b/shared/src/i18n/cs/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Severský', 'studio.theme.name.alpine': 'Alpský', 'studio.theme.name.indiaStamp': 'Koláž známek', + 'studio.theme.name.riso': 'Risotisk', + 'studio.theme.name.magazine': 'Časopis', + 'studio.theme.name.retroTravel': 'Retro cestování', + 'studio.theme.name.midnight': 'Půlnoc', + 'studio.theme.name.fieldNotes': 'Terénní zápisky', 'studio.theme.descr.posterPop': 'Krémový papír, korálová a slunečnicová, výrazné plakátové nadpisy', 'studio.theme.descr.cutout': 'Kobaltový papír, tvary v korálové a písková, bílé písmo', 'studio.theme.descr.postcard': 'Mátový papír, námořnická modř, razítková červená a psaný podtitul', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Světle šedý papír s břidlicovou, okrovou a růžovou', 'studio.theme.descr.alpine': 'Sněhově bílá s lesní zelenou, rezavou a nebeskou modří', 'studio.theme.descr.indiaStamp': 'Teplý papír s purpurovou, šafránovou a petrolejovou', + 'studio.theme.descr.riso': 'Krémový papír, modrá riso a fluo růžová přes sebe', + 'studio.theme.descr.magazine': 'Lomená bílá, černá barva, jedna červená a velké záhlaví', + 'studio.theme.descr.retroTravel': 'Zažloutlý krémový papír s oranžovou, petrolejovou a hořčicovou', + 'studio.theme.descr.midnight': 'Téměř černý papír, teple bílé písmo a neonové akcenty', + 'studio.theme.descr.fieldNotes': 'Balicí papír, mechová zeleň a rez, rukopis a páska', 'studio.theme.panel': 'Motiv', 'studio.theme.intro': 'Vyberte vzhled pro celou knihu. Barvy a písmo, které motiv následují, se změní s ním, vše ostatní zůstane, jak je.', diff --git a/shared/src/i18n/de/studioTemplates.ts b/shared/src/i18n/de/studioTemplates.ts index c810387c4..2ddfe3104 100644 --- a/shared/src/i18n/de/studioTemplates.ts +++ b/shared/src/i18n/de/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Raster mit Plakette', 'studio.templates.archetype.minimal-serif': 'Minimal', // same-as-en 'studio.templates.archetype.stamp-collage': 'Briefmarken', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Magazin', + 'studio.templates.archetype.vintage-poster': 'Retroplakat', + 'studio.templates.archetype.night-film': 'Nachtfilm', + 'studio.templates.archetype.field-notes': 'Feldnotizen', 'studio.templates.name.spineBandStitched': 'Genähtes Band', 'studio.templates.name.spineBandGingham': 'Band mit Vichykaro', 'studio.templates.name.spineBandScript': 'Band mit Schreibschrift', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Raster mit Hauptbild', 'studio.templates.name.gridColumns': 'Spaltenraster', 'studio.templates.name.gridMosaic': 'Mosaikraster', + 'studio.templates.name.spineBandPlate': 'Eingeklebte Bildtafel', + 'studio.templates.name.posterPopSunDisc': 'Sonnenscheibe', + 'studio.templates.name.cutoutCircle': 'Kreis im Scherenschnitt', + 'studio.templates.name.postcardGreetings': 'Grußpostkarte', + 'studio.templates.name.gridBadgeTiles': 'Raster mit Plaketten', + 'studio.templates.name.minimalSerifCameo': 'Ovale Kamee', + 'studio.templates.name.stampCollageAirmail': 'Luftpostumschlag', + 'studio.templates.name.risoOverprint': 'Überdruck-Plakat', + 'studio.templates.name.risoHalftoneSun': 'Rastersonne', + 'studio.templates.name.risoZineStack': 'Zine-Stapel', + 'studio.templates.name.risoPinkPress': 'Pinker Druck', + 'studio.templates.name.editorialMasthead': 'Titelkopf', + 'studio.templates.name.editorialCoverStory': 'Titelgeschichte', + 'studio.templates.name.editorialSplit': 'Foto über Schlagzeile', + 'studio.templates.name.editorialHeadline': 'Schlagzeilen-Titel', + 'studio.templates.name.vintagePosterPanorama': 'Plakatpanorama', + 'studio.templates.name.vintagePosterArch': 'Bogen und Meer', + 'studio.templates.name.vintagePosterSunDisc': 'Sonne über Hügeln', + 'studio.templates.name.vintagePosterPeaks': 'Gestaffelte Gipfel', + 'studio.templates.name.nightFilmLetterbox': 'Breitbild-Titel', + 'studio.templates.name.nightFilmStrip': 'Filmstreifen-Titel', + 'studio.templates.name.nightFilmTitleCard': 'Titelkarte', + 'studio.templates.name.nightFilmFadeOut': 'Abblende', + 'studio.templates.name.fieldNotesTorn': 'Abgerissenes Notizblatt', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid mit Klebeband', + 'studio.templates.name.fieldNotesSpecimens': 'Eingeklebte Fundstücke', + 'studio.templates.name.fieldNotesLabel': 'Notizbuch-Etikett', + 'studio.templates.name.spineBandClothStory': 'Geschichte auf Leinen', + 'studio.templates.name.spineBandGinghamTrio': 'Vichy-Rücken mit drei', + 'studio.templates.name.spineBandAlbum': 'Gebundenes Album', + 'studio.templates.name.posterPopHeadline': 'Plakat-Schlagzeile', + 'studio.templates.name.posterPopPostcards': 'Schräge Abzüge', + 'studio.templates.name.posterPopPhotoWall': 'Fotowand', + 'studio.templates.name.cutoutStoryPage': 'Geschichte im Scherenschnitt', + 'studio.templates.name.cutoutTrio': 'Scherenschnitt mit drei', + 'studio.templates.name.cutoutScatter': 'Verstreute Abzüge', + 'studio.templates.name.cutoutMosaic': 'Scherenschnitt-Mosaik', + 'studio.templates.name.postcardAirmail': 'Luftpostbrief', + 'studio.templates.name.postcardRack': 'Postkartenständer', + 'studio.templates.name.gridBadgeLetter': 'Siegel und Geschichte', + 'studio.templates.name.gridBadgeHeroSix': 'Hauptfoto und sechs', + 'studio.templates.name.minimalSerifEssay': 'Stiller Essay', + 'studio.templates.name.minimalSerifTriptych': 'Drei Bildtafeln', + 'studio.templates.name.stampCollageLetter': 'Abgestempelter Brief', + 'studio.templates.name.stampCollageArchStamps': 'Bogen und Briefmarken', + 'studio.templates.name.stampCollageSheet': 'Briefmarkenbogen', + 'studio.templates.name.risoStoryPlate': 'Geschichte mit Bild', + 'studio.templates.name.risoOffsetPair': 'Versetztes Paar', + 'studio.templates.name.risoBlobTrio': 'Drei Kleckse', + 'studio.templates.name.risoZineGrid': 'Zine-Raster', + 'studio.templates.name.risoPrintScatter': 'Verstreute Drucke', + 'studio.templates.name.editorialFeatureOpener': 'Reportage-Auftakt', + 'studio.templates.name.editorialPullQuote': 'Herausgestelltes Zitat', + 'studio.templates.name.editorialFeatureColumns': 'Reportage in Spalten', + 'studio.templates.name.editorialPortfolio': 'Portfolio-Doppelseite', + 'studio.templates.name.editorialContactSheet': 'Kontaktabzug', + 'studio.templates.name.vintagePosterStory': 'Plakat und Geschichte', + 'studio.templates.name.vintagePosterTwin': 'Plakatpaar', + 'studio.templates.name.vintagePosterArcade': 'Bogengang', + 'studio.templates.name.vintagePosterPanels': 'Tafeln und Hügel', + 'studio.templates.name.vintagePosterLabels': 'Kofferanhänger', + 'studio.templates.name.nightFilmOpening': 'Eröffnungsszene', + 'studio.templates.name.nightFilmSubtitles': 'Film mit Untertiteln', + 'studio.templates.name.nightFilmReels': 'Abblende und Rollen', + 'studio.templates.name.nightFilmContact': 'Film-Kontaktabzug', + 'studio.templates.name.nightFilmDoubleReel': 'Doppelte Filmrolle', + 'studio.templates.name.fieldNotesDiary': 'Tagebuchseite', + 'studio.templates.name.fieldNotesTrail': 'Spur aus Notizkarten', + 'studio.templates.name.fieldNotesRoute': 'Route und Polaroids', + 'studio.templates.name.fieldNotesContact': 'Nummerierter Kontaktabzug', + 'studio.templates.name.fieldNotesHerbarium': 'Herbarbögen', }; export default studioTemplates; diff --git a/shared/src/i18n/de/studioThemes.ts b/shared/src/i18n/de/studioThemes.ts index f48575455..c28569e05 100644 --- a/shared/src/i18n/de/studioThemes.ts +++ b/shared/src/i18n/de/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordisch', 'studio.theme.name.alpine': 'Alpin', 'studio.theme.name.indiaStamp': 'Briefmarken-Collage', + 'studio.theme.name.riso': 'Risodruck', + 'studio.theme.name.magazine': 'Magazin', + 'studio.theme.name.retroTravel': 'Retroreise', + 'studio.theme.name.midnight': 'Mitternacht', + 'studio.theme.name.fieldNotes': 'Feldnotizen', 'studio.theme.descr.posterPop': 'Cremepapier, Koralle und Sonnengelb, kräftige Plakattitel', 'studio.theme.descr.cutout': 'Kobaltpapier, Formen in Koralle und Sand, weiße Schrift', 'studio.theme.descr.postcard': 'Mintpapier, Marineblau, Stempelrot und ein Untertitel in Schreibschrift', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Hellgraues Papier mit Schiefer, Ocker und Rosé', 'studio.theme.descr.alpine': 'Schneeweiß mit Waldgrün, Rost und Himmelblau', 'studio.theme.descr.indiaStamp': 'Warmes Papier mit Magenta, Safran und Petrol', + 'studio.theme.descr.riso': 'Cremepapier, Risoblau und Neonpink übereinander gedruckt', + 'studio.theme.descr.magazine': 'Gebrochenes Weiß, schwarze Schrift, ein Rot und ein großer Titelkopf', + 'studio.theme.descr.retroTravel': 'Vergilbtes Cremepapier mit Orange, Petrol und Senfgelb', + 'studio.theme.descr.midnight': 'Fast schwarzes Papier, warmweiße Schrift und Neonakzente', + 'studio.theme.descr.fieldNotes': 'Packpapier, Moosgrün und Rost, Handschrift und Klebeband', 'studio.theme.panel': 'Thema', 'studio.theme.intro': 'Wähle einen Look für das ganze Buch. Farben und Schrift, die dem Thema folgen, ändern sich mit, alles andere bleibt, wie es ist.', diff --git a/shared/src/i18n/en/studioTemplates.ts b/shared/src/i18n/en/studioTemplates.ts index 35c13d4ce..698937c09 100644 --- a/shared/src/i18n/en/studioTemplates.ts +++ b/shared/src/i18n/en/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Grid and badge', 'studio.templates.archetype.minimal-serif': 'Minimal', 'studio.templates.archetype.stamp-collage': 'Stamps', + 'studio.templates.archetype.riso': 'Riso', + 'studio.templates.archetype.editorial': 'Editorial', + 'studio.templates.archetype.vintage-poster': 'Vintage poster', + 'studio.templates.archetype.night-film': 'Night film', + 'studio.templates.archetype.field-notes': 'Field notes', 'studio.templates.name.spineBandStitched': 'Stitched band', 'studio.templates.name.spineBandGingham': 'Gingham band', 'studio.templates.name.spineBandScript': 'Band with script', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Feature grid', 'studio.templates.name.gridColumns': 'Column grid', 'studio.templates.name.gridMosaic': 'Mosaic grid', + 'studio.templates.name.spineBandPlate': 'Tipped-in plate', + 'studio.templates.name.posterPopSunDisc': 'Sun disc', + 'studio.templates.name.cutoutCircle': 'Circle cut-out', + 'studio.templates.name.postcardGreetings': 'Greetings postcard', + 'studio.templates.name.gridBadgeTiles': 'Badge tile grid', + 'studio.templates.name.minimalSerifCameo': 'Oval cameo', + 'studio.templates.name.stampCollageAirmail': 'Airmail envelope', + 'studio.templates.name.risoOverprint': 'Overprint poster', + 'studio.templates.name.risoHalftoneSun': 'Halftone sun', + 'studio.templates.name.risoZineStack': 'Zine stack', + 'studio.templates.name.risoPinkPress': 'Pink press', + 'studio.templates.name.editorialMasthead': 'Masthead cover', + 'studio.templates.name.editorialCoverStory': 'Cover story', + 'studio.templates.name.editorialSplit': 'Photo over headline', + 'studio.templates.name.editorialHeadline': 'Headline cover', + 'studio.templates.name.vintagePosterPanorama': 'Poster panorama', + 'studio.templates.name.vintagePosterArch': 'Arch and sea', + 'studio.templates.name.vintagePosterSunDisc': 'Sun over hills', + 'studio.templates.name.vintagePosterPeaks': 'Stacked peaks', + 'studio.templates.name.nightFilmLetterbox': 'Letterbox cover', + 'studio.templates.name.nightFilmStrip': 'Film strip cover', + 'studio.templates.name.nightFilmTitleCard': 'Title card', + 'studio.templates.name.nightFilmFadeOut': 'Fade to black', + 'studio.templates.name.fieldNotesTorn': 'Torn notebook sheet', + 'studio.templates.name.fieldNotesPolaroid': 'Taped polaroid', + 'studio.templates.name.fieldNotesSpecimens': 'Taped specimens', + 'studio.templates.name.fieldNotesLabel': 'Notebook label', + 'studio.templates.name.spineBandClothStory': 'Story on cloth', + 'studio.templates.name.spineBandGinghamTrio': 'Gingham spine trio', + 'studio.templates.name.spineBandAlbum': 'Bound album', + 'studio.templates.name.posterPopHeadline': 'Poster headline', + 'studio.templates.name.posterPopPostcards': 'Tilted prints', + 'studio.templates.name.posterPopPhotoWall': 'Photo wall', + 'studio.templates.name.cutoutStoryPage': 'Cut-out story', + 'studio.templates.name.cutoutTrio': 'Cut-out trio', + 'studio.templates.name.cutoutScatter': 'Scattered prints', + 'studio.templates.name.cutoutMosaic': 'Cut-out mosaic', + 'studio.templates.name.postcardAirmail': 'Airmail letter', + 'studio.templates.name.postcardRack': 'Postcard rack', + 'studio.templates.name.gridBadgeLetter': 'Seal and story', + 'studio.templates.name.gridBadgeHeroSix': 'Hero and six', + 'studio.templates.name.minimalSerifEssay': 'Quiet essay', + 'studio.templates.name.minimalSerifTriptych': 'Three plates', + 'studio.templates.name.stampCollageLetter': 'Postmarked letter', + 'studio.templates.name.stampCollageArchStamps': 'Arch and stamps', + 'studio.templates.name.stampCollageSheet': 'Stamp sheet', + 'studio.templates.name.risoStoryPlate': 'Story plate', + 'studio.templates.name.risoOffsetPair': 'Offset pair', + 'studio.templates.name.risoBlobTrio': 'Blob trio', + 'studio.templates.name.risoZineGrid': 'Zine grid', + 'studio.templates.name.risoPrintScatter': 'Print scatter', + 'studio.templates.name.editorialFeatureOpener': 'Feature opener', + 'studio.templates.name.editorialPullQuote': 'Pull quote', + 'studio.templates.name.editorialFeatureColumns': 'Feature columns', + 'studio.templates.name.editorialPortfolio': 'Portfolio spread', + 'studio.templates.name.editorialContactSheet': 'Contact sheet', + 'studio.templates.name.vintagePosterStory': 'Poster and story', + 'studio.templates.name.vintagePosterTwin': 'Twin posters', + 'studio.templates.name.vintagePosterArcade': 'Arch arcade', + 'studio.templates.name.vintagePosterPanels': 'Panels and hills', + 'studio.templates.name.vintagePosterLabels': 'Luggage labels', + 'studio.templates.name.nightFilmOpening': 'Opening scene', + 'studio.templates.name.nightFilmSubtitles': 'Film subtitles', + 'studio.templates.name.nightFilmReels': 'Fade and reels', + 'studio.templates.name.nightFilmContact': 'Film contact sheet', + 'studio.templates.name.nightFilmDoubleReel': 'Double reel', + 'studio.templates.name.fieldNotesDiary': 'Diary page', + 'studio.templates.name.fieldNotesTrail': 'Note card trail', + 'studio.templates.name.fieldNotesRoute': 'Route and polaroids', + 'studio.templates.name.fieldNotesContact': 'Numbered contact sheet', + 'studio.templates.name.fieldNotesHerbarium': 'Herbarium sheets', }; export default studioTemplates; diff --git a/shared/src/i18n/en/studioThemes.ts b/shared/src/i18n/en/studioThemes.ts index 30ee08005..135337931 100644 --- a/shared/src/i18n/en/studioThemes.ts +++ b/shared/src/i18n/en/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordic', 'studio.theme.name.alpine': 'Alpine', 'studio.theme.name.indiaStamp': 'Stamp collage', + 'studio.theme.name.riso': 'Riso print', + 'studio.theme.name.magazine': 'Magazine', + 'studio.theme.name.retroTravel': 'Retro travel', + 'studio.theme.name.midnight': 'Midnight', + 'studio.theme.name.fieldNotes': 'Field notes', 'studio.theme.descr.posterPop': 'Cream paper, coral and sunflower, heavy poster titles', 'studio.theme.descr.cutout': 'Cobalt paper, coral and sand shapes, white type', 'studio.theme.descr.postcard': 'Mint paper, navy ink, stamp red and a script subtitle', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Pale grey paper with slate, ochre and rose', 'studio.theme.descr.alpine': 'Snow white with forest green, rust and sky blue', 'studio.theme.descr.indiaStamp': 'Warm paper with magenta, saffron and teal', + 'studio.theme.descr.riso': 'Cream paper, riso blue and fluo pink overprinted', + 'studio.theme.descr.magazine': 'Off white paper, black ink, one red and a big masthead', + 'studio.theme.descr.retroTravel': 'Aged cream paper with orange, teal and mustard', + 'studio.theme.descr.midnight': 'Near black paper, warm white type and neon accents', + 'studio.theme.descr.fieldNotes': 'Kraft paper, moss green and rust, handwriting and tape', 'studio.theme.panel': 'Theme', 'studio.theme.intro': 'Pick a look for the whole book. Colours and type that follow the theme change with it, everything else stays as it is.', diff --git a/shared/src/i18n/es/studioTemplates.ts b/shared/src/i18n/es/studioTemplates.ts index 91398ab87..c362fc215 100644 --- a/shared/src/i18n/es/studioTemplates.ts +++ b/shared/src/i18n/es/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Cuadrícula e insignia', 'studio.templates.archetype.minimal-serif': 'Minimalista', 'studio.templates.archetype.stamp-collage': 'Sellos', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Revista', + 'studio.templates.archetype.vintage-poster': 'Cartel antiguo', + 'studio.templates.archetype.night-film': 'Cine nocturno', + 'studio.templates.archetype.field-notes': 'Cuaderno de campo', 'studio.templates.name.spineBandStitched': 'Banda cosida', 'studio.templates.name.spineBandGingham': 'Banda de vichy', 'studio.templates.name.spineBandScript': 'Banda y caligrafía', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Cuadrícula destacada', 'studio.templates.name.gridColumns': 'Cuadrícula en columnas', 'studio.templates.name.gridMosaic': 'Cuadrícula mosaico', + 'studio.templates.name.spineBandPlate': 'Lámina pegada', + 'studio.templates.name.posterPopSunDisc': 'Disco solar', + 'studio.templates.name.cutoutCircle': 'Círculo recortado', + 'studio.templates.name.postcardGreetings': 'Postal de saludos', + 'studio.templates.name.gridBadgeTiles': 'Cuadrícula de insignias', + 'studio.templates.name.minimalSerifCameo': 'Camafeo ovalado', + 'studio.templates.name.stampCollageAirmail': 'Sobre de correo aéreo', + 'studio.templates.name.risoOverprint': 'Póster sobreimpreso', + 'studio.templates.name.risoHalftoneSun': 'Sol en trama', + 'studio.templates.name.risoZineStack': 'Pila de fanzines', + 'studio.templates.name.risoPinkPress': 'Prensa rosa', + 'studio.templates.name.editorialMasthead': 'Portada con cabecera', + 'studio.templates.name.editorialCoverStory': 'Tema de portada', + 'studio.templates.name.editorialSplit': 'Foto sobre titular', + 'studio.templates.name.editorialHeadline': 'Portada de titular', + 'studio.templates.name.vintagePosterPanorama': 'Panorama de póster', + 'studio.templates.name.vintagePosterArch': 'Arco y mar', + 'studio.templates.name.vintagePosterSunDisc': 'Sol sobre colinas', + 'studio.templates.name.vintagePosterPeaks': 'Picos escalonados', + 'studio.templates.name.nightFilmLetterbox': 'Portada panorámica', + 'studio.templates.name.nightFilmStrip': 'Portada con tira de película', + 'studio.templates.name.nightFilmTitleCard': 'Cartón de título', + 'studio.templates.name.nightFilmFadeOut': 'Fundido a negro', + 'studio.templates.name.fieldNotesTorn': 'Hoja de cuaderno rota', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid con cinta', + 'studio.templates.name.fieldNotesSpecimens': 'Muestras con cinta', + 'studio.templates.name.fieldNotesLabel': 'Etiqueta de cuaderno', + 'studio.templates.name.spineBandClothStory': 'Relato sobre tela', + 'studio.templates.name.spineBandGinghamTrio': 'Trío con lomo vichy', + 'studio.templates.name.spineBandAlbum': 'Álbum encuadernado', + 'studio.templates.name.posterPopHeadline': 'Titular de póster', + 'studio.templates.name.posterPopPostcards': 'Copias inclinadas', + 'studio.templates.name.posterPopPhotoWall': 'Muro de fotos', + 'studio.templates.name.cutoutStoryPage': 'Relato recortado', + 'studio.templates.name.cutoutTrio': 'Trío recortado', + 'studio.templates.name.cutoutScatter': 'Copias dispersas', + 'studio.templates.name.cutoutMosaic': 'Mosaico recortado', + 'studio.templates.name.postcardAirmail': 'Carta por avión', + 'studio.templates.name.postcardRack': 'Expositor de postales', + 'studio.templates.name.gridBadgeLetter': 'Sello y relato', + 'studio.templates.name.gridBadgeHeroSix': 'Foto principal y seis', + 'studio.templates.name.minimalSerifEssay': 'Ensayo sereno', + 'studio.templates.name.minimalSerifTriptych': 'Tres láminas', + 'studio.templates.name.stampCollageLetter': 'Carta matasellada', + 'studio.templates.name.stampCollageArchStamps': 'Arco y sellos', + 'studio.templates.name.stampCollageSheet': 'Hoja de sellos', + 'studio.templates.name.risoStoryPlate': 'Relato y lámina', + 'studio.templates.name.risoOffsetPair': 'Pareja desplazada', + 'studio.templates.name.risoBlobTrio': 'Trío de manchas', + 'studio.templates.name.risoZineGrid': 'Cuadrícula de fanzine', + 'studio.templates.name.risoPrintScatter': 'Copias esparcidas', + 'studio.templates.name.editorialFeatureOpener': 'Apertura de reportaje', + 'studio.templates.name.editorialPullQuote': 'Cita destacada', + 'studio.templates.name.editorialFeatureColumns': 'Reportaje en columnas', + 'studio.templates.name.editorialPortfolio': 'Doble página de portafolio', + 'studio.templates.name.editorialContactSheet': 'Hoja de contactos', + 'studio.templates.name.vintagePosterStory': 'Póster y relato', + 'studio.templates.name.vintagePosterTwin': 'Pósteres gemelos', + 'studio.templates.name.vintagePosterArcade': 'Arcada de arcos', + 'studio.templates.name.vintagePosterPanels': 'Paneles y colinas', + 'studio.templates.name.vintagePosterLabels': 'Etiquetas de equipaje', + 'studio.templates.name.nightFilmOpening': 'Escena inicial', + 'studio.templates.name.nightFilmSubtitles': 'Subtítulos de película', + 'studio.templates.name.nightFilmReels': 'Fundido y bobinas', + 'studio.templates.name.nightFilmContact': 'Hoja de contactos de cine', + 'studio.templates.name.nightFilmDoubleReel': 'Bobina doble', + 'studio.templates.name.fieldNotesDiary': 'Página de diario', + 'studio.templates.name.fieldNotesTrail': 'Rastro de fichas', + 'studio.templates.name.fieldNotesRoute': 'Ruta y polaroids', + 'studio.templates.name.fieldNotesContact': 'Hoja de contactos numerada', + 'studio.templates.name.fieldNotesHerbarium': 'Pliegos de herbario', }; export default studioTemplates; diff --git a/shared/src/i18n/es/studioThemes.ts b/shared/src/i18n/es/studioThemes.ts index e708ff963..e5642bc3d 100644 --- a/shared/src/i18n/es/studioThemes.ts +++ b/shared/src/i18n/es/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nórdico', 'studio.theme.name.alpine': 'Alpino', 'studio.theme.name.indiaStamp': 'Collage de sellos', + 'studio.theme.name.riso': 'Impresión riso', + 'studio.theme.name.magazine': 'Revista', + 'studio.theme.name.retroTravel': 'Viaje retro', + 'studio.theme.name.midnight': 'Medianoche', + 'studio.theme.name.fieldNotes': 'Cuaderno de campo', 'studio.theme.descr.posterPop': 'Papel crema, coral y girasol, títulos de póster gruesos', 'studio.theme.descr.cutout': 'Papel cobalto, formas coral y arena, letra blanca', 'studio.theme.descr.postcard': 'Papel menta, tinta marino, rojo de sello y un subtítulo manuscrito', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Papel gris claro con pizarra, ocre y rosa', 'studio.theme.descr.alpine': 'Blanco nieve con verde bosque, óxido y azul cielo', 'studio.theme.descr.indiaStamp': 'Papel cálido con magenta, azafrán y verde azulado', + 'studio.theme.descr.riso': 'Papel crema, azul riso y rosa flúor sobreimpresos', + 'studio.theme.descr.magazine': 'Papel blanco roto, tinta negra, un rojo y una gran cabecera', + 'studio.theme.descr.retroTravel': 'Papel crema envejecido con naranja, verde azulado y mostaza', + 'studio.theme.descr.midnight': 'Papel casi negro, letra blanca cálida y acentos neón', + 'studio.theme.descr.fieldNotes': 'Papel kraft, verde musgo y óxido, letra a mano y cinta', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Elige un estilo para todo el libro. Los colores y la letra que siguen al tema cambian con él, todo lo demás se queda como está.', diff --git a/shared/src/i18n/et/studioTemplates.ts b/shared/src/i18n/et/studioTemplates.ts index d3ab0de65..3f636f70d 100644 --- a/shared/src/i18n/et/studioTemplates.ts +++ b/shared/src/i18n/et/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Võrk ja märk', 'studio.templates.archetype.minimal-serif': 'Minimaalne', 'studio.templates.archetype.stamp-collage': 'Margid', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Ajakiri', + 'studio.templates.archetype.vintage-poster': 'Retroplakat', + 'studio.templates.archetype.night-film': 'Öine film', + 'studio.templates.archetype.field-notes': 'Välimärkmed', 'studio.templates.name.spineBandStitched': 'Õmmeldud riba', 'studio.templates.name.spineBandGingham': 'Ruuduline riba', 'studio.templates.name.spineBandScript': 'Riba ja käekiri', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Esiletõstetud võrk', 'studio.templates.name.gridColumns': 'Veergudega võrk', 'studio.templates.name.gridMosaic': 'Mosaiikvõrk', + 'studio.templates.name.spineBandPlate': 'Kleebitud tahvel', + 'studio.templates.name.posterPopSunDisc': 'Päikeseketas', + 'studio.templates.name.cutoutCircle': 'Väljalõigatud ring', + 'studio.templates.name.postcardGreetings': 'Tervituskaart', + 'studio.templates.name.gridBadgeTiles': 'Märkide ruudustik', + 'studio.templates.name.minimalSerifCameo': 'Ovaalne kamee', + 'studio.templates.name.stampCollageAirmail': 'Lennuposti ümbrik', + 'studio.templates.name.risoOverprint': 'Ületrükitud plakat', + 'studio.templates.name.risoHalftoneSun': 'Rastripäike', + 'studio.templates.name.risoZineStack': 'Zine’ide virn', + 'studio.templates.name.risoPinkPress': 'Roosa trükk', + 'studio.templates.name.editorialMasthead': 'Päisega kaas', + 'studio.templates.name.editorialCoverStory': 'Kaanelugu', + 'studio.templates.name.editorialSplit': 'Foto pealkirja kohal', + 'studio.templates.name.editorialHeadline': 'Pealkirjaga kaas', + 'studio.templates.name.vintagePosterPanorama': 'Plakatipanoraam', + 'studio.templates.name.vintagePosterArch': 'Kaar ja meri', + 'studio.templates.name.vintagePosterSunDisc': 'Päike küngaste kohal', + 'studio.templates.name.vintagePosterPeaks': 'Astmelised tipud', + 'studio.templates.name.nightFilmLetterbox': 'Laiekraanikaas', + 'studio.templates.name.nightFilmStrip': 'Filmilindiga kaas', + 'studio.templates.name.nightFilmTitleCard': 'Tiitlikaart', + 'studio.templates.name.nightFilmFadeOut': 'Hääbumine pimedusse', + 'studio.templates.name.fieldNotesTorn': 'Rebitud märkmikuleht', + 'studio.templates.name.fieldNotesPolaroid': 'Teibitud polaroid', + 'studio.templates.name.fieldNotesSpecimens': 'Teibitud leiud', + 'studio.templates.name.fieldNotesLabel': 'Märkmiku silt', + 'studio.templates.name.spineBandClothStory': 'Lugu riidel', + 'studio.templates.name.spineBandGinghamTrio': 'Ruudulise seljaga kolmik', + 'studio.templates.name.spineBandAlbum': 'Köidetud album', + 'studio.templates.name.posterPopHeadline': 'Plakati pealkiri', + 'studio.templates.name.posterPopPostcards': 'Kaldus fotod', + 'studio.templates.name.posterPopPhotoWall': 'Fotosein', + 'studio.templates.name.cutoutStoryPage': 'Väljalõigatud lugu', + 'studio.templates.name.cutoutTrio': 'Väljalõigatud kolmik', + 'studio.templates.name.cutoutScatter': 'Laiali fotod', + 'studio.templates.name.cutoutMosaic': 'Väljalõigatud mosaiik', + 'studio.templates.name.postcardAirmail': 'Lennupostikiri', + 'studio.templates.name.postcardRack': 'Postkaardiriiul', + 'studio.templates.name.gridBadgeLetter': 'Pitser ja lugu', + 'studio.templates.name.gridBadgeHeroSix': 'Peafoto ja kuus', + 'studio.templates.name.minimalSerifEssay': 'Vaikne essee', + 'studio.templates.name.minimalSerifTriptych': 'Kolm tahvlit', + 'studio.templates.name.stampCollageLetter': 'Templiga kiri', + 'studio.templates.name.stampCollageArchStamps': 'Kaar ja margid', + 'studio.templates.name.stampCollageSheet': 'Margileht', + 'studio.templates.name.risoStoryPlate': 'Lugu ja tahvel', + 'studio.templates.name.risoOffsetPair': 'Nihkes paar', + 'studio.templates.name.risoBlobTrio': 'Laigukolmik', + 'studio.templates.name.risoZineGrid': 'Zine’i ruudustik', + 'studio.templates.name.risoPrintScatter': 'Hajutatud trükid', + 'studio.templates.name.editorialFeatureOpener': 'Reportaaži avang', + 'studio.templates.name.editorialPullQuote': 'Esiletõstetud tsitaat', + 'studio.templates.name.editorialFeatureColumns': 'Reportaaž veergudes', + 'studio.templates.name.editorialPortfolio': 'Portfoolio kaksikleht', + 'studio.templates.name.editorialContactSheet': 'Kontaktleht', + 'studio.templates.name.vintagePosterStory': 'Plakat ja lugu', + 'studio.templates.name.vintagePosterTwin': 'Kaksikplakatid', + 'studio.templates.name.vintagePosterArcade': 'Kaaregalerii', + 'studio.templates.name.vintagePosterPanels': 'Paneelid ja künkad', + 'studio.templates.name.vintagePosterLabels': 'Pagasisildid', + 'studio.templates.name.nightFilmOpening': 'Avastseen', + 'studio.templates.name.nightFilmSubtitles': 'Filmi subtiitrid', + 'studio.templates.name.nightFilmReels': 'Hääbumine ja rullid', + 'studio.templates.name.nightFilmContact': 'Filmi kontaktleht', + 'studio.templates.name.nightFilmDoubleReel': 'Topeltrull', + 'studio.templates.name.fieldNotesDiary': 'Päevikuleht', + 'studio.templates.name.fieldNotesTrail': 'Märkmekaartide rada', + 'studio.templates.name.fieldNotesRoute': 'Marsruut ja polaroidid', + 'studio.templates.name.fieldNotesContact': 'Nummerdatud kontaktleht', + 'studio.templates.name.fieldNotesHerbarium': 'Herbaariumilehed', }; export default studioTemplates; diff --git a/shared/src/i18n/et/studioThemes.ts b/shared/src/i18n/et/studioThemes.ts index 4ae473a7f..8f0d0dd17 100644 --- a/shared/src/i18n/et/studioThemes.ts +++ b/shared/src/i18n/et/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Põhjamaine', 'studio.theme.name.alpine': 'Alpi', 'studio.theme.name.indiaStamp': 'Postmargikollaaž', + 'studio.theme.name.riso': 'Risotrükk', + 'studio.theme.name.magazine': 'Ajakiri', + 'studio.theme.name.retroTravel': 'Retroreis', + 'studio.theme.name.midnight': 'Kesköö', + 'studio.theme.name.fieldNotes': 'Välimärkmed', 'studio.theme.descr.posterPop': 'Kreemjas paber, korall ja päevalill, jõulised plakatipealkirjad', 'studio.theme.descr.cutout': 'Koobaltpaber, korall- ja liivakarva kujundid, valge kiri', 'studio.theme.descr.postcard': 'Mündiroheline paber, meresinine tint, templipunane ja käsikirjaline alapealkiri', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Helehall paber kiltkivi, ookri ja roosaga', 'studio.theme.descr.alpine': 'Lumivalge metsarohelise, rooste ja taevasinisega', 'studio.theme.descr.indiaStamp': 'Soe paber magenta, safrani ja sinakasrohelisega', + 'studio.theme.descr.riso': 'Kreemjas paber, risosinine ja neoonroosa üksteise peal', + 'studio.theme.descr.magazine': 'Murtud valge paber, must tint, üks punane ja suur päis', + 'studio.theme.descr.retroTravel': 'Vanutatud kreemjas paber oranži, sinakasrohelise ja sinepiga', + 'studio.theme.descr.midnight': 'Peaaegu must paber, soe valge kiri ja neoonaktsendid', + 'studio.theme.descr.fieldNotes': 'Pakkepaber, samblaroheline ja rooste, käekiri ja teip', 'studio.theme.panel': 'Teema', 'studio.theme.intro': 'Vali kogu raamatule üks välimus. Teemat järgivad värvid ja kiri muutuvad koos sellega, kõik muu jääb samaks.', diff --git a/shared/src/i18n/fr/studioTemplates.ts b/shared/src/i18n/fr/studioTemplates.ts index 1c089ac97..300d83ad1 100644 --- a/shared/src/i18n/fr/studioTemplates.ts +++ b/shared/src/i18n/fr/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Grille et badge', 'studio.templates.archetype.minimal-serif': 'Minimal', // same-as-en 'studio.templates.archetype.stamp-collage': 'Timbres', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Magazine', + 'studio.templates.archetype.vintage-poster': 'Affiche rétro', + 'studio.templates.archetype.night-film': 'Film de nuit', + 'studio.templates.archetype.field-notes': 'Carnet de terrain', 'studio.templates.name.spineBandStitched': 'Bande cousue', 'studio.templates.name.spineBandGingham': 'Bande vichy', 'studio.templates.name.spineBandScript': 'Bande et script', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Grille à la une', 'studio.templates.name.gridColumns': 'Grille en colonnes', 'studio.templates.name.gridMosaic': 'Grille mosaïque', + 'studio.templates.name.spineBandPlate': 'Planche contrecollée', + 'studio.templates.name.posterPopSunDisc': 'Disque solaire', + 'studio.templates.name.cutoutCircle': 'Cercle découpé', + 'studio.templates.name.postcardGreetings': 'Carte postale souvenir', + 'studio.templates.name.gridBadgeTiles': 'Grille de pastilles', + 'studio.templates.name.minimalSerifCameo': 'Camée ovale', + 'studio.templates.name.stampCollageAirmail': 'Enveloppe par avion', + 'studio.templates.name.risoOverprint': 'Affiche en surimpression', + 'studio.templates.name.risoHalftoneSun': 'Soleil en trame', + 'studio.templates.name.risoZineStack': 'Pile de fanzines', + 'studio.templates.name.risoPinkPress': 'Presse rose', + 'studio.templates.name.editorialMasthead': 'Couverture à manchette', + 'studio.templates.name.editorialCoverStory': 'Sujet de couverture', + 'studio.templates.name.editorialSplit': 'Photo sur gros titre', + 'studio.templates.name.editorialHeadline': 'Couverture gros titre', + 'studio.templates.name.vintagePosterPanorama': 'Panorama d’affiche', + 'studio.templates.name.vintagePosterArch': 'Arche et mer', + 'studio.templates.name.vintagePosterSunDisc': 'Soleil sur les collines', + 'studio.templates.name.vintagePosterPeaks': 'Sommets étagés', + 'studio.templates.name.nightFilmLetterbox': 'Couverture cinémascope', + 'studio.templates.name.nightFilmStrip': 'Couverture pellicule', + 'studio.templates.name.nightFilmTitleCard': 'Carton de titre', + 'studio.templates.name.nightFilmFadeOut': 'Fondu au noir', + 'studio.templates.name.fieldNotesTorn': 'Feuille de carnet déchirée', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid scotché', + 'studio.templates.name.fieldNotesSpecimens': 'Spécimens scotchés', + 'studio.templates.name.fieldNotesLabel': 'Étiquette de carnet', + 'studio.templates.name.spineBandClothStory': 'Récit sur toile', + 'studio.templates.name.spineBandGinghamTrio': 'Trio dos vichy', + 'studio.templates.name.spineBandAlbum': 'Album relié', + 'studio.templates.name.posterPopHeadline': 'Gros titre d’affiche', + 'studio.templates.name.posterPopPostcards': 'Tirages inclinés', + 'studio.templates.name.posterPopPhotoWall': 'Mur de photos', + 'studio.templates.name.cutoutStoryPage': 'Récit découpé', + 'studio.templates.name.cutoutTrio': 'Trio découpé', + 'studio.templates.name.cutoutScatter': 'Tirages éparpillés', + 'studio.templates.name.cutoutMosaic': 'Mosaïque découpée', + 'studio.templates.name.postcardAirmail': 'Lettre par avion', + 'studio.templates.name.postcardRack': 'Présentoir de cartes', + 'studio.templates.name.gridBadgeLetter': 'Sceau et récit', + 'studio.templates.name.gridBadgeHeroSix': 'Photo et six', + 'studio.templates.name.minimalSerifEssay': 'Essai paisible', + 'studio.templates.name.minimalSerifTriptych': 'Trois planches', + 'studio.templates.name.stampCollageLetter': 'Lettre oblitérée', + 'studio.templates.name.stampCollageArchStamps': 'Arche et timbres', + 'studio.templates.name.stampCollageSheet': 'Feuille de timbres', + 'studio.templates.name.risoStoryPlate': 'Récit et planche', + 'studio.templates.name.risoOffsetPair': 'Paire décalée', + 'studio.templates.name.risoBlobTrio': 'Trio de taches', + 'studio.templates.name.risoZineGrid': 'Grille de fanzine', + 'studio.templates.name.risoPrintScatter': 'Tirages épars', + 'studio.templates.name.editorialFeatureOpener': 'Ouverture de reportage', + 'studio.templates.name.editorialPullQuote': 'Citation en exergue', + 'studio.templates.name.editorialFeatureColumns': 'Reportage en colonnes', + 'studio.templates.name.editorialPortfolio': 'Double page portfolio', + 'studio.templates.name.editorialContactSheet': 'Planche-contact', + 'studio.templates.name.vintagePosterStory': 'Affiche et récit', + 'studio.templates.name.vintagePosterTwin': 'Affiches jumelles', + 'studio.templates.name.vintagePosterArcade': 'Galerie d’arcades', + 'studio.templates.name.vintagePosterPanels': 'Panneaux et collines', + 'studio.templates.name.vintagePosterLabels': 'Étiquettes de bagage', + 'studio.templates.name.nightFilmOpening': 'Scène d’ouverture', + 'studio.templates.name.nightFilmSubtitles': 'Sous-titres de film', + 'studio.templates.name.nightFilmReels': 'Fondu et bobines', + 'studio.templates.name.nightFilmContact': 'Planche-contact film', + 'studio.templates.name.nightFilmDoubleReel': 'Double bobine', + 'studio.templates.name.fieldNotesDiary': 'Page de journal', + 'studio.templates.name.fieldNotesTrail': 'Fil de fiches', + 'studio.templates.name.fieldNotesRoute': 'Itinéraire et polaroids', + 'studio.templates.name.fieldNotesContact': 'Planche-contact numérotée', + 'studio.templates.name.fieldNotesHerbarium': 'Planches d’herbier', }; export default studioTemplates; diff --git a/shared/src/i18n/fr/studioThemes.ts b/shared/src/i18n/fr/studioThemes.ts index 760e4f61c..86e8a3a67 100644 --- a/shared/src/i18n/fr/studioThemes.ts +++ b/shared/src/i18n/fr/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordique', 'studio.theme.name.alpine': 'Alpin', 'studio.theme.name.indiaStamp': 'Collage de timbres', + 'studio.theme.name.riso': 'Impression riso', + 'studio.theme.name.magazine': 'Magazine', // same-as-en + 'studio.theme.name.retroTravel': 'Voyage rétro', + 'studio.theme.name.midnight': 'Minuit', + 'studio.theme.name.fieldNotes': 'Carnet de terrain', 'studio.theme.descr.posterPop': 'Papier crème, corail et tournesol, titres d’affiche épais', 'studio.theme.descr.cutout': 'Papier cobalt, formes corail et sable, texte blanc', 'studio.theme.descr.postcard': 'Papier menthe, encre marine, rouge tampon et sous-titre manuscrit', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Papier gris pâle avec ardoise, ocre et rose', 'studio.theme.descr.alpine': 'Blanc neige avec vert forêt, rouille et bleu ciel', 'studio.theme.descr.indiaStamp': 'Papier chaud avec magenta, safran et bleu canard', + 'studio.theme.descr.riso': 'Papier crème, bleu riso et rose fluo en surimpression', + 'studio.theme.descr.magazine': 'Papier blanc cassé, encre noire, un rouge et un grand titre', + 'studio.theme.descr.retroTravel': 'Papier crème vieilli, orange, bleu canard et moutarde', + 'studio.theme.descr.midnight': 'Papier presque noir, texte blanc chaud et touches néon', + 'studio.theme.descr.fieldNotes': 'Papier kraft, vert mousse et rouille, écriture et ruban adhésif', 'studio.theme.panel': 'Thème', 'studio.theme.intro': 'Choisissez un style pour tout le livre. Les couleurs et le texte qui suivent le thème changent avec lui, tout le reste reste tel quel.', diff --git a/shared/src/i18n/gr/studioTemplates.ts b/shared/src/i18n/gr/studioTemplates.ts index 13d7e8314..6346d2e7d 100644 --- a/shared/src/i18n/gr/studioTemplates.ts +++ b/shared/src/i18n/gr/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Πλέγμα και σήμα', 'studio.templates.archetype.minimal-serif': 'Μινιμαλιστικό', 'studio.templates.archetype.stamp-collage': 'Γραμματόσημα', + 'studio.templates.archetype.riso': 'Ρίζο', + 'studio.templates.archetype.editorial': 'Περιοδικό', + 'studio.templates.archetype.vintage-poster': 'Ρετρό αφίσα', + 'studio.templates.archetype.night-film': 'Νυχτερινό φιλμ', + 'studio.templates.archetype.field-notes': 'Σημειώσεις πεδίου', 'studio.templates.name.spineBandStitched': 'Ραμμένη λωρίδα', 'studio.templates.name.spineBandGingham': 'Καρό λωρίδα', 'studio.templates.name.spineBandScript': 'Λωρίδα και καλλιγραφικά', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Πλέγμα με κεντρική φωτογραφία', 'studio.templates.name.gridColumns': 'Πλέγμα σε στήλες', 'studio.templates.name.gridMosaic': 'Πλέγμα μωσαϊκό', + 'studio.templates.name.spineBandPlate': 'Επικολλημένη εικόνα', + 'studio.templates.name.posterPopSunDisc': 'Ηλιακός δίσκος', + 'studio.templates.name.cutoutCircle': 'Κομμένος κύκλος', + 'studio.templates.name.postcardGreetings': 'Καρτ ποστάλ χαιρετισμών', + 'studio.templates.name.gridBadgeTiles': 'Πλέγμα σημάτων', + 'studio.templates.name.minimalSerifCameo': 'Οβάλ καμέα', + 'studio.templates.name.stampCollageAirmail': 'Φάκελος αεροπορικού', + 'studio.templates.name.risoOverprint': 'Αφίσα με υπερτύπωση', + 'studio.templates.name.risoHalftoneSun': 'Ράστερ ήλιος', + 'studio.templates.name.risoZineStack': 'Στοίβα ζιν', + 'studio.templates.name.risoPinkPress': 'Ροζ τύπωμα', + 'studio.templates.name.editorialMasthead': 'Εξώφυλλο με τίτλο εντύπου', + 'studio.templates.name.editorialCoverStory': 'Θέμα εξωφύλλου', + 'studio.templates.name.editorialSplit': 'Φωτογραφία πάνω από τίτλο', + 'studio.templates.name.editorialHeadline': 'Εξώφυλλο με πρωτοσέλιδο', + 'studio.templates.name.vintagePosterPanorama': 'Πανόραμα αφίσας', + 'studio.templates.name.vintagePosterArch': 'Αψίδα και θάλασσα', + 'studio.templates.name.vintagePosterSunDisc': 'Ήλιος πάνω από λόφους', + 'studio.templates.name.vintagePosterPeaks': 'Κλιμακωτές κορυφές', + 'studio.templates.name.nightFilmLetterbox': 'Ευρυοθονικό εξώφυλλο', + 'studio.templates.name.nightFilmStrip': 'Εξώφυλλο με φιλμ', + 'studio.templates.name.nightFilmTitleCard': 'Κάρτα τίτλων', + 'studio.templates.name.nightFilmFadeOut': 'Σβήσιμο στο μαύρο', + 'studio.templates.name.fieldNotesTorn': 'Σκισμένο φύλλο σημειωματάριου', + 'studio.templates.name.fieldNotesPolaroid': 'Πολαρόιντ με ταινία', + 'studio.templates.name.fieldNotesSpecimens': 'Δείγματα με ταινία', + 'studio.templates.name.fieldNotesLabel': 'Ετικέτα σημειωματάριου', + 'studio.templates.name.spineBandClothStory': 'Ιστορία σε ύφασμα', + 'studio.templates.name.spineBandGinghamTrio': 'Τριάδα με καρό ράχη', + 'studio.templates.name.spineBandAlbum': 'Δεμένο άλμπουμ', + 'studio.templates.name.posterPopHeadline': 'Τίτλος αφίσας', + 'studio.templates.name.posterPopPostcards': 'Γερτές φωτογραφίες', + 'studio.templates.name.posterPopPhotoWall': 'Τοίχος φωτογραφιών', + 'studio.templates.name.cutoutStoryPage': 'Κομμένη ιστορία', + 'studio.templates.name.cutoutTrio': 'Κομμένη τριάδα', + 'studio.templates.name.cutoutScatter': 'Σκόρπιες φωτογραφίες', + 'studio.templates.name.cutoutMosaic': 'Κομμένο ψηφιδωτό', + 'studio.templates.name.postcardAirmail': 'Αεροπορική επιστολή', + 'studio.templates.name.postcardRack': 'Σταντ καρτ ποστάλ', + 'studio.templates.name.gridBadgeLetter': 'Σφραγίδα και ιστορία', + 'studio.templates.name.gridBadgeHeroSix': 'Κεντρική και έξι', + 'studio.templates.name.minimalSerifEssay': 'Ήσυχο δοκίμιο', + 'studio.templates.name.minimalSerifTriptych': 'Τρεις εικόνες', + 'studio.templates.name.stampCollageLetter': 'Σφραγισμένη επιστολή', + 'studio.templates.name.stampCollageArchStamps': 'Αψίδα και γραμματόσημα', + 'studio.templates.name.stampCollageSheet': 'Φύλλο γραμματοσήμων', + 'studio.templates.name.risoStoryPlate': 'Ιστορία και εικόνα', + 'studio.templates.name.risoOffsetPair': 'Μετατοπισμένο ζεύγος', + 'studio.templates.name.risoBlobTrio': 'Τριάδα κηλίδων', + 'studio.templates.name.risoZineGrid': 'Πλέγμα ζιν', + 'studio.templates.name.risoPrintScatter': 'Σκόρπια τυπώματα', + 'studio.templates.name.editorialFeatureOpener': 'Άνοιγμα ρεπορτάζ', + 'studio.templates.name.editorialPullQuote': 'Αναδεδειγμένο απόσπασμα', + 'studio.templates.name.editorialFeatureColumns': 'Ρεπορτάζ σε στήλες', + 'studio.templates.name.editorialPortfolio': 'Δισέλιδο πορτφόλιο', + 'studio.templates.name.editorialContactSheet': 'Φύλλο επαφής', + 'studio.templates.name.vintagePosterStory': 'Αφίσα και ιστορία', + 'studio.templates.name.vintagePosterTwin': 'Δίδυμες αφίσες', + 'studio.templates.name.vintagePosterArcade': 'Στοά αψίδων', + 'studio.templates.name.vintagePosterPanels': 'Πάνελ και λόφοι', + 'studio.templates.name.vintagePosterLabels': 'Ετικέτες αποσκευών', + 'studio.templates.name.nightFilmOpening': 'Εναρκτήρια σκηνή', + 'studio.templates.name.nightFilmSubtitles': 'Υπότιτλοι ταινίας', + 'studio.templates.name.nightFilmReels': 'Σβήσιμο και μπομπίνες', + 'studio.templates.name.nightFilmContact': 'Φύλλο επαφής φιλμ', + 'studio.templates.name.nightFilmDoubleReel': 'Διπλή μπομπίνα', + 'studio.templates.name.fieldNotesDiary': 'Σελίδα ημερολογίου', + 'studio.templates.name.fieldNotesTrail': 'Μονοπάτι καρτών', + 'studio.templates.name.fieldNotesRoute': 'Διαδρομή και πολαρόιντ', + 'studio.templates.name.fieldNotesContact': 'Αριθμημένο φύλλο επαφής', + 'studio.templates.name.fieldNotesHerbarium': 'Φύλλα φυτολογίου', }; export default studioTemplates; diff --git a/shared/src/i18n/gr/studioThemes.ts b/shared/src/i18n/gr/studioThemes.ts index 9d569a19a..d25f2e7bb 100644 --- a/shared/src/i18n/gr/studioThemes.ts +++ b/shared/src/i18n/gr/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Σκανδιναβικό', 'studio.theme.name.alpine': 'Αλπικό', 'studio.theme.name.indiaStamp': 'Κολάζ γραμματοσήμων', + 'studio.theme.name.riso': 'Ριζογραφία', + 'studio.theme.name.magazine': 'Περιοδικό', + 'studio.theme.name.retroTravel': 'Ρετρό ταξίδι', + 'studio.theme.name.midnight': 'Μεσάνυχτα', + 'studio.theme.name.fieldNotes': 'Σημειώσεις πεδίου', 'studio.theme.descr.posterPop': 'Κρεμ χαρτί, κοραλλί και ηλιοτρόπιο, βαριοί τίτλοι αφίσας', 'studio.theme.descr.cutout': 'Χαρτί κοβαλτίου, σχήματα σε κοραλλί και άμμο, λευκά γράμματα', 'studio.theme.descr.postcard': 'Χαρτί μέντας, μπλε σκούρο μελάνι, κόκκινο σφραγίδας και χειρόγραφος υπότιτλος', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Ανοιχτό γκρι χαρτί με σχιστόλιθο, ώχρα και ροζ', 'studio.theme.descr.alpine': 'Χιονάτο λευκό με πράσινο του δάσους, σκουριά και γαλανό του ουρανού', 'studio.theme.descr.indiaStamp': 'Ζεστό χαρτί με ματζέντα, σαφράν και πετρόλ', + 'studio.theme.descr.riso': 'Κρεμ χαρτί, μπλε και φούξια νέον σε επικάλυψη', + 'studio.theme.descr.magazine': 'Υπόλευκο χαρτί, μαύρο μελάνι, ένα κόκκινο και μεγάλη κεφαλίδα', + 'studio.theme.descr.retroTravel': 'Παλιωμένο κρεμ χαρτί με πορτοκαλί, πετρόλ και μουσταρδί', + 'studio.theme.descr.midnight': 'Σχεδόν μαύρο χαρτί, ζεστά λευκά γράμματα και πινελιές νέον', + 'studio.theme.descr.fieldNotes': 'Χαρτί κραφτ, πράσινο βρύου και σκουριά, γραφή και ταινία', 'studio.theme.panel': 'Θέμα', 'studio.theme.intro': 'Διάλεξε ένα ύφος για όλο το βιβλίο. Τα χρώματα και τα γράμματα που ακολουθούν το θέμα αλλάζουν μαζί του, όλα τα άλλα μένουν ως έχουν.', diff --git a/shared/src/i18n/hu/studioTemplates.ts b/shared/src/i18n/hu/studioTemplates.ts index 7ea2c9504..2e6f40261 100644 --- a/shared/src/i18n/hu/studioTemplates.ts +++ b/shared/src/i18n/hu/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Rács és jelvény', 'studio.templates.archetype.minimal-serif': 'Minimál', 'studio.templates.archetype.stamp-collage': 'Bélyegek', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Magazin', + 'studio.templates.archetype.vintage-poster': 'Retró plakát', + 'studio.templates.archetype.night-film': 'Éjszakai film', + 'studio.templates.archetype.field-notes': 'Terepnapló', 'studio.templates.name.spineBandStitched': 'Varrott szalag', 'studio.templates.name.spineBandGingham': 'Kockás szalag', 'studio.templates.name.spineBandScript': 'Szalag kézírással', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Kiemelt rács', 'studio.templates.name.gridColumns': 'Oszlopos rács', 'studio.templates.name.gridMosaic': 'Mozaikrács', + 'studio.templates.name.spineBandPlate': 'Beragasztott tábla', + 'studio.templates.name.posterPopSunDisc': 'Napkorong', + 'studio.templates.name.cutoutCircle': 'Kivágott kör', + 'studio.templates.name.postcardGreetings': 'Üdvözlőlap', + 'studio.templates.name.gridBadgeTiles': 'Jelvényrács', + 'studio.templates.name.minimalSerifCameo': 'Ovális kámea', + 'studio.templates.name.stampCollageAirmail': 'Légipostás boríték', + 'studio.templates.name.risoOverprint': 'Felülnyomott plakát', + 'studio.templates.name.risoHalftoneSun': 'Raszteres nap', + 'studio.templates.name.risoZineStack': 'Zinekupac', + 'studio.templates.name.risoPinkPress': 'Rózsaszín nyomat', + 'studio.templates.name.editorialMasthead': 'Fejléces címlap', + 'studio.templates.name.editorialCoverStory': 'Címlapsztori', + 'studio.templates.name.editorialSplit': 'Fotó a cím felett', + 'studio.templates.name.editorialHeadline': 'Főcímes címlap', + 'studio.templates.name.vintagePosterPanorama': 'Plakátpanoráma', + 'studio.templates.name.vintagePosterArch': 'Ív és tenger', + 'studio.templates.name.vintagePosterSunDisc': 'Nap a dombok felett', + 'studio.templates.name.vintagePosterPeaks': 'Egymásra rakott csúcsok', + 'studio.templates.name.nightFilmLetterbox': 'Szélesvásznú címlap', + 'studio.templates.name.nightFilmStrip': 'Filmszalagos címlap', + 'studio.templates.name.nightFilmTitleCard': 'Címtábla', + 'studio.templates.name.nightFilmFadeOut': 'Elsötétítés', + 'studio.templates.name.fieldNotesTorn': 'Kitépett jegyzetlap', + 'studio.templates.name.fieldNotesPolaroid': 'Ragasztott polaroid', + 'studio.templates.name.fieldNotesSpecimens': 'Ragasztott leletek', + 'studio.templates.name.fieldNotesLabel': 'Jegyzetfüzet-címke', + 'studio.templates.name.spineBandClothStory': 'Történet vásznon', + 'studio.templates.name.spineBandGinghamTrio': 'Kockás gerinc hárommal', + 'studio.templates.name.spineBandAlbum': 'Kötött album', + 'studio.templates.name.posterPopHeadline': 'Plakátfőcím', + 'studio.templates.name.posterPopPostcards': 'Ferde nagyítások', + 'studio.templates.name.posterPopPhotoWall': 'Fotófal', + 'studio.templates.name.cutoutStoryPage': 'Kivágott történet', + 'studio.templates.name.cutoutTrio': 'Kivágott hármas', + 'studio.templates.name.cutoutScatter': 'Szétszórt nagyítások', + 'studio.templates.name.cutoutMosaic': 'Kivágott mozaik', + 'studio.templates.name.postcardAirmail': 'Légipostás levél', + 'studio.templates.name.postcardRack': 'Képeslaptartó', + 'studio.templates.name.gridBadgeLetter': 'Pecsét és történet', + 'studio.templates.name.gridBadgeHeroSix': 'Főkép és hat', + 'studio.templates.name.minimalSerifEssay': 'Csendes esszé', + 'studio.templates.name.minimalSerifTriptych': 'Három tábla', + 'studio.templates.name.stampCollageLetter': 'Lebélyegzett levél', + 'studio.templates.name.stampCollageArchStamps': 'Ív és bélyegek', + 'studio.templates.name.stampCollageSheet': 'Bélyegív', + 'studio.templates.name.risoStoryPlate': 'Történet és tábla', + 'studio.templates.name.risoOffsetPair': 'Elcsúszott pár', + 'studio.templates.name.risoBlobTrio': 'Folthármas', + 'studio.templates.name.risoZineGrid': 'Zine-rács', + 'studio.templates.name.risoPrintScatter': 'Szórt nyomatok', + 'studio.templates.name.editorialFeatureOpener': 'Riportnyitó', + 'studio.templates.name.editorialPullQuote': 'Kiemelt idézet', + 'studio.templates.name.editorialFeatureColumns': 'Riport hasábokban', + 'studio.templates.name.editorialPortfolio': 'Portfólió-oldalpár', + 'studio.templates.name.editorialContactSheet': 'Kontaktlap', + 'studio.templates.name.vintagePosterStory': 'Plakát és történet', + 'studio.templates.name.vintagePosterTwin': 'Ikerplakátok', + 'studio.templates.name.vintagePosterArcade': 'Ívsor', + 'studio.templates.name.vintagePosterPanels': 'Panelek és dombok', + 'studio.templates.name.vintagePosterLabels': 'Poggyászcímkék', + 'studio.templates.name.nightFilmOpening': 'Nyitójelenet', + 'studio.templates.name.nightFilmSubtitles': 'Filmfeliratok', + 'studio.templates.name.nightFilmReels': 'Elsötétítés és tekercsek', + 'studio.templates.name.nightFilmContact': 'Filmes kontaktlap', + 'studio.templates.name.nightFilmDoubleReel': 'Dupla tekercs', + 'studio.templates.name.fieldNotesDiary': 'Naplóoldal', + 'studio.templates.name.fieldNotesTrail': 'Jegyzetkártya-ösvény', + 'studio.templates.name.fieldNotesRoute': 'Útvonal és polaroidok', + 'studio.templates.name.fieldNotesContact': 'Számozott kontaktlap', + 'studio.templates.name.fieldNotesHerbarium': 'Herbáriumlapok', }; export default studioTemplates; diff --git a/shared/src/i18n/hu/studioThemes.ts b/shared/src/i18n/hu/studioThemes.ts index e664c84c4..a6d78c292 100644 --- a/shared/src/i18n/hu/studioThemes.ts +++ b/shared/src/i18n/hu/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Északi', 'studio.theme.name.alpine': 'Alpesi', 'studio.theme.name.indiaStamp': 'Bélyegkollázs', + 'studio.theme.name.riso': 'Risonyomat', + 'studio.theme.name.magazine': 'Magazin', + 'studio.theme.name.retroTravel': 'Retró utazás', + 'studio.theme.name.midnight': 'Éjfél', + 'studio.theme.name.fieldNotes': 'Terepnapló', 'studio.theme.descr.posterPop': 'Krémszínű papír, korall és napraforgó, vastag plakátcímek', 'studio.theme.descr.cutout': 'Kobaltpapír, korall és homok formák, fehér betűk', 'studio.theme.descr.postcard': 'Mentazöld papír, tengerészkék tinta, bélyegzővörös és kézírásos alcím', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Halványszürke papír palaszürkével, okkerrel és rózsaszínnel', 'studio.theme.descr.alpine': 'Hófehér erdőzölddel, rozsdával és égkékkel', 'studio.theme.descr.indiaStamp': 'Meleg papír bíborral, sáfránnyal és kékeszölddel', + 'studio.theme.descr.riso': 'Krémpapír, riso kék és neon rózsaszín egymásra nyomva', + 'studio.theme.descr.magazine': 'Törtfehér papír, fekete tinta, egy piros és nagy fejléc', + 'studio.theme.descr.retroTravel': 'Öregített krémpapír narancssárgával, kékeszölddel és mustárral', + 'studio.theme.descr.midnight': 'Majdnem fekete papír, meleg fehér betűk és neon akcentusok', + 'studio.theme.descr.fieldNotes': 'Csomagolópapír, mohazöld és rozsda, kézírás és ragasztószalag', 'studio.theme.panel': 'Téma', 'studio.theme.intro': 'Válassz megjelenést az egész könyvnek. A témát követő színek és betűk vele változnak, minden más marad, ahogy van.', diff --git a/shared/src/i18n/id/studioTemplates.ts b/shared/src/i18n/id/studioTemplates.ts index 5f3d4c939..0c7a84b3d 100644 --- a/shared/src/i18n/id/studioTemplates.ts +++ b/shared/src/i18n/id/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Kisi dan lencana', 'studio.templates.archetype.minimal-serif': 'Minimalis', 'studio.templates.archetype.stamp-collage': 'Perangko', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Majalah', + 'studio.templates.archetype.vintage-poster': 'Poster jadul', + 'studio.templates.archetype.night-film': 'Film malam', + 'studio.templates.archetype.field-notes': 'Catatan lapangan', 'studio.templates.name.spineBandStitched': 'Pita berjahit', 'studio.templates.name.spineBandGingham': 'Pita kotak-kotak', 'studio.templates.name.spineBandScript': 'Pita dan tulisan sambung', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Kisi unggulan', 'studio.templates.name.gridColumns': 'Kisi kolom', 'studio.templates.name.gridMosaic': 'Kisi mozaik', + 'studio.templates.name.spineBandPlate': 'Lembar tempel', + 'studio.templates.name.posterPopSunDisc': 'Cakram matahari', + 'studio.templates.name.cutoutCircle': 'Lingkaran guntingan', + 'studio.templates.name.postcardGreetings': 'Kartu pos salam', + 'studio.templates.name.gridBadgeTiles': 'Kisi lencana', + 'studio.templates.name.minimalSerifCameo': 'Kameo oval', + 'studio.templates.name.stampCollageAirmail': 'Amplop pos udara', + 'studio.templates.name.risoOverprint': 'Poster cetak timpa', + 'studio.templates.name.risoHalftoneSun': 'Matahari raster', + 'studio.templates.name.risoZineStack': 'Tumpukan zine', + 'studio.templates.name.risoPinkPress': 'Cetak merah muda', + 'studio.templates.name.editorialMasthead': 'Sampul dengan kepala majalah', + 'studio.templates.name.editorialCoverStory': 'Cerita sampul', + 'studio.templates.name.editorialSplit': 'Foto di atas judul', + 'studio.templates.name.editorialHeadline': 'Sampul judul besar', + 'studio.templates.name.vintagePosterPanorama': 'Panorama poster', + 'studio.templates.name.vintagePosterArch': 'Lengkung dan laut', + 'studio.templates.name.vintagePosterSunDisc': 'Matahari di atas bukit', + 'studio.templates.name.vintagePosterPeaks': 'Puncak bertumpuk', + 'studio.templates.name.nightFilmLetterbox': 'Sampul layar lebar', + 'studio.templates.name.nightFilmStrip': 'Sampul pita film', + 'studio.templates.name.nightFilmTitleCard': 'Kartu judul', + 'studio.templates.name.nightFilmFadeOut': 'Memudar ke hitam', + 'studio.templates.name.fieldNotesTorn': 'Lembar buku catatan sobek', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid berselotip', + 'studio.templates.name.fieldNotesSpecimens': 'Spesimen berselotip', + 'studio.templates.name.fieldNotesLabel': 'Label buku catatan', + 'studio.templates.name.spineBandClothStory': 'Cerita di atas kain', + 'studio.templates.name.spineBandGinghamTrio': 'Trio punggung kotak-kotak', + 'studio.templates.name.spineBandAlbum': 'Album berjilid', + 'studio.templates.name.posterPopHeadline': 'Judul poster', + 'studio.templates.name.posterPopPostcards': 'Cetakan miring', + 'studio.templates.name.posterPopPhotoWall': 'Dinding foto', + 'studio.templates.name.cutoutStoryPage': 'Cerita guntingan', + 'studio.templates.name.cutoutTrio': 'Trio guntingan', + 'studio.templates.name.cutoutScatter': 'Cetakan tersebar', + 'studio.templates.name.cutoutMosaic': 'Mozaik guntingan', + 'studio.templates.name.postcardAirmail': 'Surat pos udara', + 'studio.templates.name.postcardRack': 'Rak kartu pos', + 'studio.templates.name.gridBadgeLetter': 'Segel dan cerita', + 'studio.templates.name.gridBadgeHeroSix': 'Foto utama dan enam', + 'studio.templates.name.minimalSerifEssay': 'Esai tenang', + 'studio.templates.name.minimalSerifTriptych': 'Tiga lembar gambar', + 'studio.templates.name.stampCollageLetter': 'Surat berstempel', + 'studio.templates.name.stampCollageArchStamps': 'Lengkung dan perangko', + 'studio.templates.name.stampCollageSheet': 'Lembar perangko', + 'studio.templates.name.risoStoryPlate': 'Cerita dan gambar', + 'studio.templates.name.risoOffsetPair': 'Pasangan bergeser', + 'studio.templates.name.risoBlobTrio': 'Trio noda', + 'studio.templates.name.risoZineGrid': 'Kisi zine', + 'studio.templates.name.risoPrintScatter': 'Cetakan berserakan', + 'studio.templates.name.editorialFeatureOpener': 'Pembuka liputan', + 'studio.templates.name.editorialPullQuote': 'Kutipan sorotan', + 'studio.templates.name.editorialFeatureColumns': 'Liputan berkolom', + 'studio.templates.name.editorialPortfolio': 'Halaman ganda portofolio', + 'studio.templates.name.editorialContactSheet': 'Lembar kontak', + 'studio.templates.name.vintagePosterStory': 'Poster dan cerita', + 'studio.templates.name.vintagePosterTwin': 'Poster kembar', + 'studio.templates.name.vintagePosterArcade': 'Arkade lengkung', + 'studio.templates.name.vintagePosterPanels': 'Panel dan bukit', + 'studio.templates.name.vintagePosterLabels': 'Label koper', + 'studio.templates.name.nightFilmOpening': 'Adegan pembuka', + 'studio.templates.name.nightFilmSubtitles': 'Subtitel film', + 'studio.templates.name.nightFilmReels': 'Memudar dan gulungan', + 'studio.templates.name.nightFilmContact': 'Lembar kontak film', + 'studio.templates.name.nightFilmDoubleReel': 'Gulungan ganda', + 'studio.templates.name.fieldNotesDiary': 'Halaman buku harian', + 'studio.templates.name.fieldNotesTrail': 'Jejak kartu catatan', + 'studio.templates.name.fieldNotesRoute': 'Rute dan polaroid', + 'studio.templates.name.fieldNotesContact': 'Lembar kontak bernomor', + 'studio.templates.name.fieldNotesHerbarium': 'Lembar herbarium', }; export default studioTemplates; diff --git a/shared/src/i18n/id/studioThemes.ts b/shared/src/i18n/id/studioThemes.ts index 66588a244..b98e150f3 100644 --- a/shared/src/i18n/id/studioThemes.ts +++ b/shared/src/i18n/id/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordik', 'studio.theme.name.alpine': 'Alpen', 'studio.theme.name.indiaStamp': 'Kolase perangko', + 'studio.theme.name.riso': 'Cetak riso', + 'studio.theme.name.magazine': 'Majalah', + 'studio.theme.name.retroTravel': 'Perjalanan retro', + 'studio.theme.name.midnight': 'Tengah malam', + 'studio.theme.name.fieldNotes': 'Catatan lapangan', 'studio.theme.descr.posterPop': 'Kertas krem, koral dan bunga matahari, judul poster tebal', 'studio.theme.descr.cutout': 'Kertas kobalt, bentuk koral dan pasir, huruf putih', 'studio.theme.descr.postcard': 'Kertas mint, tinta biru dongker, merah stempel dan subjudul tulisan tangan', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Kertas abu-abu muda dengan batu tulis, oker dan merah muda', 'studio.theme.descr.alpine': 'Putih salju dengan hijau hutan, karat dan biru langit', 'studio.theme.descr.indiaStamp': 'Kertas hangat dengan magenta, kunyit dan hijau toska', + 'studio.theme.descr.riso': 'Kertas krem, biru riso dan merah muda neon bertumpuk', + 'studio.theme.descr.magazine': 'Kertas putih gading, tinta hitam, satu merah dan kepala besar', + 'studio.theme.descr.retroTravel': 'Kertas krem usang dengan oranye, hijau toska, dan mustard', + 'studio.theme.descr.midnight': 'Kertas nyaris hitam, huruf putih hangat, dan aksen neon', + 'studio.theme.descr.fieldNotes': 'Kertas kraft, hijau lumut dan karat, tulisan tangan dan selotip', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Pilih tampilan untuk seluruh buku. Warna dan huruf yang mengikuti tema ikut berubah, selebihnya tetap seperti semula.', diff --git a/shared/src/i18n/it/studioTemplates.ts b/shared/src/i18n/it/studioTemplates.ts index d3b25967a..42e1a45d4 100644 --- a/shared/src/i18n/it/studioTemplates.ts +++ b/shared/src/i18n/it/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Griglia e distintivo', 'studio.templates.archetype.minimal-serif': 'Minimal', // same-as-en 'studio.templates.archetype.stamp-collage': 'Francobolli', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Rivista', + 'studio.templates.archetype.vintage-poster': 'Poster vintage', + 'studio.templates.archetype.night-film': 'Film notturno', + 'studio.templates.archetype.field-notes': 'Taccuino di viaggio', 'studio.templates.name.spineBandStitched': 'Fascia cucita', 'studio.templates.name.spineBandGingham': 'Fascia a quadretti', 'studio.templates.name.spineBandScript': 'Fascia e corsivo', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Griglia in evidenza', 'studio.templates.name.gridColumns': 'Griglia a colonne', 'studio.templates.name.gridMosaic': 'Griglia a mosaico', + 'studio.templates.name.spineBandPlate': 'Tavola incollata', + 'studio.templates.name.posterPopSunDisc': 'Disco solare', + 'studio.templates.name.cutoutCircle': 'Cerchio ritagliato', + 'studio.templates.name.postcardGreetings': 'Cartolina di saluti', + 'studio.templates.name.gridBadgeTiles': 'Griglia di distintivi', + 'studio.templates.name.minimalSerifCameo': 'Cammeo ovale', + 'studio.templates.name.stampCollageAirmail': 'Busta per via aerea', + 'studio.templates.name.risoOverprint': 'Poster in sovrastampa', + 'studio.templates.name.risoHalftoneSun': 'Sole a retino', + 'studio.templates.name.risoZineStack': 'Pila di fanzine', + 'studio.templates.name.risoPinkPress': 'Stampa rosa', + 'studio.templates.name.editorialMasthead': 'Copertina con testata', + 'studio.templates.name.editorialCoverStory': 'Storia di copertina', + 'studio.templates.name.editorialSplit': 'Foto sopra il titolo', + 'studio.templates.name.editorialHeadline': 'Copertina col titolo', + 'studio.templates.name.vintagePosterPanorama': 'Panorama da poster', + 'studio.templates.name.vintagePosterArch': 'Arco e mare', + 'studio.templates.name.vintagePosterSunDisc': 'Sole sulle colline', + 'studio.templates.name.vintagePosterPeaks': 'Vette a strati', + 'studio.templates.name.nightFilmLetterbox': 'Copertina panoramica', + 'studio.templates.name.nightFilmStrip': 'Copertina a pellicola', + 'studio.templates.name.nightFilmTitleCard': 'Cartello del titolo', + 'studio.templates.name.nightFilmFadeOut': 'Dissolvenza al nero', + 'studio.templates.name.fieldNotesTorn': 'Foglio di taccuino strappato', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid con nastro', + 'studio.templates.name.fieldNotesSpecimens': 'Campioni con nastro', + 'studio.templates.name.fieldNotesLabel': 'Etichetta del taccuino', + 'studio.templates.name.spineBandClothStory': 'Racconto su tela', + 'studio.templates.name.spineBandGinghamTrio': 'Trio col dorso a quadretti', + 'studio.templates.name.spineBandAlbum': 'Album rilegato', + 'studio.templates.name.posterPopHeadline': 'Titolo da poster', + 'studio.templates.name.posterPopPostcards': 'Stampe inclinate', + 'studio.templates.name.posterPopPhotoWall': 'Parete di foto', + 'studio.templates.name.cutoutStoryPage': 'Racconto ritagliato', + 'studio.templates.name.cutoutTrio': 'Trio ritagliato', + 'studio.templates.name.cutoutScatter': 'Stampe sparse', + 'studio.templates.name.cutoutMosaic': 'Mosaico ritagliato', + 'studio.templates.name.postcardAirmail': 'Lettera per via aerea', + 'studio.templates.name.postcardRack': 'Espositore di cartoline', + 'studio.templates.name.gridBadgeLetter': 'Sigillo e racconto', + 'studio.templates.name.gridBadgeHeroSix': 'Foto grande e sei', + 'studio.templates.name.minimalSerifEssay': 'Saggio quieto', + 'studio.templates.name.minimalSerifTriptych': 'Tre tavole', + 'studio.templates.name.stampCollageLetter': 'Lettera timbrata', + 'studio.templates.name.stampCollageArchStamps': 'Arco e francobolli', + 'studio.templates.name.stampCollageSheet': 'Foglio di francobolli', + 'studio.templates.name.risoStoryPlate': 'Racconto e tavola', + 'studio.templates.name.risoOffsetPair': 'Coppia sfalsata', + 'studio.templates.name.risoBlobTrio': 'Trio di macchie', + 'studio.templates.name.risoZineGrid': 'Griglia da fanzine', + 'studio.templates.name.risoPrintScatter': 'Stampe sparpagliate', + 'studio.templates.name.editorialFeatureOpener': 'Apertura del servizio', + 'studio.templates.name.editorialPullQuote': 'Citazione in evidenza', + 'studio.templates.name.editorialFeatureColumns': 'Servizio a colonne', + 'studio.templates.name.editorialPortfolio': 'Doppia pagina portfolio', + 'studio.templates.name.editorialContactSheet': 'Provino a contatto', + 'studio.templates.name.vintagePosterStory': 'Poster e racconto', + 'studio.templates.name.vintagePosterTwin': 'Poster gemelli', + 'studio.templates.name.vintagePosterArcade': 'Porticato ad archi', + 'studio.templates.name.vintagePosterPanels': 'Pannelli e colline', + 'studio.templates.name.vintagePosterLabels': 'Etichette da valigia', + 'studio.templates.name.nightFilmOpening': 'Scena d’apertura', + 'studio.templates.name.nightFilmSubtitles': 'Sottotitoli del film', + 'studio.templates.name.nightFilmReels': 'Dissolvenza e bobine', + 'studio.templates.name.nightFilmContact': 'Provino del film', + 'studio.templates.name.nightFilmDoubleReel': 'Doppia bobina', + 'studio.templates.name.fieldNotesDiary': 'Pagina di diario', + 'studio.templates.name.fieldNotesTrail': 'Scia di schede', + 'studio.templates.name.fieldNotesRoute': 'Percorso e polaroid', + 'studio.templates.name.fieldNotesContact': 'Provino numerato', + 'studio.templates.name.fieldNotesHerbarium': 'Fogli d’erbario', }; export default studioTemplates; diff --git a/shared/src/i18n/it/studioThemes.ts b/shared/src/i18n/it/studioThemes.ts index 3dba5acca..62ad4bd81 100644 --- a/shared/src/i18n/it/studioThemes.ts +++ b/shared/src/i18n/it/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordico', 'studio.theme.name.alpine': 'Alpino', 'studio.theme.name.indiaStamp': 'Collage di francobolli', + 'studio.theme.name.riso': 'Stampa riso', + 'studio.theme.name.magazine': 'Rivista', + 'studio.theme.name.retroTravel': 'Viaggio rétro', + 'studio.theme.name.midnight': 'Mezzanotte', + 'studio.theme.name.fieldNotes': 'Taccuino di viaggio', 'studio.theme.descr.posterPop': 'Carta crema, corallo e girasole, titoli da poster corposi', 'studio.theme.descr.cutout': 'Carta cobalto, forme corallo e sabbia, testo bianco', 'studio.theme.descr.postcard': 'Carta menta, inchiostro blu navy, rosso timbro e un sottotitolo corsivo', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Carta grigio chiaro con ardesia, ocra e rosa', 'studio.theme.descr.alpine': 'Bianco neve con verde bosco, ruggine e azzurro cielo', 'studio.theme.descr.indiaStamp': 'Carta calda con magenta, zafferano e verde acqua', + 'studio.theme.descr.riso': 'Carta crema, blu riso e rosa fluo sovrastampati', + 'studio.theme.descr.magazine': 'Carta bianco sporco, inchiostro nero, un rosso e una grande testata', + 'studio.theme.descr.retroTravel': 'Carta crema invecchiata con arancio, verde petrolio e senape', + 'studio.theme.descr.midnight': 'Carta quasi nera, testo bianco caldo e accenti neon', + 'studio.theme.descr.fieldNotes': 'Carta kraft, verde muschio e ruggine, scrittura a mano e nastro', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Scegli uno stile per tutto il libro. Colori e testi che seguono il tema cambiano con esso, tutto il resto resta com’è.', diff --git a/shared/src/i18n/ja/studioTemplates.ts b/shared/src/i18n/ja/studioTemplates.ts index 28609d240..415c6c8d0 100644 --- a/shared/src/i18n/ja/studioTemplates.ts +++ b/shared/src/i18n/ja/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'グリッドとバッジ', 'studio.templates.archetype.minimal-serif': 'ミニマル', 'studio.templates.archetype.stamp-collage': '切手', + 'studio.templates.archetype.riso': 'リソ', + 'studio.templates.archetype.editorial': 'マガジン', + 'studio.templates.archetype.vintage-poster': 'ヴィンテージポスター', + 'studio.templates.archetype.night-film': 'ナイトフィルム', + 'studio.templates.archetype.field-notes': 'フィールドノート', 'studio.templates.name.spineBandStitched': 'ステッチの帯', 'studio.templates.name.spineBandGingham': 'ギンガムの帯', 'studio.templates.name.spineBandScript': '帯と筆記体', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': '主役のあるグリッド', 'studio.templates.name.gridColumns': '列のグリッド', 'studio.templates.name.gridMosaic': 'モザイクのグリッド', + 'studio.templates.name.spineBandPlate': '貼り込みの図版', + 'studio.templates.name.posterPopSunDisc': '太陽の円', + 'studio.templates.name.cutoutCircle': '丸い切り抜き', + 'studio.templates.name.postcardGreetings': 'あいさつのポストカード', + 'studio.templates.name.gridBadgeTiles': 'バッジのタイル', + 'studio.templates.name.minimalSerifCameo': '楕円のカメオ', + 'studio.templates.name.stampCollageAirmail': 'エアメールの封筒', + 'studio.templates.name.risoOverprint': '重ね刷りのポスター', + 'studio.templates.name.risoHalftoneSun': '網点の太陽', + 'studio.templates.name.risoZineStack': 'ジンの束', + 'studio.templates.name.risoPinkPress': 'ピンクの刷り', + 'studio.templates.name.editorialMasthead': '題字の表紙', + 'studio.templates.name.editorialCoverStory': '表紙の特集', + 'studio.templates.name.editorialSplit': '見出しの上の写真', + 'studio.templates.name.editorialHeadline': '見出しの表紙', + 'studio.templates.name.vintagePosterPanorama': 'ポスターのパノラマ', + 'studio.templates.name.vintagePosterArch': 'アーチと海', + 'studio.templates.name.vintagePosterSunDisc': '丘の上の太陽', + 'studio.templates.name.vintagePosterPeaks': '重なる山並み', + 'studio.templates.name.nightFilmLetterbox': 'レターボックスの表紙', + 'studio.templates.name.nightFilmStrip': 'フィルムの表紙', + 'studio.templates.name.nightFilmTitleCard': 'タイトルカード', + 'studio.templates.name.nightFilmFadeOut': '暗転', + 'studio.templates.name.fieldNotesTorn': '破れたノートの紙', + 'studio.templates.name.fieldNotesPolaroid': 'テープで留めたポラロイド', + 'studio.templates.name.fieldNotesSpecimens': 'テープで留めた標本', + 'studio.templates.name.fieldNotesLabel': 'ノートのラベル', + 'studio.templates.name.spineBandClothStory': '布の上の物語', + 'studio.templates.name.spineBandGinghamTrio': 'ギンガムの背と三枚', + 'studio.templates.name.spineBandAlbum': '製本アルバム', + 'studio.templates.name.posterPopHeadline': 'ポスターの見出し', + 'studio.templates.name.posterPopPostcards': '傾いたプリント', + 'studio.templates.name.posterPopPhotoWall': '写真の壁', + 'studio.templates.name.cutoutStoryPage': '切り抜きの物語', + 'studio.templates.name.cutoutTrio': '切り抜きの三枚', + 'studio.templates.name.cutoutScatter': '散らばるプリント', + 'studio.templates.name.cutoutMosaic': '切り抜きのモザイク', + 'studio.templates.name.postcardAirmail': 'エアメールの手紙', + 'studio.templates.name.postcardRack': 'ポストカードラック', + 'studio.templates.name.gridBadgeLetter': '封印と物語', + 'studio.templates.name.gridBadgeHeroSix': '主役と六枚', + 'studio.templates.name.minimalSerifEssay': '静かなエッセイ', + 'studio.templates.name.minimalSerifTriptych': '三枚の図版', + 'studio.templates.name.stampCollageLetter': '消印の手紙', + 'studio.templates.name.stampCollageArchStamps': 'アーチと切手', + 'studio.templates.name.stampCollageSheet': '切手シート', + 'studio.templates.name.risoStoryPlate': '物語と図版', + 'studio.templates.name.risoOffsetPair': 'ずれた二枚', + 'studio.templates.name.risoBlobTrio': 'しみの三枚', + 'studio.templates.name.risoZineGrid': 'ジンのグリッド', + 'studio.templates.name.risoPrintScatter': '散らした刷り', + 'studio.templates.name.editorialFeatureOpener': '特集の扉', + 'studio.templates.name.editorialPullQuote': 'プルクオート', + 'studio.templates.name.editorialFeatureColumns': '段組みの特集', + 'studio.templates.name.editorialPortfolio': 'ポートフォリオ見開き', + 'studio.templates.name.editorialContactSheet': 'コンタクトシート', + 'studio.templates.name.vintagePosterStory': 'ポスターと物語', + 'studio.templates.name.vintagePosterTwin': '双子のポスター', + 'studio.templates.name.vintagePosterArcade': 'アーチの回廊', + 'studio.templates.name.vintagePosterPanels': 'パネルと丘', + 'studio.templates.name.vintagePosterLabels': '荷物のラベル', + 'studio.templates.name.nightFilmOpening': 'オープニング', + 'studio.templates.name.nightFilmSubtitles': '映画の字幕', + 'studio.templates.name.nightFilmReels': '暗転とリール', + 'studio.templates.name.nightFilmContact': 'フィルムのコンタクト', + 'studio.templates.name.nightFilmDoubleReel': 'ダブルリール', + 'studio.templates.name.fieldNotesDiary': '日記のページ', + 'studio.templates.name.fieldNotesTrail': 'メモカードの道', + 'studio.templates.name.fieldNotesRoute': 'ルートとポラロイド', + 'studio.templates.name.fieldNotesContact': '番号付きコンタクト', + 'studio.templates.name.fieldNotesHerbarium': '植物標本の台紙', }; export default studioTemplates; diff --git a/shared/src/i18n/ja/studioThemes.ts b/shared/src/i18n/ja/studioThemes.ts index a8bbe7576..109814710 100644 --- a/shared/src/i18n/ja/studioThemes.ts +++ b/shared/src/i18n/ja/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': '北欧', 'studio.theme.name.alpine': 'アルパイン', 'studio.theme.name.indiaStamp': '切手コラージュ', + 'studio.theme.name.riso': 'リソグラフ印刷', + 'studio.theme.name.magazine': 'マガジン', + 'studio.theme.name.retroTravel': 'レトロトラベル', + 'studio.theme.name.midnight': 'ミッドナイト', + 'studio.theme.name.fieldNotes': 'フィールドノート', 'studio.theme.descr.posterPop': 'クリーム色の紙にコーラルとひまわり色、太いポスター見出し', 'studio.theme.descr.cutout': 'コバルトの紙にコーラルと砂色の形、白い文字', 'studio.theme.descr.postcard': 'ミントの紙に紺のインク、スタンプの赤と手書きのサブタイトル', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': '淡いグレーの紙にスレート、オーカー、ローズ', 'studio.theme.descr.alpine': 'スノーホワイトにフォレストグリーン、ラスト、スカイブルー', 'studio.theme.descr.indiaStamp': '温かな紙にマゼンタ、サフラン、ティール', + 'studio.theme.descr.riso': 'クリーム紙に、リソブルーと蛍光ピンクを重ね刷り', + 'studio.theme.descr.magazine': 'オフホワイトの紙、黒インク、ひとつの赤と大きな題字', + 'studio.theme.descr.retroTravel': '古びたクリーム紙に、オレンジ、ティール、マスタード', + 'studio.theme.descr.midnight': 'ほぼ黒の紙、温かみのある白文字、ネオンのアクセント', + 'studio.theme.descr.fieldNotes': 'クラフト紙、モスグリーンと錆色、手書き文字とテープ', 'studio.theme.panel': 'テーマ', 'studio.theme.intro': '本全体の見た目を選びます。テーマに従う色と書体は一緒に変わり、それ以外はそのままです。', 'studio.theme.themes': 'テーマ一覧', diff --git a/shared/src/i18n/ko/studioTemplates.ts b/shared/src/i18n/ko/studioTemplates.ts index ad5640e93..61d687712 100644 --- a/shared/src/i18n/ko/studioTemplates.ts +++ b/shared/src/i18n/ko/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': '격자와 배지', 'studio.templates.archetype.minimal-serif': '미니멀', 'studio.templates.archetype.stamp-collage': '우표', + 'studio.templates.archetype.riso': '리소', + 'studio.templates.archetype.editorial': '매거진', + 'studio.templates.archetype.vintage-poster': '빈티지 포스터', + 'studio.templates.archetype.night-film': '나이트 필름', + 'studio.templates.archetype.field-notes': '필드 노트', 'studio.templates.name.spineBandStitched': '박음질 띠', 'studio.templates.name.spineBandGingham': '깅엄 띠', 'studio.templates.name.spineBandScript': '띠와 손글씨', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': '주인공 격자', 'studio.templates.name.gridColumns': '단 격자', 'studio.templates.name.gridMosaic': '모자이크 격자', + 'studio.templates.name.spineBandPlate': '붙인 도판', + 'studio.templates.name.posterPopSunDisc': '해 원반', + 'studio.templates.name.cutoutCircle': '원형 오려내기', + 'studio.templates.name.postcardGreetings': '인사 엽서', + 'studio.templates.name.gridBadgeTiles': '배지 타일 그리드', + 'studio.templates.name.minimalSerifCameo': '타원 카메오', + 'studio.templates.name.stampCollageAirmail': '항공우편 봉투', + 'studio.templates.name.risoOverprint': '겹쳐 찍은 포스터', + 'studio.templates.name.risoHalftoneSun': '망점 태양', + 'studio.templates.name.risoZineStack': '진 더미', + 'studio.templates.name.risoPinkPress': '핑크 인쇄', + 'studio.templates.name.editorialMasthead': '제호 표지', + 'studio.templates.name.editorialCoverStory': '커버 스토리', + 'studio.templates.name.editorialSplit': '헤드라인 위 사진', + 'studio.templates.name.editorialHeadline': '헤드라인 표지', + 'studio.templates.name.vintagePosterPanorama': '포스터 파노라마', + 'studio.templates.name.vintagePosterArch': '아치와 바다', + 'studio.templates.name.vintagePosterSunDisc': '언덕 위의 해', + 'studio.templates.name.vintagePosterPeaks': '겹쳐진 봉우리', + 'studio.templates.name.nightFilmLetterbox': '레터박스 표지', + 'studio.templates.name.nightFilmStrip': '필름 스트립 표지', + 'studio.templates.name.nightFilmTitleCard': '타이틀 카드', + 'studio.templates.name.nightFilmFadeOut': '페이드 아웃', + 'studio.templates.name.fieldNotesTorn': '찢어진 노트 종이', + 'studio.templates.name.fieldNotesPolaroid': '테이프 붙인 폴라로이드', + 'studio.templates.name.fieldNotesSpecimens': '테이프 붙인 표본', + 'studio.templates.name.fieldNotesLabel': '노트 라벨', + 'studio.templates.name.spineBandClothStory': '천 위의 이야기', + 'studio.templates.name.spineBandGinghamTrio': '깅엄 책등 세 장', + 'studio.templates.name.spineBandAlbum': '제본 앨범', + 'studio.templates.name.posterPopHeadline': '포스터 헤드라인', + 'studio.templates.name.posterPopPostcards': '기울어진 사진', + 'studio.templates.name.posterPopPhotoWall': '사진 벽', + 'studio.templates.name.cutoutStoryPage': '오려낸 이야기', + 'studio.templates.name.cutoutTrio': '오려낸 세 장', + 'studio.templates.name.cutoutScatter': '흩어진 사진', + 'studio.templates.name.cutoutMosaic': '오려낸 모자이크', + 'studio.templates.name.postcardAirmail': '항공우편 편지', + 'studio.templates.name.postcardRack': '엽서 진열대', + 'studio.templates.name.gridBadgeLetter': '봉인과 이야기', + 'studio.templates.name.gridBadgeHeroSix': '메인 사진과 여섯 장', + 'studio.templates.name.minimalSerifEssay': '조용한 에세이', + 'studio.templates.name.minimalSerifTriptych': '세 장의 도판', + 'studio.templates.name.stampCollageLetter': '소인 찍힌 편지', + 'studio.templates.name.stampCollageArchStamps': '아치와 우표', + 'studio.templates.name.stampCollageSheet': '우표 시트', + 'studio.templates.name.risoStoryPlate': '이야기와 도판', + 'studio.templates.name.risoOffsetPair': '어긋난 두 장', + 'studio.templates.name.risoBlobTrio': '얼룩 세 장', + 'studio.templates.name.risoZineGrid': '진 그리드', + 'studio.templates.name.risoPrintScatter': '흩뿌린 인쇄', + 'studio.templates.name.editorialFeatureOpener': '특집 첫 면', + 'studio.templates.name.editorialPullQuote': '인용구 강조', + 'studio.templates.name.editorialFeatureColumns': '단으로 짠 특집', + 'studio.templates.name.editorialPortfolio': '포트폴리오 펼침면', + 'studio.templates.name.editorialContactSheet': '밀착 인화지', + 'studio.templates.name.vintagePosterStory': '포스터와 이야기', + 'studio.templates.name.vintagePosterTwin': '쌍둥이 포스터', + 'studio.templates.name.vintagePosterArcade': '아치 회랑', + 'studio.templates.name.vintagePosterPanels': '패널과 언덕', + 'studio.templates.name.vintagePosterLabels': '수하물 라벨', + 'studio.templates.name.nightFilmOpening': '오프닝 장면', + 'studio.templates.name.nightFilmSubtitles': '영화 자막', + 'studio.templates.name.nightFilmReels': '페이드와 릴', + 'studio.templates.name.nightFilmContact': '필름 밀착 인화', + 'studio.templates.name.nightFilmDoubleReel': '이중 릴', + 'studio.templates.name.fieldNotesDiary': '일기 페이지', + 'studio.templates.name.fieldNotesTrail': '메모 카드 길', + 'studio.templates.name.fieldNotesRoute': '경로와 폴라로이드', + 'studio.templates.name.fieldNotesContact': '번호 붙인 밀착 인화', + 'studio.templates.name.fieldNotesHerbarium': '식물 표본 용지', }; export default studioTemplates; diff --git a/shared/src/i18n/ko/studioThemes.ts b/shared/src/i18n/ko/studioThemes.ts index 2b8b5cf9e..0d8af9b49 100644 --- a/shared/src/i18n/ko/studioThemes.ts +++ b/shared/src/i18n/ko/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': '북유럽', 'studio.theme.name.alpine': '알파인', 'studio.theme.name.indiaStamp': '우표 콜라주', + 'studio.theme.name.riso': '리소 인쇄', + 'studio.theme.name.magazine': '매거진', + 'studio.theme.name.retroTravel': '레트로 여행', + 'studio.theme.name.midnight': '미드나잇', + 'studio.theme.name.fieldNotes': '필드 노트', 'studio.theme.descr.posterPop': '크림색 종이에 코럴과 해바라기색, 굵은 포스터 제목', 'studio.theme.descr.cutout': '코발트 종이에 코럴과 모래색 도형, 흰 글씨', 'studio.theme.descr.postcard': '민트 종이에 남색 잉크, 도장 빨강과 손글씨 부제', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': '연회색 종이에 슬레이트, 황토, 로즈', 'studio.theme.descr.alpine': '눈처럼 흰 바탕에 숲 초록, 녹색, 하늘색', 'studio.theme.descr.indiaStamp': '따뜻한 종이에 마젠타, 사프란, 청록', + 'studio.theme.descr.riso': '크림색 종이에 리소 블루와 형광 핑크를 겹쳐 인쇄', + 'studio.theme.descr.magazine': '미색 종이, 검은 잉크, 빨강 하나와 큰 제호', + 'studio.theme.descr.retroTravel': '빛바랜 크림색 종이에 주황, 청록, 머스터드', + 'studio.theme.descr.midnight': '거의 검은 종이, 따뜻한 흰 글자와 네온 포인트', + 'studio.theme.descr.fieldNotes': '크라프트지, 이끼색과 녹슨 색, 손글씨와 테이프', 'studio.theme.panel': '테마', 'studio.theme.intro': '책 전체의 분위기를 고르세요. 테마를 따르는 색과 글꼴은 함께 바뀌고 나머지는 그대로 남습니다.', 'studio.theme.themes': '테마 목록', diff --git a/shared/src/i18n/nl/studioTemplates.ts b/shared/src/i18n/nl/studioTemplates.ts index 13768c983..797055d68 100644 --- a/shared/src/i18n/nl/studioTemplates.ts +++ b/shared/src/i18n/nl/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Raster en badge', 'studio.templates.archetype.minimal-serif': 'Minimaal', 'studio.templates.archetype.stamp-collage': 'Postzegels', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Tijdschrift', + 'studio.templates.archetype.vintage-poster': 'Retroposter', + 'studio.templates.archetype.night-film': 'Nachtfilm', + 'studio.templates.archetype.field-notes': 'Veldnotities', 'studio.templates.name.spineBandStitched': 'Gestikte band', 'studio.templates.name.spineBandGingham': 'Band met ruitjes', 'studio.templates.name.spineBandScript': 'Band met handschrift', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Raster met blikvanger', 'studio.templates.name.gridColumns': 'Kolommenraster', 'studio.templates.name.gridMosaic': 'Mozaïekraster', + 'studio.templates.name.spineBandPlate': 'Ingeplakte plaat', + 'studio.templates.name.posterPopSunDisc': 'Zonneschijf', + 'studio.templates.name.cutoutCircle': 'Uitgeknipte cirkel', + 'studio.templates.name.postcardGreetings': 'Groetenkaart', + 'studio.templates.name.gridBadgeTiles': 'Raster met badges', + 'studio.templates.name.minimalSerifCameo': 'Ovale camee', + 'studio.templates.name.stampCollageAirmail': 'Luchtpostenvelop', + 'studio.templates.name.risoOverprint': 'Overdrukposter', + 'studio.templates.name.risoHalftoneSun': 'Gerasterde zon', + 'studio.templates.name.risoZineStack': 'Stapel zines', + 'studio.templates.name.risoPinkPress': 'Roze pers', + 'studio.templates.name.editorialMasthead': 'Omslag met titelkop', + 'studio.templates.name.editorialCoverStory': 'Coverstory', + 'studio.templates.name.editorialSplit': 'Foto boven kop', + 'studio.templates.name.editorialHeadline': 'Omslag met kop', + 'studio.templates.name.vintagePosterPanorama': 'Posterpanorama', + 'studio.templates.name.vintagePosterArch': 'Boog en zee', + 'studio.templates.name.vintagePosterSunDisc': 'Zon boven heuvels', + 'studio.templates.name.vintagePosterPeaks': 'Gestapelde toppen', + 'studio.templates.name.nightFilmLetterbox': 'Breedbeeldomslag', + 'studio.templates.name.nightFilmStrip': 'Filmstrookomslag', + 'studio.templates.name.nightFilmTitleCard': 'Titelkaart', + 'studio.templates.name.nightFilmFadeOut': 'Uitfaden naar zwart', + 'studio.templates.name.fieldNotesTorn': 'Gescheurd notitieblad', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid met tape', + 'studio.templates.name.fieldNotesSpecimens': 'Specimens met tape', + 'studio.templates.name.fieldNotesLabel': 'Notitieboeketiket', + 'studio.templates.name.spineBandClothStory': 'Verhaal op linnen', + 'studio.templates.name.spineBandGinghamTrio': 'Ruitrug met drie', + 'studio.templates.name.spineBandAlbum': 'Gebonden album', + 'studio.templates.name.posterPopHeadline': 'Posterkop', + 'studio.templates.name.posterPopPostcards': 'Schuine afdrukken', + 'studio.templates.name.posterPopPhotoWall': 'Fotomuur', + 'studio.templates.name.cutoutStoryPage': 'Uitgeknipt verhaal', + 'studio.templates.name.cutoutTrio': 'Uitgeknipt trio', + 'studio.templates.name.cutoutScatter': 'Verspreide afdrukken', + 'studio.templates.name.cutoutMosaic': 'Uitgeknipt mozaïek', + 'studio.templates.name.postcardAirmail': 'Luchtpostbrief', + 'studio.templates.name.postcardRack': 'Kaartenrek', + 'studio.templates.name.gridBadgeLetter': 'Zegel en verhaal', + 'studio.templates.name.gridBadgeHeroSix': 'Hoofdfoto en zes', + 'studio.templates.name.minimalSerifEssay': 'Stil essay', + 'studio.templates.name.minimalSerifTriptych': 'Drie platen', + 'studio.templates.name.stampCollageLetter': 'Afgestempelde brief', + 'studio.templates.name.stampCollageArchStamps': 'Boog en postzegels', + 'studio.templates.name.stampCollageSheet': 'Postzegelvel', + 'studio.templates.name.risoStoryPlate': 'Verhaal en plaat', + 'studio.templates.name.risoOffsetPair': 'Verschoven paar', + 'studio.templates.name.risoBlobTrio': 'Vlekkentrio', + 'studio.templates.name.risoZineGrid': 'Zineraster', + 'studio.templates.name.risoPrintScatter': 'Verstrooide afdrukken', + 'studio.templates.name.editorialFeatureOpener': 'Opening van reportage', + 'studio.templates.name.editorialPullQuote': 'Uitgelicht citaat', + 'studio.templates.name.editorialFeatureColumns': 'Reportage in kolommen', + 'studio.templates.name.editorialPortfolio': 'Portfoliospread', + 'studio.templates.name.editorialContactSheet': 'Contactblad', + 'studio.templates.name.vintagePosterStory': 'Poster en verhaal', + 'studio.templates.name.vintagePosterTwin': 'Tweelingposters', + 'studio.templates.name.vintagePosterArcade': 'Bogengalerij', + 'studio.templates.name.vintagePosterPanels': 'Panelen en heuvels', + 'studio.templates.name.vintagePosterLabels': 'Bagagelabels', + 'studio.templates.name.nightFilmOpening': 'Openingsscène', + 'studio.templates.name.nightFilmSubtitles': 'Filmondertitels', + 'studio.templates.name.nightFilmReels': 'Fade en spoelen', + 'studio.templates.name.nightFilmContact': 'Filmcontactblad', + 'studio.templates.name.nightFilmDoubleReel': 'Dubbele spoel', + 'studio.templates.name.fieldNotesDiary': 'Dagboekpagina', + 'studio.templates.name.fieldNotesTrail': 'Spoor van notitiekaarten', + 'studio.templates.name.fieldNotesRoute': 'Route en polaroids', + 'studio.templates.name.fieldNotesContact': 'Genummerd contactblad', + 'studio.templates.name.fieldNotesHerbarium': 'Herbariumvellen', }; export default studioTemplates; diff --git a/shared/src/i18n/nl/studioThemes.ts b/shared/src/i18n/nl/studioThemes.ts index ba4439179..fb60ae9cd 100644 --- a/shared/src/i18n/nl/studioThemes.ts +++ b/shared/src/i18n/nl/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Noords', 'studio.theme.name.alpine': 'Alpien', 'studio.theme.name.indiaStamp': 'Postzegelcollage', + 'studio.theme.name.riso': 'Risodruk', + 'studio.theme.name.magazine': 'Tijdschrift', + 'studio.theme.name.retroTravel': 'Retroreis', + 'studio.theme.name.midnight': 'Middernacht', + 'studio.theme.name.fieldNotes': 'Veldnotities', 'studio.theme.descr.posterPop': 'Crèmepapier, koraal en zonnebloem, zware postertitels', 'studio.theme.descr.cutout': 'Kobaltpapier, vormen in koraal en zand, witte letters', 'studio.theme.descr.postcard': 'Muntgroen papier, marineblauw, stempelrood en een ondertitel in schrijfletter', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Lichtgrijs papier met leisteen, oker en roze', 'studio.theme.descr.alpine': 'Sneeuwwit met bosgroen, roest en hemelsblauw', 'studio.theme.descr.indiaStamp': 'Warm papier met magenta, saffraan en petrol', + 'studio.theme.descr.riso': 'Crèmepapier, risoblauw en fluoroze over elkaar gedrukt', + 'studio.theme.descr.magazine': 'Gebroken wit papier, zwarte inkt, één rood en een grote kop', + 'studio.theme.descr.retroTravel': 'Vergeeld crèmepapier met oranje, petrol en mosterd', + 'studio.theme.descr.midnight': 'Bijna zwart papier, warmwitte letters en neonaccenten', + 'studio.theme.descr.fieldNotes': 'Kraftpapier, mosgroen en roest, handschrift en tape', 'studio.theme.panel': 'Thema', 'studio.theme.intro': 'Kies een stijl voor het hele boek. Kleuren en letters die het thema volgen veranderen mee, al het andere blijft zoals het is.', diff --git a/shared/src/i18n/pl/studioTemplates.ts b/shared/src/i18n/pl/studioTemplates.ts index 5f3a0b02c..257e00aa6 100644 --- a/shared/src/i18n/pl/studioTemplates.ts +++ b/shared/src/i18n/pl/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Siatka i plakietka', 'studio.templates.archetype.minimal-serif': 'Minimalizm', 'studio.templates.archetype.stamp-collage': 'Znaczki', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Magazyn', + 'studio.templates.archetype.vintage-poster': 'Plakat retro', + 'studio.templates.archetype.night-film': 'Nocny film', + 'studio.templates.archetype.field-notes': 'Notatki z podróży', 'studio.templates.name.spineBandStitched': 'Przeszyty pas', 'studio.templates.name.spineBandGingham': 'Pas w kratkę', 'studio.templates.name.spineBandScript': 'Pas z pismem odręcznym', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Siatka z głównym zdjęciem', 'studio.templates.name.gridColumns': 'Siatka kolumn', 'studio.templates.name.gridMosaic': 'Siatka mozaikowa', + 'studio.templates.name.spineBandPlate': 'Wklejona plansza', + 'studio.templates.name.posterPopSunDisc': 'Tarcza słońca', + 'studio.templates.name.cutoutCircle': 'Wycięte koło', + 'studio.templates.name.postcardGreetings': 'Pocztówka z pozdrowieniami', + 'studio.templates.name.gridBadgeTiles': 'Siatka odznak', + 'studio.templates.name.minimalSerifCameo': 'Owalna kamea', + 'studio.templates.name.stampCollageAirmail': 'Koperta lotnicza', + 'studio.templates.name.risoOverprint': 'Plakat z nadrukiem', + 'studio.templates.name.risoHalftoneSun': 'Rastrowe słońce', + 'studio.templates.name.risoZineStack': 'Stos zinów', + 'studio.templates.name.risoPinkPress': 'Różowa prasa', + 'studio.templates.name.editorialMasthead': 'Okładka z winietą', + 'studio.templates.name.editorialCoverStory': 'Temat z okładki', + 'studio.templates.name.editorialSplit': 'Zdjęcie nad nagłówkiem', + 'studio.templates.name.editorialHeadline': 'Okładka z nagłówkiem', + 'studio.templates.name.vintagePosterPanorama': 'Panorama plakatowa', + 'studio.templates.name.vintagePosterArch': 'Łuk i morze', + 'studio.templates.name.vintagePosterSunDisc': 'Słońce nad wzgórzami', + 'studio.templates.name.vintagePosterPeaks': 'Piętrowe szczyty', + 'studio.templates.name.nightFilmLetterbox': 'Okładka panoramiczna', + 'studio.templates.name.nightFilmStrip': 'Okładka z taśmą filmową', + 'studio.templates.name.nightFilmTitleCard': 'Plansza tytułowa', + 'studio.templates.name.nightFilmFadeOut': 'Ściemnienie', + 'studio.templates.name.fieldNotesTorn': 'Wyrwana kartka notesu', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid na taśmie', + 'studio.templates.name.fieldNotesSpecimens': 'Okazy na taśmie', + 'studio.templates.name.fieldNotesLabel': 'Etykieta notesu', + 'studio.templates.name.spineBandClothStory': 'Opowieść na płótnie', + 'studio.templates.name.spineBandGinghamTrio': 'Trójka z grzbietem w kratkę', + 'studio.templates.name.spineBandAlbum': 'Oprawiony album', + 'studio.templates.name.posterPopHeadline': 'Plakatowy nagłówek', + 'studio.templates.name.posterPopPostcards': 'Pochylone odbitki', + 'studio.templates.name.posterPopPhotoWall': 'Ściana zdjęć', + 'studio.templates.name.cutoutStoryPage': 'Wycinankowa opowieść', + 'studio.templates.name.cutoutTrio': 'Wycinankowa trójka', + 'studio.templates.name.cutoutScatter': 'Rozrzucone odbitki', + 'studio.templates.name.cutoutMosaic': 'Wycinankowa mozaika', + 'studio.templates.name.postcardAirmail': 'List lotniczy', + 'studio.templates.name.postcardRack': 'Stojak z pocztówkami', + 'studio.templates.name.gridBadgeLetter': 'Pieczęć i opowieść', + 'studio.templates.name.gridBadgeHeroSix': 'Główne zdjęcie i sześć', + 'studio.templates.name.minimalSerifEssay': 'Cichy esej', + 'studio.templates.name.minimalSerifTriptych': 'Trzy plansze', + 'studio.templates.name.stampCollageLetter': 'Ostemplowany list', + 'studio.templates.name.stampCollageArchStamps': 'Łuk i znaczki', + 'studio.templates.name.stampCollageSheet': 'Arkusz znaczków', + 'studio.templates.name.risoStoryPlate': 'Opowieść i plansza', + 'studio.templates.name.risoOffsetPair': 'Przesunięta para', + 'studio.templates.name.risoBlobTrio': 'Trójka plam', + 'studio.templates.name.risoZineGrid': 'Siatka zina', + 'studio.templates.name.risoPrintScatter': 'Rozsypane druki', + 'studio.templates.name.editorialFeatureOpener': 'Otwarcie reportażu', + 'studio.templates.name.editorialPullQuote': 'Wyróżniony cytat', + 'studio.templates.name.editorialFeatureColumns': 'Reportaż w kolumnach', + 'studio.templates.name.editorialPortfolio': 'Rozkładówka portfolio', + 'studio.templates.name.editorialContactSheet': 'Stykówka', + 'studio.templates.name.vintagePosterStory': 'Plakat i opowieść', + 'studio.templates.name.vintagePosterTwin': 'Bliźniacze plakaty', + 'studio.templates.name.vintagePosterArcade': 'Arkada łuków', + 'studio.templates.name.vintagePosterPanels': 'Panele i wzgórza', + 'studio.templates.name.vintagePosterLabels': 'Etykiety bagażowe', + 'studio.templates.name.nightFilmOpening': 'Scena otwarcia', + 'studio.templates.name.nightFilmSubtitles': 'Napisy filmowe', + 'studio.templates.name.nightFilmReels': 'Ściemnienie i szpule', + 'studio.templates.name.nightFilmContact': 'Filmowa stykówka', + 'studio.templates.name.nightFilmDoubleReel': 'Podwójna szpula', + 'studio.templates.name.fieldNotesDiary': 'Strona dziennika', + 'studio.templates.name.fieldNotesTrail': 'Ślad fiszek', + 'studio.templates.name.fieldNotesRoute': 'Trasa i polaroidy', + 'studio.templates.name.fieldNotesContact': 'Numerowana stykówka', + 'studio.templates.name.fieldNotesHerbarium': 'Arkusze zielnika', }; export default studioTemplates; diff --git a/shared/src/i18n/pl/studioThemes.ts b/shared/src/i18n/pl/studioThemes.ts index b885a5873..720459419 100644 --- a/shared/src/i18n/pl/studioThemes.ts +++ b/shared/src/i18n/pl/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordycki', 'studio.theme.name.alpine': 'Alpejski', 'studio.theme.name.indiaStamp': 'Kolaż znaczków', + 'studio.theme.name.riso': 'Druk riso', + 'studio.theme.name.magazine': 'Magazyn', + 'studio.theme.name.retroTravel': 'Podróż retro', + 'studio.theme.name.midnight': 'Północ', + 'studio.theme.name.fieldNotes': 'Notatki z podróży', 'studio.theme.descr.posterPop': 'Kremowy papier, koral i słonecznik, mocne plakatowe tytuły', 'studio.theme.descr.cutout': 'Kobaltowy papier, kształty w kolorze koralu i piasku, białe litery', 'studio.theme.descr.postcard': 'Miętowy papier, granatowy tusz, czerwień stempla i odręczny podtytuł', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Jasnoszary papier z łupkiem, ochrą i różem', 'studio.theme.descr.alpine': 'Śnieżna biel z zielenią lasu, rdzą i błękitem nieba', 'studio.theme.descr.indiaStamp': 'Ciepły papier z magentą, szafranem i morską zielenią', + 'studio.theme.descr.riso': 'Kremowy papier, niebieski riso i różowy fluo nadrukowane', + 'studio.theme.descr.magazine': 'Złamana biel, czarny tusz, jedna czerwień i duża winieta', + 'studio.theme.descr.retroTravel': 'Postarzały kremowy papier z pomarańczem, morskim i musztardą', + 'studio.theme.descr.midnight': 'Prawie czarny papier, ciepłobiały tekst i neonowe akcenty', + 'studio.theme.descr.fieldNotes': 'Papier pakowy, mchowa zieleń i rdza, pismo odręczne i taśma', 'studio.theme.panel': 'Motyw', 'studio.theme.intro': 'Wybierz wygląd całej książki. Kolory i pismo, które podążają za motywem, zmienią się razem z nim, reszta zostanie bez zmian.', diff --git a/shared/src/i18n/ru/studioTemplates.ts b/shared/src/i18n/ru/studioTemplates.ts index 13a498ede..dacfd802d 100644 --- a/shared/src/i18n/ru/studioTemplates.ts +++ b/shared/src/i18n/ru/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Сетка и значок', 'studio.templates.archetype.minimal-serif': 'Минимализм', 'studio.templates.archetype.stamp-collage': 'Марки', + 'studio.templates.archetype.riso': 'Ризо', + 'studio.templates.archetype.editorial': 'Журнал', + 'studio.templates.archetype.vintage-poster': 'Ретроплакат', + 'studio.templates.archetype.night-film': 'Ночное кино', + 'studio.templates.archetype.field-notes': 'Полевые заметки', 'studio.templates.name.spineBandStitched': 'Прошитая полоса', 'studio.templates.name.spineBandGingham': 'Полоса в клетку', 'studio.templates.name.spineBandScript': 'Полоса и рукописный шрифт', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Сетка с главным фото', 'studio.templates.name.gridColumns': 'Сетка колонками', 'studio.templates.name.gridMosaic': 'Мозаичная сетка', + 'studio.templates.name.spineBandPlate': 'Вклеенный снимок', + 'studio.templates.name.posterPopSunDisc': 'Солнечный диск', + 'studio.templates.name.cutoutCircle': 'Вырезанный круг', + 'studio.templates.name.postcardGreetings': 'Открытка с приветом', + 'studio.templates.name.gridBadgeTiles': 'Сетка значков', + 'studio.templates.name.minimalSerifCameo': 'Овальная камея', + 'studio.templates.name.stampCollageAirmail': 'Конверт авиапочты', + 'studio.templates.name.risoOverprint': 'Плакат с надпечаткой', + 'studio.templates.name.risoHalftoneSun': 'Растровое солнце', + 'studio.templates.name.risoZineStack': 'Стопка зинов', + 'studio.templates.name.risoPinkPress': 'Розовая печать', + 'studio.templates.name.editorialMasthead': 'Обложка с шапкой', + 'studio.templates.name.editorialCoverStory': 'Тема номера', + 'studio.templates.name.editorialSplit': 'Фото над заголовком', + 'studio.templates.name.editorialHeadline': 'Обложка с заголовком', + 'studio.templates.name.vintagePosterPanorama': 'Плакатная панорама', + 'studio.templates.name.vintagePosterArch': 'Арка и море', + 'studio.templates.name.vintagePosterSunDisc': 'Солнце над холмами', + 'studio.templates.name.vintagePosterPeaks': 'Ярусы вершин', + 'studio.templates.name.nightFilmLetterbox': 'Широкоэкранная обложка', + 'studio.templates.name.nightFilmStrip': 'Обложка с киноплёнкой', + 'studio.templates.name.nightFilmTitleCard': 'Титульная карточка', + 'studio.templates.name.nightFilmFadeOut': 'Затемнение', + 'studio.templates.name.fieldNotesTorn': 'Вырванный лист блокнота', + 'studio.templates.name.fieldNotesPolaroid': 'Полароид на скотче', + 'studio.templates.name.fieldNotesSpecimens': 'Находки на скотче', + 'studio.templates.name.fieldNotesLabel': 'Ярлык блокнота', + 'studio.templates.name.spineBandClothStory': 'Рассказ на ткани', + 'studio.templates.name.spineBandGinghamTrio': 'Тройка с клетчатым корешком', + 'studio.templates.name.spineBandAlbum': 'Переплетённый альбом', + 'studio.templates.name.posterPopHeadline': 'Плакатный заголовок', + 'studio.templates.name.posterPopPostcards': 'Наклонные снимки', + 'studio.templates.name.posterPopPhotoWall': 'Стена фотографий', + 'studio.templates.name.cutoutStoryPage': 'Рассказ из вырезок', + 'studio.templates.name.cutoutTrio': 'Тройка из вырезок', + 'studio.templates.name.cutoutScatter': 'Разбросанные снимки', + 'studio.templates.name.cutoutMosaic': 'Мозаика из вырезок', + 'studio.templates.name.postcardAirmail': 'Письмо авиапочтой', + 'studio.templates.name.postcardRack': 'Стойка с открытками', + 'studio.templates.name.gridBadgeLetter': 'Печать и рассказ', + 'studio.templates.name.gridBadgeHeroSix': 'Главное фото и шесть', + 'studio.templates.name.minimalSerifEssay': 'Тихое эссе', + 'studio.templates.name.minimalSerifTriptych': 'Три вклейки', + 'studio.templates.name.stampCollageLetter': 'Письмо со штемпелем', + 'studio.templates.name.stampCollageArchStamps': 'Арка и марки', + 'studio.templates.name.stampCollageSheet': 'Лист марок', + 'studio.templates.name.risoStoryPlate': 'Рассказ и вклейка', + 'studio.templates.name.risoOffsetPair': 'Смещённая пара', + 'studio.templates.name.risoBlobTrio': 'Тройка клякс', + 'studio.templates.name.risoZineGrid': 'Сетка зина', + 'studio.templates.name.risoPrintScatter': 'Россыпь оттисков', + 'studio.templates.name.editorialFeatureOpener': 'Начало репортажа', + 'studio.templates.name.editorialPullQuote': 'Выносная цитата', + 'studio.templates.name.editorialFeatureColumns': 'Репортаж в колонках', + 'studio.templates.name.editorialPortfolio': 'Разворот портфолио', + 'studio.templates.name.editorialContactSheet': 'Контактный лист', + 'studio.templates.name.vintagePosterStory': 'Плакат и рассказ', + 'studio.templates.name.vintagePosterTwin': 'Плакаты-близнецы', + 'studio.templates.name.vintagePosterArcade': 'Аркада арок', + 'studio.templates.name.vintagePosterPanels': 'Панели и холмы', + 'studio.templates.name.vintagePosterLabels': 'Багажные бирки', + 'studio.templates.name.nightFilmOpening': 'Первая сцена', + 'studio.templates.name.nightFilmSubtitles': 'Субтитры фильма', + 'studio.templates.name.nightFilmReels': 'Затемнение и бобины', + 'studio.templates.name.nightFilmContact': 'Контактный лист плёнки', + 'studio.templates.name.nightFilmDoubleReel': 'Двойная бобина', + 'studio.templates.name.fieldNotesDiary': 'Страница дневника', + 'studio.templates.name.fieldNotesTrail': 'След карточек', + 'studio.templates.name.fieldNotesRoute': 'Маршрут и полароиды', + 'studio.templates.name.fieldNotesContact': 'Нумерованный контактный лист', + 'studio.templates.name.fieldNotesHerbarium': 'Листы гербария', }; export default studioTemplates; diff --git a/shared/src/i18n/ru/studioThemes.ts b/shared/src/i18n/ru/studioThemes.ts index aa1f78871..1169f4d4d 100644 --- a/shared/src/i18n/ru/studioThemes.ts +++ b/shared/src/i18n/ru/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Северный', 'studio.theme.name.alpine': 'Альпийский', 'studio.theme.name.indiaStamp': 'Коллаж из марок', + 'studio.theme.name.riso': 'Ризография', + 'studio.theme.name.magazine': 'Журнал', + 'studio.theme.name.retroTravel': 'Ретропутешествие', + 'studio.theme.name.midnight': 'Полночь', + 'studio.theme.name.fieldNotes': 'Полевые заметки', 'studio.theme.descr.posterPop': 'Кремовая бумага, коралловый и подсолнечный, плотные плакатные заголовки', 'studio.theme.descr.cutout': 'Кобальтовая бумага, фигуры кораллового и песочного цвета, белый текст', 'studio.theme.descr.postcard': 'Мятная бумага, тёмно-синие чернила, штемпельный красный и рукописный подзаголовок', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Светло-серая бумага с грифельным, охрой и розовым', 'studio.theme.descr.alpine': 'Снежно-белый с лесным зелёным, ржавым и небесно-голубым', 'studio.theme.descr.indiaStamp': 'Тёплая бумага с пурпурным, шафрановым и бирюзовым', + 'studio.theme.descr.riso': 'Кремовая бумага, синяя и розовая неоновая краска внахлёст', + 'studio.theme.descr.magazine': 'Бумага цвета слоновой кости, чёрный цвет, один красный и крупный заголовок', + 'studio.theme.descr.retroTravel': 'Состаренная кремовая бумага с оранжевым, бирюзовым и горчичным', + 'studio.theme.descr.midnight': 'Почти чёрная бумага, тёплый белый текст и неоновые акценты', + 'studio.theme.descr.fieldNotes': 'Крафтовая бумага, цвет мха и ржавчины, почерк и скотч', 'studio.theme.panel': 'Тема', 'studio.theme.intro': 'Выберите стиль для всей книги. Цвета и шрифты, которые следуют теме, меняются вместе с ней, всё остальное остаётся как есть.', diff --git a/shared/src/i18n/sk/studioTemplates.ts b/shared/src/i18n/sk/studioTemplates.ts index 88dc62399..f18cae612 100644 --- a/shared/src/i18n/sk/studioTemplates.ts +++ b/shared/src/i18n/sk/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Mriežka a odznak', 'studio.templates.archetype.minimal-serif': 'Minimalizmus', 'studio.templates.archetype.stamp-collage': 'Známky', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Časopis', + 'studio.templates.archetype.vintage-poster': 'Retro plagát', + 'studio.templates.archetype.night-film': 'Nočný film', + 'studio.templates.archetype.field-notes': 'Terénne zápisky', 'studio.templates.name.spineBandStitched': 'Prešívaný pás', 'studio.templates.name.spineBandGingham': 'Kockovaný pás', 'studio.templates.name.spineBandScript': 'Pás s písaným písmom', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Mriežka s hlavnou fotkou', 'studio.templates.name.gridColumns': 'Stĺpcová mriežka', 'studio.templates.name.gridMosaic': 'Mozaiková mriežka', + 'studio.templates.name.spineBandPlate': 'Vlepená tabuľa', + 'studio.templates.name.posterPopSunDisc': 'Slnečný kotúč', + 'studio.templates.name.cutoutCircle': 'Vystrihnutý kruh', + 'studio.templates.name.postcardGreetings': 'Pozdrav z ciest', + 'studio.templates.name.gridBadgeTiles': 'Mriežka odznakov', + 'studio.templates.name.minimalSerifCameo': 'Oválna kamea', + 'studio.templates.name.stampCollageAirmail': 'Obálka leteckej pošty', + 'studio.templates.name.risoOverprint': 'Plagát s pretlačou', + 'studio.templates.name.risoHalftoneSun': 'Rastrové slnko', + 'studio.templates.name.risoZineStack': 'Kôpka zinov', + 'studio.templates.name.risoPinkPress': 'Ružová tlač', + 'studio.templates.name.editorialMasthead': 'Obálka s hlavičkou', + 'studio.templates.name.editorialCoverStory': 'Titulný príbeh', + 'studio.templates.name.editorialSplit': 'Fotka nad titulkom', + 'studio.templates.name.editorialHeadline': 'Obálka s titulkom', + 'studio.templates.name.vintagePosterPanorama': 'Plagátové panoráma', + 'studio.templates.name.vintagePosterArch': 'Oblúk a more', + 'studio.templates.name.vintagePosterSunDisc': 'Slnko nad kopcami', + 'studio.templates.name.vintagePosterPeaks': 'Vrstvené štíty', + 'studio.templates.name.nightFilmLetterbox': 'Širokouhlá obálka', + 'studio.templates.name.nightFilmStrip': 'Obálka s filmovým pásom', + 'studio.templates.name.nightFilmTitleCard': 'Titulková karta', + 'studio.templates.name.nightFilmFadeOut': 'Stmievačka', + 'studio.templates.name.fieldNotesTorn': 'Vytrhnutý list zápisníka', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid na páske', + 'studio.templates.name.fieldNotesSpecimens': 'Vzorky na páske', + 'studio.templates.name.fieldNotesLabel': 'Štítok zápisníka', + 'studio.templates.name.spineBandClothStory': 'Príbeh na plátne', + 'studio.templates.name.spineBandGinghamTrio': 'Trojica s kockovaným chrbtom', + 'studio.templates.name.spineBandAlbum': 'Viazaný album', + 'studio.templates.name.posterPopHeadline': 'Plagátový titulok', + 'studio.templates.name.posterPopPostcards': 'Šikmé fotky', + 'studio.templates.name.posterPopPhotoWall': 'Stena fotiek', + 'studio.templates.name.cutoutStoryPage': 'Vystrihnutý príbeh', + 'studio.templates.name.cutoutTrio': 'Vystrihnutá trojica', + 'studio.templates.name.cutoutScatter': 'Rozhádzané fotky', + 'studio.templates.name.cutoutMosaic': 'Vystrihnutá mozaika', + 'studio.templates.name.postcardAirmail': 'List leteckou poštou', + 'studio.templates.name.postcardRack': 'Stojan s pohľadnicami', + 'studio.templates.name.gridBadgeLetter': 'Pečať a príbeh', + 'studio.templates.name.gridBadgeHeroSix': 'Hlavná fotka a šesť', + 'studio.templates.name.minimalSerifEssay': 'Tichá esej', + 'studio.templates.name.minimalSerifTriptych': 'Tri tabule', + 'studio.templates.name.stampCollageLetter': 'Opečiatkovaný list', + 'studio.templates.name.stampCollageArchStamps': 'Oblúk a známky', + 'studio.templates.name.stampCollageSheet': 'Hárok známok', + 'studio.templates.name.risoStoryPlate': 'Príbeh a tabuľa', + 'studio.templates.name.risoOffsetPair': 'Posunutá dvojica', + 'studio.templates.name.risoBlobTrio': 'Trojica škvŕn', + 'studio.templates.name.risoZineGrid': 'Mriežka zinu', + 'studio.templates.name.risoPrintScatter': 'Roztrúsené tlače', + 'studio.templates.name.editorialFeatureOpener': 'Úvod reportáže', + 'studio.templates.name.editorialPullQuote': 'Zvýraznený citát', + 'studio.templates.name.editorialFeatureColumns': 'Reportáž v stĺpcoch', + 'studio.templates.name.editorialPortfolio': 'Dvojstrana portfólia', + 'studio.templates.name.editorialContactSheet': 'Kontaktný hárok', + 'studio.templates.name.vintagePosterStory': 'Plagát a príbeh', + 'studio.templates.name.vintagePosterTwin': 'Plagátové dvojičky', + 'studio.templates.name.vintagePosterArcade': 'Arkáda oblúkov', + 'studio.templates.name.vintagePosterPanels': 'Panely a kopce', + 'studio.templates.name.vintagePosterLabels': 'Batožinové štítky', + 'studio.templates.name.nightFilmOpening': 'Úvodná scéna', + 'studio.templates.name.nightFilmSubtitles': 'Filmové titulky', + 'studio.templates.name.nightFilmReels': 'Stmievačka a cievky', + 'studio.templates.name.nightFilmContact': 'Filmový kontaktný hárok', + 'studio.templates.name.nightFilmDoubleReel': 'Dvojitá cievka', + 'studio.templates.name.fieldNotesDiary': 'Stránka denníka', + 'studio.templates.name.fieldNotesTrail': 'Stopa kartičiek', + 'studio.templates.name.fieldNotesRoute': 'Trasa a polaroidy', + 'studio.templates.name.fieldNotesContact': 'Číslovaný kontaktný hárok', + 'studio.templates.name.fieldNotesHerbarium': 'Herbárové hárky', }; export default studioTemplates; diff --git a/shared/src/i18n/sk/studioThemes.ts b/shared/src/i18n/sk/studioThemes.ts index 4907a879e..e2b41db4e 100644 --- a/shared/src/i18n/sk/studioThemes.ts +++ b/shared/src/i18n/sk/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Severský', 'studio.theme.name.alpine': 'Alpský', 'studio.theme.name.indiaStamp': 'Koláž známok', + 'studio.theme.name.riso': 'Risotlač', + 'studio.theme.name.magazine': 'Časopis', + 'studio.theme.name.retroTravel': 'Retro cestovanie', + 'studio.theme.name.midnight': 'Polnoc', + 'studio.theme.name.fieldNotes': 'Terénne zápisky', 'studio.theme.descr.posterPop': 'Krémový papier, koralová a slnečnicová, výrazné plagátové nadpisy', 'studio.theme.descr.cutout': 'Kobaltový papier, tvary v koralovej a pieskovej, biele písmo', 'studio.theme.descr.postcard': 'Mätový papier, námornícka modrá, pečiatková červená a písaný podtitul', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Svetlosivý papier s bridlicovou, okrovou a ružovou', 'studio.theme.descr.alpine': 'Snehovo biela s lesnou zelenou, hrdzavou a nebeskou modrou', 'studio.theme.descr.indiaStamp': 'Teplý papier s purpurovou, šafránovou a petrolejovou', + 'studio.theme.descr.riso': 'Krémový papier, modrá riso a fluo ružová cez seba', + 'studio.theme.descr.magazine': 'Lomená biela, čierna farba, jedna červená a veľká hlavička', + 'studio.theme.descr.retroTravel': 'Zažltnutý krémový papier s oranžovou, petrolejovou a horčicovou', + 'studio.theme.descr.midnight': 'Takmer čierny papier, teplo biele písmo a neónové akcenty', + 'studio.theme.descr.fieldNotes': 'Baliaci papier, machová zeleň a hrdza, rukopis a páska', 'studio.theme.panel': 'Motív', 'studio.theme.intro': 'Vyberte vzhľad pre celú knihu. Farby a písmo, ktoré motív nasledujú, sa zmenia s ním, všetko ostatné zostane, ako je.', diff --git a/shared/src/i18n/sv/studioTemplates.ts b/shared/src/i18n/sv/studioTemplates.ts index 5e09dddac..6f763a906 100644 --- a/shared/src/i18n/sv/studioTemplates.ts +++ b/shared/src/i18n/sv/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Rutnät och märke', 'studio.templates.archetype.minimal-serif': 'Minimal', // same-as-en 'studio.templates.archetype.stamp-collage': 'Frimärken', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Tidskrift', + 'studio.templates.archetype.vintage-poster': 'Retroaffisch', + 'studio.templates.archetype.night-film': 'Nattfilm', + 'studio.templates.archetype.field-notes': 'Fältanteckningar', 'studio.templates.name.spineBandStitched': 'Sytt band', 'studio.templates.name.spineBandGingham': 'Rutigt band', 'studio.templates.name.spineBandScript': 'Band med skrivstil', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Rutnät med huvudbild', 'studio.templates.name.gridColumns': 'Kolumnrutnät', 'studio.templates.name.gridMosaic': 'Mosaikrutnät', + 'studio.templates.name.spineBandPlate': 'Inklistrad plansch', + 'studio.templates.name.posterPopSunDisc': 'Solskiva', + 'studio.templates.name.cutoutCircle': 'Urklippt cirkel', + 'studio.templates.name.postcardGreetings': 'Hälsningsvykort', + 'studio.templates.name.gridBadgeTiles': 'Rutnät med märken', + 'studio.templates.name.minimalSerifCameo': 'Oval kamé', + 'studio.templates.name.stampCollageAirmail': 'Flygpostkuvert', + 'studio.templates.name.risoOverprint': 'Övertrycksaffisch', + 'studio.templates.name.risoHalftoneSun': 'Rastrerad sol', + 'studio.templates.name.risoZineStack': 'Zinehög', + 'studio.templates.name.risoPinkPress': 'Rosa tryck', + 'studio.templates.name.editorialMasthead': 'Omslag med titelhuvud', + 'studio.templates.name.editorialCoverStory': 'Omslagsreportage', + 'studio.templates.name.editorialSplit': 'Foto över rubrik', + 'studio.templates.name.editorialHeadline': 'Rubrikomslag', + 'studio.templates.name.vintagePosterPanorama': 'Affischpanorama', + 'studio.templates.name.vintagePosterArch': 'Valv och hav', + 'studio.templates.name.vintagePosterSunDisc': 'Sol över kullar', + 'studio.templates.name.vintagePosterPeaks': 'Staplade toppar', + 'studio.templates.name.nightFilmLetterbox': 'Bredbildsomslag', + 'studio.templates.name.nightFilmStrip': 'Filmremseomslag', + 'studio.templates.name.nightFilmTitleCard': 'Titelskylt', + 'studio.templates.name.nightFilmFadeOut': 'Tona till svart', + 'studio.templates.name.fieldNotesTorn': 'Utriven anteckningssida', + 'studio.templates.name.fieldNotesPolaroid': 'Tejpad polaroid', + 'studio.templates.name.fieldNotesSpecimens': 'Tejpade fynd', + 'studio.templates.name.fieldNotesLabel': 'Anteckningsboksetikett', + 'studio.templates.name.spineBandClothStory': 'Berättelse på tyg', + 'studio.templates.name.spineBandGinghamTrio': 'Rutig rygg med tre', + 'studio.templates.name.spineBandAlbum': 'Inbundet album', + 'studio.templates.name.posterPopHeadline': 'Affischrubrik', + 'studio.templates.name.posterPopPostcards': 'Lutande kopior', + 'studio.templates.name.posterPopPhotoWall': 'Fotovägg', + 'studio.templates.name.cutoutStoryPage': 'Urklippt berättelse', + 'studio.templates.name.cutoutTrio': 'Urklippt trio', + 'studio.templates.name.cutoutScatter': 'Utspridda kopior', + 'studio.templates.name.cutoutMosaic': 'Urklippt mosaik', + 'studio.templates.name.postcardAirmail': 'Flygpostbrev', + 'studio.templates.name.postcardRack': 'Vykortsställ', + 'studio.templates.name.gridBadgeLetter': 'Sigill och berättelse', + 'studio.templates.name.gridBadgeHeroSix': 'Huvudbild och sex', + 'studio.templates.name.minimalSerifEssay': 'Stilla essä', + 'studio.templates.name.minimalSerifTriptych': 'Tre planscher', + 'studio.templates.name.stampCollageLetter': 'Stämplat brev', + 'studio.templates.name.stampCollageArchStamps': 'Valv och frimärken', + 'studio.templates.name.stampCollageSheet': 'Frimärksark', + 'studio.templates.name.risoStoryPlate': 'Berättelse och plansch', + 'studio.templates.name.risoOffsetPair': 'Förskjutet par', + 'studio.templates.name.risoBlobTrio': 'Fläcktrio', + 'studio.templates.name.risoZineGrid': 'Zinerutnät', + 'studio.templates.name.risoPrintScatter': 'Spridda tryck', + 'studio.templates.name.editorialFeatureOpener': 'Reportageöppning', + 'studio.templates.name.editorialPullQuote': 'Framlyft citat', + 'studio.templates.name.editorialFeatureColumns': 'Reportage i spalter', + 'studio.templates.name.editorialPortfolio': 'Portfoliouppslag', + 'studio.templates.name.editorialContactSheet': 'Kontaktkopia', + 'studio.templates.name.vintagePosterStory': 'Affisch och berättelse', + 'studio.templates.name.vintagePosterTwin': 'Tvillingaffischer', + 'studio.templates.name.vintagePosterArcade': 'Valvgång', + 'studio.templates.name.vintagePosterPanels': 'Paneler och kullar', + 'studio.templates.name.vintagePosterLabels': 'Bagagelappar', + 'studio.templates.name.nightFilmOpening': 'Öppningsscen', + 'studio.templates.name.nightFilmSubtitles': 'Filmtextning', + 'studio.templates.name.nightFilmReels': 'Tona ut och rullar', + 'studio.templates.name.nightFilmContact': 'Filmkontaktkopia', + 'studio.templates.name.nightFilmDoubleReel': 'Dubbelrulle', + 'studio.templates.name.fieldNotesDiary': 'Dagbokssida', + 'studio.templates.name.fieldNotesTrail': 'Spår av anteckningskort', + 'studio.templates.name.fieldNotesRoute': 'Rutt och polaroider', + 'studio.templates.name.fieldNotesContact': 'Numrerad kontaktkopia', + 'studio.templates.name.fieldNotesHerbarium': 'Herbarieark', }; export default studioTemplates; diff --git a/shared/src/i18n/sv/studioThemes.ts b/shared/src/i18n/sv/studioThemes.ts index 48b6a4b72..64c3092ba 100644 --- a/shared/src/i18n/sv/studioThemes.ts +++ b/shared/src/i18n/sv/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Nordisk', 'studio.theme.name.alpine': 'Alpin', 'studio.theme.name.indiaStamp': 'Frimärkskollage', + 'studio.theme.name.riso': 'Risotryck', + 'studio.theme.name.magazine': 'Magasin', + 'studio.theme.name.retroTravel': 'Retroresa', + 'studio.theme.name.midnight': 'Midnatt', + 'studio.theme.name.fieldNotes': 'Fältanteckningar', 'studio.theme.descr.posterPop': 'Krämvitt papper, korall och solros, kraftiga affischrubriker', 'studio.theme.descr.cutout': 'Koboltpapper, former i korall och sand, vit text', 'studio.theme.descr.postcard': 'Mintpapper, marinblått bläck, stämpelrött och en handskriven underrubrik', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Ljusgrått papper med skiffer, ockra och rosa', 'studio.theme.descr.alpine': 'Snövitt med skogsgrönt, rost och himmelsblått', 'studio.theme.descr.indiaStamp': 'Varmt papper med magenta, saffran och petrol', + 'studio.theme.descr.riso': 'Krämpapper, risoblått och neonrosa tryckt över varandra', + 'studio.theme.descr.magazine': 'Benvitt papper, svart tryck, en röd färg och en stor titel', + 'studio.theme.descr.retroTravel': 'Åldrat krämpapper med orange, petrol och senapsgult', + 'studio.theme.descr.midnight': 'Nästan svart papper, varmvit text och neonaccenter', + 'studio.theme.descr.fieldNotes': 'Kraftpapper, mossgrönt och rost, handstil och tejp', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Välj ett utseende för hela boken. Färger och text som följer temat ändras med det, allt annat förblir som det är.', diff --git a/shared/src/i18n/th/studioTemplates.ts b/shared/src/i18n/th/studioTemplates.ts index ff28f3be1..2bb1a0f3d 100644 --- a/shared/src/i18n/th/studioTemplates.ts +++ b/shared/src/i18n/th/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'ตารางและเหรียญตรา', 'studio.templates.archetype.minimal-serif': 'มินิมอล', 'studio.templates.archetype.stamp-collage': 'แสตมป์', + 'studio.templates.archetype.riso': 'ริโซ', + 'studio.templates.archetype.editorial': 'นิตยสาร', + 'studio.templates.archetype.vintage-poster': 'โปสเตอร์วินเทจ', + 'studio.templates.archetype.night-film': 'ฟิล์มยามค่ำ', + 'studio.templates.archetype.field-notes': 'บันทึกภาคสนาม', 'studio.templates.name.spineBandStitched': 'แถบเย็บ', 'studio.templates.name.spineBandGingham': 'แถบลายตาราง', 'studio.templates.name.spineBandScript': 'แถบกับลายมือ', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'ตารางภาพเด่น', 'studio.templates.name.gridColumns': 'ตารางคอลัมน์', 'studio.templates.name.gridMosaic': 'ตารางโมเสก', + 'studio.templates.name.spineBandPlate': 'แผ่นภาพติดกาว', + 'studio.templates.name.posterPopSunDisc': 'จานดวงอาทิตย์', + 'studio.templates.name.cutoutCircle': 'วงกลมตัดกระดาษ', + 'studio.templates.name.postcardGreetings': 'โปสการ์ดคำทักทาย', + 'studio.templates.name.gridBadgeTiles': 'ตารางเข็มกลัด', + 'studio.templates.name.minimalSerifCameo': 'คาเมโอวงรี', + 'studio.templates.name.stampCollageAirmail': 'ซองไปรษณีย์อากาศ', + 'studio.templates.name.risoOverprint': 'โปสเตอร์พิมพ์ทับ', + 'studio.templates.name.risoHalftoneSun': 'ดวงอาทิตย์ฮาล์ฟโทน', + 'studio.templates.name.risoZineStack': 'กองซีน', + 'studio.templates.name.risoPinkPress': 'งานพิมพ์ชมพู', + 'studio.templates.name.editorialMasthead': 'ปกหัวนิตยสาร', + 'studio.templates.name.editorialCoverStory': 'เรื่องจากปก', + 'studio.templates.name.editorialSplit': 'ภาพเหนือพาดหัว', + 'studio.templates.name.editorialHeadline': 'ปกพาดหัว', + 'studio.templates.name.vintagePosterPanorama': 'พาโนรามาโปสเตอร์', + 'studio.templates.name.vintagePosterArch': 'ซุ้มโค้งและทะเล', + 'studio.templates.name.vintagePosterSunDisc': 'ดวงอาทิตย์เหนือเนิน', + 'studio.templates.name.vintagePosterPeaks': 'ยอดเขาซ้อนชั้น', + 'studio.templates.name.nightFilmLetterbox': 'ปกจอกว้าง', + 'studio.templates.name.nightFilmStrip': 'ปกแถบฟิล์ม', + 'studio.templates.name.nightFilmTitleCard': 'การ์ดชื่อเรื่อง', + 'studio.templates.name.nightFilmFadeOut': 'เฟดสู่ความมืด', + 'studio.templates.name.fieldNotesTorn': 'แผ่นสมุดฉีก', + 'studio.templates.name.fieldNotesPolaroid': 'โพลารอยด์ติดเทป', + 'studio.templates.name.fieldNotesSpecimens': 'ตัวอย่างติดเทป', + 'studio.templates.name.fieldNotesLabel': 'ป้ายสมุดบันทึก', + 'studio.templates.name.spineBandClothStory': 'เรื่องราวบนผ้า', + 'studio.templates.name.spineBandGinghamTrio': 'สามภาพสันลายตาราง', + 'studio.templates.name.spineBandAlbum': 'อัลบั้มเข้าเล่ม', + 'studio.templates.name.posterPopHeadline': 'พาดหัวโปสเตอร์', + 'studio.templates.name.posterPopPostcards': 'ภาพพิมพ์เอียง', + 'studio.templates.name.posterPopPhotoWall': 'ผนังภาพถ่าย', + 'studio.templates.name.cutoutStoryPage': 'เรื่องราวตัดกระดาษ', + 'studio.templates.name.cutoutTrio': 'สามภาพตัดกระดาษ', + 'studio.templates.name.cutoutScatter': 'ภาพพิมพ์กระจาย', + 'studio.templates.name.cutoutMosaic': 'โมเสกตัดกระดาษ', + 'studio.templates.name.postcardAirmail': 'จดหมายอากาศ', + 'studio.templates.name.postcardRack': 'ชั้นโปสการ์ด', + 'studio.templates.name.gridBadgeLetter': 'ตราประทับและเรื่องราว', + 'studio.templates.name.gridBadgeHeroSix': 'ภาพหลักและหกภาพ', + 'studio.templates.name.minimalSerifEssay': 'เรียงความเงียบ', + 'studio.templates.name.minimalSerifTriptych': 'สามแผ่นภาพ', + 'studio.templates.name.stampCollageLetter': 'จดหมายประทับตรา', + 'studio.templates.name.stampCollageArchStamps': 'ซุ้มโค้งและแสตมป์', + 'studio.templates.name.stampCollageSheet': 'แผ่นแสตมป์', + 'studio.templates.name.risoStoryPlate': 'เรื่องราวและแผ่นภาพ', + 'studio.templates.name.risoOffsetPair': 'คู่เหลื่อม', + 'studio.templates.name.risoBlobTrio': 'สามหยดสี', + 'studio.templates.name.risoZineGrid': 'ตารางซีน', + 'studio.templates.name.risoPrintScatter': 'งานพิมพ์โปรย', + 'studio.templates.name.editorialFeatureOpener': 'เปิดสารคดี', + 'studio.templates.name.editorialPullQuote': 'คำพูดเด่น', + 'studio.templates.name.editorialFeatureColumns': 'สารคดีหลายคอลัมน์', + 'studio.templates.name.editorialPortfolio': 'หน้าคู่พอร์ตโฟลิโอ', + 'studio.templates.name.editorialContactSheet': 'ภาพคอนแทกต์', + 'studio.templates.name.vintagePosterStory': 'โปสเตอร์และเรื่องราว', + 'studio.templates.name.vintagePosterTwin': 'โปสเตอร์คู่', + 'studio.templates.name.vintagePosterArcade': 'ทางเดินซุ้มโค้ง', + 'studio.templates.name.vintagePosterPanels': 'แผงและเนินเขา', + 'studio.templates.name.vintagePosterLabels': 'ป้ายกระเป๋าเดินทาง', + 'studio.templates.name.nightFilmOpening': 'ฉากเปิด', + 'studio.templates.name.nightFilmSubtitles': 'คำบรรยายภาพยนตร์', + 'studio.templates.name.nightFilmReels': 'เฟดและม้วนฟิล์ม', + 'studio.templates.name.nightFilmContact': 'ภาพคอนแทกต์ฟิล์ม', + 'studio.templates.name.nightFilmDoubleReel': 'ม้วนฟิล์มคู่', + 'studio.templates.name.fieldNotesDiary': 'หน้าไดอารี่', + 'studio.templates.name.fieldNotesTrail': 'เส้นทางการ์ดโน้ต', + 'studio.templates.name.fieldNotesRoute': 'เส้นทางและโพลารอยด์', + 'studio.templates.name.fieldNotesContact': 'ภาพคอนแทกต์มีเลข', + 'studio.templates.name.fieldNotesHerbarium': 'แผ่นพรรณไม้แห้ง', }; export default studioTemplates; diff --git a/shared/src/i18n/th/studioThemes.ts b/shared/src/i18n/th/studioThemes.ts index cef83fe89..17ff7d743 100644 --- a/shared/src/i18n/th/studioThemes.ts +++ b/shared/src/i18n/th/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'นอร์ดิก', 'studio.theme.name.alpine': 'เทือกเขาแอลป์', 'studio.theme.name.indiaStamp': 'ภาพปะติดแสตมป์', + 'studio.theme.name.riso': 'พิมพ์ริโซ', + 'studio.theme.name.magazine': 'นิตยสาร', + 'studio.theme.name.retroTravel': 'ท่องเที่ยวย้อนยุค', + 'studio.theme.name.midnight': 'เที่ยงคืน', + 'studio.theme.name.fieldNotes': 'บันทึกภาคสนาม', 'studio.theme.descr.posterPop': 'กระดาษสีครีม สีปะการังและสีทานตะวัน หัวเรื่องโปสเตอร์ตัวหนา', 'studio.theme.descr.cutout': 'กระดาษสีโคบอลต์ รูปทรงสีปะการังและสีทราย ตัวอักษรสีขาว', 'studio.theme.descr.postcard': 'กระดาษสีมิ้นต์ หมึกกรมท่า สีแดงตราประทับ และหัวเรื่องรองลายมือ', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'กระดาษเทาอ่อนกับสีหินชนวน สีดินเหลือง และสีกุหลาบ', 'studio.theme.descr.alpine': 'ขาวหิมะกับเขียวป่า สีสนิม และฟ้าใส', 'studio.theme.descr.indiaStamp': 'กระดาษโทนอุ่นกับสีบานเย็น สีหญ้าฝรั่น และสีเขียวหัวเป็ด', + 'studio.theme.descr.riso': 'กระดาษสีครีม หมึกฟ้าริโซและชมพูนีออนพิมพ์ซ้อนกัน', + 'studio.theme.descr.magazine': 'กระดาษขาวนวล หมึกดำ สีแดงหนึ่งสีและหัวหนังสือใหญ่', + 'studio.theme.descr.retroTravel': 'กระดาษครีมเก่า พร้อมสีส้ม เขียวอมฟ้า และมัสตาร์ด', + 'studio.theme.descr.midnight': 'กระดาษเกือบดำ ตัวอักษรขาวนวลและสีนีออน', + 'studio.theme.descr.fieldNotes': 'กระดาษคราฟต์ เขียวมอสและสีสนิม ลายมือและเทป', 'studio.theme.panel': 'ธีม', 'studio.theme.intro': 'เลือกรูปลักษณ์ให้ทั้งเล่ม สีและตัวอักษรที่ตามธีมจะเปลี่ยนตาม ส่วนอื่นคงเดิม', 'studio.theme.themes': 'ธีมทั้งหมด', diff --git a/shared/src/i18n/tr/studioTemplates.ts b/shared/src/i18n/tr/studioTemplates.ts index 8a92e83a8..64e967ff2 100644 --- a/shared/src/i18n/tr/studioTemplates.ts +++ b/shared/src/i18n/tr/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Izgara ve rozet', 'studio.templates.archetype.minimal-serif': 'Minimal', // same-as-en 'studio.templates.archetype.stamp-collage': 'Pullar', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Dergi', + 'studio.templates.archetype.vintage-poster': 'Eski afiş', + 'studio.templates.archetype.night-film': 'Gece filmi', + 'studio.templates.archetype.field-notes': 'Saha notları', 'studio.templates.name.spineBandStitched': 'Dikişli bant', 'studio.templates.name.spineBandGingham': 'Kareli bant', 'studio.templates.name.spineBandScript': 'Bant ve el yazısı', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Öne çıkan ızgara', 'studio.templates.name.gridColumns': 'Sütunlu ızgara', 'studio.templates.name.gridMosaic': 'Mozaik ızgara', + 'studio.templates.name.spineBandPlate': 'Yapıştırılmış levha', + 'studio.templates.name.posterPopSunDisc': 'Güneş diski', + 'studio.templates.name.cutoutCircle': 'Kesik daire', + 'studio.templates.name.postcardGreetings': 'Selam kartpostalı', + 'studio.templates.name.gridBadgeTiles': 'Rozet ızgarası', + 'studio.templates.name.minimalSerifCameo': 'Oval kamea', + 'studio.templates.name.stampCollageAirmail': 'Uçak postası zarfı', + 'studio.templates.name.risoOverprint': 'Üst baskı afiş', + 'studio.templates.name.risoHalftoneSun': 'Raster güneş', + 'studio.templates.name.risoZineStack': 'Fanzin yığını', + 'studio.templates.name.risoPinkPress': 'Pembe baskı', + 'studio.templates.name.editorialMasthead': 'Başlıklı kapak', + 'studio.templates.name.editorialCoverStory': 'Kapak konusu', + 'studio.templates.name.editorialSplit': 'Manşet üstünde fotoğraf', + 'studio.templates.name.editorialHeadline': 'Manşetli kapak', + 'studio.templates.name.vintagePosterPanorama': 'Afiş panoraması', + 'studio.templates.name.vintagePosterArch': 'Kemer ve deniz', + 'studio.templates.name.vintagePosterSunDisc': 'Tepeler üstünde güneş', + 'studio.templates.name.vintagePosterPeaks': 'Kademeli zirveler', + 'studio.templates.name.nightFilmLetterbox': 'Geniş ekran kapak', + 'studio.templates.name.nightFilmStrip': 'Film şeritli kapak', + 'studio.templates.name.nightFilmTitleCard': 'Başlık kartı', + 'studio.templates.name.nightFilmFadeOut': 'Karartma', + 'studio.templates.name.fieldNotesTorn': 'Yırtık defter sayfası', + 'studio.templates.name.fieldNotesPolaroid': 'Bantlı polaroid', + 'studio.templates.name.fieldNotesSpecimens': 'Bantlı örnekler', + 'studio.templates.name.fieldNotesLabel': 'Defter etiketi', + 'studio.templates.name.spineBandClothStory': 'Kumaş üstünde hikâye', + 'studio.templates.name.spineBandGinghamTrio': 'Ekose sırtlı üçlü', + 'studio.templates.name.spineBandAlbum': 'Ciltli albüm', + 'studio.templates.name.posterPopHeadline': 'Afiş manşeti', + 'studio.templates.name.posterPopPostcards': 'Eğik baskılar', + 'studio.templates.name.posterPopPhotoWall': 'Fotoğraf duvarı', + 'studio.templates.name.cutoutStoryPage': 'Kesik hikâye', + 'studio.templates.name.cutoutTrio': 'Kesik üçlü', + 'studio.templates.name.cutoutScatter': 'Dağınık baskılar', + 'studio.templates.name.cutoutMosaic': 'Kesik mozaik', + 'studio.templates.name.postcardAirmail': 'Uçak postası mektubu', + 'studio.templates.name.postcardRack': 'Kartpostal standı', + 'studio.templates.name.gridBadgeLetter': 'Mühür ve hikâye', + 'studio.templates.name.gridBadgeHeroSix': 'Ana fotoğraf ve altı', + 'studio.templates.name.minimalSerifEssay': 'Sakin deneme', + 'studio.templates.name.minimalSerifTriptych': 'Üç levha', + 'studio.templates.name.stampCollageLetter': 'Damgalı mektup', + 'studio.templates.name.stampCollageArchStamps': 'Kemer ve pullar', + 'studio.templates.name.stampCollageSheet': 'Pul tabakası', + 'studio.templates.name.risoStoryPlate': 'Hikâye ve levha', + 'studio.templates.name.risoOffsetPair': 'Kaymış çift', + 'studio.templates.name.risoBlobTrio': 'Leke üçlüsü', + 'studio.templates.name.risoZineGrid': 'Fanzin ızgarası', + 'studio.templates.name.risoPrintScatter': 'Saçılmış baskılar', + 'studio.templates.name.editorialFeatureOpener': 'Röportaj açılışı', + 'studio.templates.name.editorialPullQuote': 'Öne çıkan alıntı', + 'studio.templates.name.editorialFeatureColumns': 'Sütunlu röportaj', + 'studio.templates.name.editorialPortfolio': 'Portfolyo çift sayfası', + 'studio.templates.name.editorialContactSheet': 'Kontakt baskı', + 'studio.templates.name.vintagePosterStory': 'Afiş ve hikâye', + 'studio.templates.name.vintagePosterTwin': 'İkiz afişler', + 'studio.templates.name.vintagePosterArcade': 'Kemerli galeri', + 'studio.templates.name.vintagePosterPanels': 'Paneller ve tepeler', + 'studio.templates.name.vintagePosterLabels': 'Bavul etiketleri', + 'studio.templates.name.nightFilmOpening': 'Açılış sahnesi', + 'studio.templates.name.nightFilmSubtitles': 'Film altyazıları', + 'studio.templates.name.nightFilmReels': 'Karartma ve makaralar', + 'studio.templates.name.nightFilmContact': 'Film kontakt baskısı', + 'studio.templates.name.nightFilmDoubleReel': 'Çift makara', + 'studio.templates.name.fieldNotesDiary': 'Günlük sayfası', + 'studio.templates.name.fieldNotesTrail': 'Not kartı izi', + 'studio.templates.name.fieldNotesRoute': 'Rota ve polaroidler', + 'studio.templates.name.fieldNotesContact': 'Numaralı kontakt baskı', + 'studio.templates.name.fieldNotesHerbarium': 'Herbaryum sayfaları', }; export default studioTemplates; diff --git a/shared/src/i18n/tr/studioThemes.ts b/shared/src/i18n/tr/studioThemes.ts index 240ec4578..fcdb0eec4 100644 --- a/shared/src/i18n/tr/studioThemes.ts +++ b/shared/src/i18n/tr/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'İskandinav', 'studio.theme.name.alpine': 'Alp', 'studio.theme.name.indiaStamp': 'Pul kolajı', + 'studio.theme.name.riso': 'Riso baskı', + 'studio.theme.name.magazine': 'Dergi', + 'studio.theme.name.retroTravel': 'Retro seyahat', + 'studio.theme.name.midnight': 'Gece yarısı', + 'studio.theme.name.fieldNotes': 'Saha notları', 'studio.theme.descr.posterPop': 'Krem kâğıt, mercan ve ayçiçeği, kalın afiş başlıkları', 'studio.theme.descr.cutout': 'Kobalt kâğıt, mercan ve kum rengi şekiller, beyaz yazı', 'studio.theme.descr.postcard': 'Nane kâğıt, lacivert mürekkep, damga kırmızısı ve el yazısı alt başlık', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Arduvaz, aşı boyası ve pembeyle soluk gri kâğıt', 'studio.theme.descr.alpine': 'Orman yeşili, pas ve gök mavisiyle kar beyazı', 'studio.theme.descr.indiaStamp': 'Macenta, safran ve camgöbeğiyle sıcak kâğıt', + 'studio.theme.descr.riso': 'Krem kâğıt, riso mavisi ve neon pembe üst üste', + 'studio.theme.descr.magazine': 'Kırık beyaz kâğıt, siyah mürekkep, bir kırmızı ve büyük bir başlık', + 'studio.theme.descr.retroTravel': 'Eskitilmiş krem kâğıt, turuncu, petrol yeşili ve hardal', + 'studio.theme.descr.midnight': 'Neredeyse siyah kâğıt, sıcak beyaz yazı ve neon vurgular', + 'studio.theme.descr.fieldNotes': 'Kraft kâğıt, yosun yeşili ve pas, el yazısı ve bant', 'studio.theme.panel': 'Tema', 'studio.theme.intro': 'Tüm kitap için bir görünüm seçin. Temayı izleyen renkler ve yazılar onunla değişir, geri kalan her şey olduğu gibi kalır.', diff --git a/shared/src/i18n/uk/studioTemplates.ts b/shared/src/i18n/uk/studioTemplates.ts index b838c58d6..68aa2aa0d 100644 --- a/shared/src/i18n/uk/studioTemplates.ts +++ b/shared/src/i18n/uk/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Сітка й значок', 'studio.templates.archetype.minimal-serif': 'Мінімалізм', 'studio.templates.archetype.stamp-collage': 'Марки', + 'studio.templates.archetype.riso': 'Різо', + 'studio.templates.archetype.editorial': 'Журнал', + 'studio.templates.archetype.vintage-poster': 'Ретроплакат', + 'studio.templates.archetype.night-film': 'Нічне кіно', + 'studio.templates.archetype.field-notes': 'Польові нотатки', 'studio.templates.name.spineBandStitched': 'Прошита смуга', 'studio.templates.name.spineBandGingham': 'Смуга в клітинку', 'studio.templates.name.spineBandScript': 'Смуга й рукописний шрифт', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Сітка з головним фото', 'studio.templates.name.gridColumns': 'Сітка колонками', 'studio.templates.name.gridMosaic': 'Мозаїчна сітка', + 'studio.templates.name.spineBandPlate': 'Вклеєний знімок', + 'studio.templates.name.posterPopSunDisc': 'Сонячний диск', + 'studio.templates.name.cutoutCircle': 'Вирізане коло', + 'studio.templates.name.postcardGreetings': 'Листівка з привітом', + 'studio.templates.name.gridBadgeTiles': 'Сітка значків', + 'studio.templates.name.minimalSerifCameo': 'Овальна камея', + 'studio.templates.name.stampCollageAirmail': 'Конверт авіапошти', + 'studio.templates.name.risoOverprint': 'Плакат із надруком', + 'studio.templates.name.risoHalftoneSun': 'Растрове сонце', + 'studio.templates.name.risoZineStack': 'Стос зинів', + 'studio.templates.name.risoPinkPress': 'Рожевий друк', + 'studio.templates.name.editorialMasthead': 'Обкладинка з шапкою', + 'studio.templates.name.editorialCoverStory': 'Тема номера', + 'studio.templates.name.editorialSplit': 'Фото над заголовком', + 'studio.templates.name.editorialHeadline': 'Обкладинка із заголовком', + 'studio.templates.name.vintagePosterPanorama': 'Плакатна панорама', + 'studio.templates.name.vintagePosterArch': 'Арка і море', + 'studio.templates.name.vintagePosterSunDisc': 'Сонце над пагорбами', + 'studio.templates.name.vintagePosterPeaks': 'Яруси вершин', + 'studio.templates.name.nightFilmLetterbox': 'Широкоекранна обкладинка', + 'studio.templates.name.nightFilmStrip': 'Обкладинка з кіноплівкою', + 'studio.templates.name.nightFilmTitleCard': 'Титульна картка', + 'studio.templates.name.nightFilmFadeOut': 'Затемнення', + 'studio.templates.name.fieldNotesTorn': 'Вирваний аркуш блокнота', + 'studio.templates.name.fieldNotesPolaroid': 'Полароїд на скотчі', + 'studio.templates.name.fieldNotesSpecimens': 'Знахідки на скотчі', + 'studio.templates.name.fieldNotesLabel': 'Ярлик блокнота', + 'studio.templates.name.spineBandClothStory': 'Розповідь на тканині', + 'studio.templates.name.spineBandGinghamTrio': 'Трійка з картатим корінцем', + 'studio.templates.name.spineBandAlbum': 'Оправлений альбом', + 'studio.templates.name.posterPopHeadline': 'Плакатний заголовок', + 'studio.templates.name.posterPopPostcards': 'Нахилені знімки', + 'studio.templates.name.posterPopPhotoWall': 'Стіна фотографій', + 'studio.templates.name.cutoutStoryPage': 'Розповідь із вирізок', + 'studio.templates.name.cutoutTrio': 'Трійка з вирізок', + 'studio.templates.name.cutoutScatter': 'Розкидані знімки', + 'studio.templates.name.cutoutMosaic': 'Мозаїка з вирізок', + 'studio.templates.name.postcardAirmail': 'Лист авіапоштою', + 'studio.templates.name.postcardRack': 'Стійка з листівками', + 'studio.templates.name.gridBadgeLetter': 'Печатка і розповідь', + 'studio.templates.name.gridBadgeHeroSix': 'Головне фото і шість', + 'studio.templates.name.minimalSerifEssay': 'Тихе есе', + 'studio.templates.name.minimalSerifTriptych': 'Три вклейки', + 'studio.templates.name.stampCollageLetter': 'Лист зі штемпелем', + 'studio.templates.name.stampCollageArchStamps': 'Арка і марки', + 'studio.templates.name.stampCollageSheet': 'Аркуш марок', + 'studio.templates.name.risoStoryPlate': 'Розповідь і вклейка', + 'studio.templates.name.risoOffsetPair': 'Зміщена пара', + 'studio.templates.name.risoBlobTrio': 'Трійка плям', + 'studio.templates.name.risoZineGrid': 'Сітка зину', + 'studio.templates.name.risoPrintScatter': 'Розсип відбитків', + 'studio.templates.name.editorialFeatureOpener': 'Початок репортажу', + 'studio.templates.name.editorialPullQuote': 'Винесена цитата', + 'studio.templates.name.editorialFeatureColumns': 'Репортаж у колонках', + 'studio.templates.name.editorialPortfolio': 'Розворот портфоліо', + 'studio.templates.name.editorialContactSheet': 'Контактний аркуш', + 'studio.templates.name.vintagePosterStory': 'Плакат і розповідь', + 'studio.templates.name.vintagePosterTwin': 'Плакати-близнюки', + 'studio.templates.name.vintagePosterArcade': 'Аркада арок', + 'studio.templates.name.vintagePosterPanels': 'Панелі й пагорби', + 'studio.templates.name.vintagePosterLabels': 'Багажні бирки', + 'studio.templates.name.nightFilmOpening': 'Перша сцена', + 'studio.templates.name.nightFilmSubtitles': 'Субтитри фільму', + 'studio.templates.name.nightFilmReels': 'Затемнення і бобіни', + 'studio.templates.name.nightFilmContact': 'Контактний аркуш плівки', + 'studio.templates.name.nightFilmDoubleReel': 'Подвійна бобіна', + 'studio.templates.name.fieldNotesDiary': 'Сторінка щоденника', + 'studio.templates.name.fieldNotesTrail': 'Слід карток', + 'studio.templates.name.fieldNotesRoute': 'Маршрут і полароїди', + 'studio.templates.name.fieldNotesContact': 'Нумерований контактний аркуш', + 'studio.templates.name.fieldNotesHerbarium': 'Аркуші гербарію', }; export default studioTemplates; diff --git a/shared/src/i18n/uk/studioThemes.ts b/shared/src/i18n/uk/studioThemes.ts index 1081013fa..b384e6274 100644 --- a/shared/src/i18n/uk/studioThemes.ts +++ b/shared/src/i18n/uk/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Північний', 'studio.theme.name.alpine': 'Альпійський', 'studio.theme.name.indiaStamp': 'Колаж із марок', + 'studio.theme.name.riso': 'Ризографія', + 'studio.theme.name.magazine': 'Журнал', + 'studio.theme.name.retroTravel': 'Ретроподорож', + 'studio.theme.name.midnight': 'Опівніч', + 'studio.theme.name.fieldNotes': 'Польові нотатки', 'studio.theme.descr.posterPop': 'Кремовий папір, кораловий і соняшниковий, щільні плакатні заголовки', 'studio.theme.descr.cutout': 'Кобальтовий папір, фігури коралового й піщаного кольору, білий текст', 'studio.theme.descr.postcard': 'М’ятний папір, темно-сине чорнило, штемпельний червоний і рукописний підзаголовок', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Світло-сірий папір із графітовим, охрою й рожевим', 'studio.theme.descr.alpine': 'Сніжно-білий із лісовим зеленим, іржавим і небесно-блакитним', 'studio.theme.descr.indiaStamp': 'Теплий папір із пурпуровим, шафрановим і бірюзовим', + 'studio.theme.descr.riso': 'Кремовий папір, синя й рожева неонова фарба внахлест', + 'studio.theme.descr.magazine': 'Папір кольору слонової кістки, чорний колір, один червоний і великий заголовок', + 'studio.theme.descr.retroTravel': 'Зістарений кремовий папір з помаранчевим, бірюзовим і гірчичним', + 'studio.theme.descr.midnight': 'Майже чорний папір, теплий білий текст і неонові акценти', + 'studio.theme.descr.fieldNotes': 'Крафтовий папір, колір моху та іржі, почерк і скотч', 'studio.theme.panel': 'Тема', 'studio.theme.intro': 'Виберіть стиль для всієї книги. Кольори й шрифти, що слідують темі, змінюються разом із нею, решта лишається як є.', diff --git a/shared/src/i18n/vi/studioTemplates.ts b/shared/src/i18n/vi/studioTemplates.ts index 92a5eedbb..27e0035a6 100644 --- a/shared/src/i18n/vi/studioTemplates.ts +++ b/shared/src/i18n/vi/studioTemplates.ts @@ -13,6 +13,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': 'Lưới và huy hiệu', 'studio.templates.archetype.minimal-serif': 'Tối giản', 'studio.templates.archetype.stamp-collage': 'Tem thư', + 'studio.templates.archetype.riso': 'Riso', // same-as-en + 'studio.templates.archetype.editorial': 'Tạp chí', + 'studio.templates.archetype.vintage-poster': 'Áp phích cổ điển', + 'studio.templates.archetype.night-film': 'Phim đêm', + 'studio.templates.archetype.field-notes': 'Sổ tay hành trình', 'studio.templates.name.spineBandStitched': 'Dải khâu chỉ', 'studio.templates.name.spineBandGingham': 'Dải kẻ ô', 'studio.templates.name.spineBandScript': 'Dải và chữ viết tay', @@ -50,6 +55,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': 'Lưới ảnh chính', 'studio.templates.name.gridColumns': 'Lưới cột', 'studio.templates.name.gridMosaic': 'Lưới khảm', + 'studio.templates.name.spineBandPlate': 'Tấm ảnh dán', + 'studio.templates.name.posterPopSunDisc': 'Đĩa mặt trời', + 'studio.templates.name.cutoutCircle': 'Hình tròn cắt giấy', + 'studio.templates.name.postcardGreetings': 'Bưu thiếp lời chào', + 'studio.templates.name.gridBadgeTiles': 'Lưới huy hiệu', + 'studio.templates.name.minimalSerifCameo': 'Mề đay bầu dục', + 'studio.templates.name.stampCollageAirmail': 'Phong bì thư máy bay', + 'studio.templates.name.risoOverprint': 'Áp phích in chồng', + 'studio.templates.name.risoHalftoneSun': 'Mặt trời lưới tram', + 'studio.templates.name.risoZineStack': 'Chồng zine', + 'studio.templates.name.risoPinkPress': 'Bản in hồng', + 'studio.templates.name.editorialMasthead': 'Bìa có măng-sét', + 'studio.templates.name.editorialCoverStory': 'Bài trang bìa', + 'studio.templates.name.editorialSplit': 'Ảnh trên tiêu đề', + 'studio.templates.name.editorialHeadline': 'Bìa tiêu đề lớn', + 'studio.templates.name.vintagePosterPanorama': 'Toàn cảnh áp phích', + 'studio.templates.name.vintagePosterArch': 'Vòm và biển', + 'studio.templates.name.vintagePosterSunDisc': 'Mặt trời trên đồi', + 'studio.templates.name.vintagePosterPeaks': 'Đỉnh núi xếp lớp', + 'studio.templates.name.nightFilmLetterbox': 'Bìa màn ảnh rộng', + 'studio.templates.name.nightFilmStrip': 'Bìa dải phim', + 'studio.templates.name.nightFilmTitleCard': 'Thẻ tiêu đề', + 'studio.templates.name.nightFilmFadeOut': 'Mờ dần về đen', + 'studio.templates.name.fieldNotesTorn': 'Trang sổ bị xé', + 'studio.templates.name.fieldNotesPolaroid': 'Polaroid dán băng keo', + 'studio.templates.name.fieldNotesSpecimens': 'Mẫu vật dán băng keo', + 'studio.templates.name.fieldNotesLabel': 'Nhãn sổ tay', + 'studio.templates.name.spineBandClothStory': 'Câu chuyện trên vải', + 'studio.templates.name.spineBandGinghamTrio': 'Bộ ba gáy kẻ ô', + 'studio.templates.name.spineBandAlbum': 'Album đóng bìa', + 'studio.templates.name.posterPopHeadline': 'Tiêu đề áp phích', + 'studio.templates.name.posterPopPostcards': 'Ảnh in nghiêng', + 'studio.templates.name.posterPopPhotoWall': 'Bức tường ảnh', + 'studio.templates.name.cutoutStoryPage': 'Câu chuyện cắt giấy', + 'studio.templates.name.cutoutTrio': 'Bộ ba cắt giấy', + 'studio.templates.name.cutoutScatter': 'Ảnh in rải rác', + 'studio.templates.name.cutoutMosaic': 'Khảm cắt giấy', + 'studio.templates.name.postcardAirmail': 'Thư máy bay', + 'studio.templates.name.postcardRack': 'Giá bưu thiếp', + 'studio.templates.name.gridBadgeLetter': 'Con dấu và câu chuyện', + 'studio.templates.name.gridBadgeHeroSix': 'Ảnh chính và sáu', + 'studio.templates.name.minimalSerifEssay': 'Tiểu luận lặng lẽ', + 'studio.templates.name.minimalSerifTriptych': 'Ba tấm ảnh', + 'studio.templates.name.stampCollageLetter': 'Thư đóng dấu bưu điện', + 'studio.templates.name.stampCollageArchStamps': 'Vòm và tem', + 'studio.templates.name.stampCollageSheet': 'Tờ tem', + 'studio.templates.name.risoStoryPlate': 'Câu chuyện và tấm ảnh', + 'studio.templates.name.risoOffsetPair': 'Cặp lệch', + 'studio.templates.name.risoBlobTrio': 'Bộ ba vết loang', + 'studio.templates.name.risoZineGrid': 'Lưới zine', + 'studio.templates.name.risoPrintScatter': 'Bản in tung rải', + 'studio.templates.name.editorialFeatureOpener': 'Mở đầu phóng sự', + 'studio.templates.name.editorialPullQuote': 'Trích dẫn nổi bật', + 'studio.templates.name.editorialFeatureColumns': 'Phóng sự theo cột', + 'studio.templates.name.editorialPortfolio': 'Trang đôi danh mục', + 'studio.templates.name.editorialContactSheet': 'Tờ ảnh thử', + 'studio.templates.name.vintagePosterStory': 'Áp phích và câu chuyện', + 'studio.templates.name.vintagePosterTwin': 'Áp phích đôi', + 'studio.templates.name.vintagePosterArcade': 'Dãy vòm', + 'studio.templates.name.vintagePosterPanels': 'Tấm và đồi', + 'studio.templates.name.vintagePosterLabels': 'Nhãn hành lý', + 'studio.templates.name.nightFilmOpening': 'Cảnh mở đầu', + 'studio.templates.name.nightFilmSubtitles': 'Phụ đề phim', + 'studio.templates.name.nightFilmReels': 'Mờ dần và cuộn phim', + 'studio.templates.name.nightFilmContact': 'Tờ ảnh thử phim', + 'studio.templates.name.nightFilmDoubleReel': 'Cuộn phim đôi', + 'studio.templates.name.fieldNotesDiary': 'Trang nhật ký', + 'studio.templates.name.fieldNotesTrail': 'Lối thẻ ghi chú', + 'studio.templates.name.fieldNotesRoute': 'Lộ trình và polaroid', + 'studio.templates.name.fieldNotesContact': 'Tờ ảnh thử đánh số', + 'studio.templates.name.fieldNotesHerbarium': 'Tờ tiêu bản thực vật', }; export default studioTemplates; diff --git a/shared/src/i18n/vi/studioThemes.ts b/shared/src/i18n/vi/studioThemes.ts index 81f46d3b8..89f6408b6 100644 --- a/shared/src/i18n/vi/studioThemes.ts +++ b/shared/src/i18n/vi/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': 'Bắc Âu', 'studio.theme.name.alpine': 'Núi Alps', 'studio.theme.name.indiaStamp': 'Ghép tem', + 'studio.theme.name.riso': 'In riso', + 'studio.theme.name.magazine': 'Tạp chí', + 'studio.theme.name.retroTravel': 'Du lịch hoài cổ', + 'studio.theme.name.midnight': 'Nửa đêm', + 'studio.theme.name.fieldNotes': 'Sổ tay hành trình', 'studio.theme.descr.posterPop': 'Giấy kem, san hô và hướng dương, tiêu đề áp phích đậm', 'studio.theme.descr.cutout': 'Giấy xanh coban, hình san hô và màu cát, chữ trắng', 'studio.theme.descr.postcard': 'Giấy bạc hà, mực xanh hải quân, đỏ con dấu và phụ đề viết tay', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': 'Giấy xám nhạt với xám đá, vàng đất và hồng', 'studio.theme.descr.alpine': 'Trắng tuyết với xanh rừng, nâu gỉ và xanh da trời', 'studio.theme.descr.indiaStamp': 'Giấy ấm với hồng tím, nghệ tây và xanh mòng két', + 'studio.theme.descr.riso': 'Giấy kem, xanh riso và hồng neon in chồng lên nhau', + 'studio.theme.descr.magazine': 'Giấy trắng ngà, mực đen, một sắc đỏ và tiêu đề lớn', + 'studio.theme.descr.retroTravel': 'Giấy kem ngả màu với cam, xanh mòng két và vàng mù tạt', + 'studio.theme.descr.midnight': 'Giấy gần như đen, chữ trắng ấm và điểm nhấn neon', + 'studio.theme.descr.fieldNotes': 'Giấy kraft, xanh rêu và màu gỉ sét, chữ viết tay và băng dính', 'studio.theme.panel': 'Chủ đề', 'studio.theme.intro': 'Chọn một phong cách cho cả cuốn sách. Màu và chữ đi theo chủ đề sẽ đổi theo, mọi thứ khác giữ nguyên.', diff --git a/shared/src/i18n/zh-TW/studioTemplates.ts b/shared/src/i18n/zh-TW/studioTemplates.ts index 1c23f1a2b..5a663c16f 100644 --- a/shared/src/i18n/zh-TW/studioTemplates.ts +++ b/shared/src/i18n/zh-TW/studioTemplates.ts @@ -12,6 +12,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': '網格與徽章', 'studio.templates.archetype.minimal-serif': '極簡', 'studio.templates.archetype.stamp-collage': '郵票', + 'studio.templates.archetype.riso': '孔版', + 'studio.templates.archetype.editorial': '雜誌', + 'studio.templates.archetype.vintage-poster': '復古海報', + 'studio.templates.archetype.night-film': '夜色底片', + 'studio.templates.archetype.field-notes': '旅行手記', 'studio.templates.name.spineBandStitched': '縫線色帶', 'studio.templates.name.spineBandGingham': '格紋色帶', 'studio.templates.name.spineBandScript': '色帶與手寫字', @@ -49,6 +54,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': '主圖網格', 'studio.templates.name.gridColumns': '分欄網格', 'studio.templates.name.gridMosaic': '馬賽克網格', + 'studio.templates.name.spineBandPlate': '貼入的插圖頁', + 'studio.templates.name.posterPopSunDisc': '太陽圓盤', + 'studio.templates.name.cutoutCircle': '圓形剪紙', + 'studio.templates.name.postcardGreetings': '問候明信片', + 'studio.templates.name.gridBadgeTiles': '徽章方格', + 'studio.templates.name.minimalSerifCameo': '橢圓浮雕', + 'studio.templates.name.stampCollageAirmail': '航空信封', + 'studio.templates.name.risoOverprint': '疊印海報', + 'studio.templates.name.risoHalftoneSun': '網點太陽', + 'studio.templates.name.risoZineStack': '小誌堆疊', + 'studio.templates.name.risoPinkPress': '粉紅印刷', + 'studio.templates.name.editorialMasthead': '刊頭封面', + 'studio.templates.name.editorialCoverStory': '封面故事', + 'studio.templates.name.editorialSplit': '標題上方的照片', + 'studio.templates.name.editorialHeadline': '大標題封面', + 'studio.templates.name.vintagePosterPanorama': '海報全景', + 'studio.templates.name.vintagePosterArch': '拱門與海', + 'studio.templates.name.vintagePosterSunDisc': '山丘上的太陽', + 'studio.templates.name.vintagePosterPeaks': '層疊山峰', + 'studio.templates.name.nightFilmLetterbox': '寬銀幕封面', + 'studio.templates.name.nightFilmStrip': '底片條封面', + 'studio.templates.name.nightFilmTitleCard': '片名卡', + 'studio.templates.name.nightFilmFadeOut': '淡出至黑', + 'studio.templates.name.fieldNotesTorn': '撕下的筆記頁', + 'studio.templates.name.fieldNotesPolaroid': '膠帶貼的拍立得', + 'studio.templates.name.fieldNotesSpecimens': '膠帶貼的標本', + 'studio.templates.name.fieldNotesLabel': '筆記本標籤', + 'studio.templates.name.spineBandClothStory': '布面上的故事', + 'studio.templates.name.spineBandGinghamTrio': '格紋書背三圖', + 'studio.templates.name.spineBandAlbum': '精裝相簿', + 'studio.templates.name.posterPopHeadline': '海報大標題', + 'studio.templates.name.posterPopPostcards': '傾斜的照片', + 'studio.templates.name.posterPopPhotoWall': '照片牆', + 'studio.templates.name.cutoutStoryPage': '剪紙故事', + 'studio.templates.name.cutoutTrio': '剪紙三圖', + 'studio.templates.name.cutoutScatter': '散落的照片', + 'studio.templates.name.cutoutMosaic': '剪紙馬賽克', + 'studio.templates.name.postcardAirmail': '航空信', + 'studio.templates.name.postcardRack': '明信片架', + 'studio.templates.name.gridBadgeLetter': '印章與故事', + 'studio.templates.name.gridBadgeHeroSix': '主圖與六圖', + 'studio.templates.name.minimalSerifEssay': '靜謐隨筆', + 'studio.templates.name.minimalSerifTriptych': '三幅插圖', + 'studio.templates.name.stampCollageLetter': '蓋郵戳的信', + 'studio.templates.name.stampCollageArchStamps': '拱門與郵票', + 'studio.templates.name.stampCollageSheet': '郵票小全張', + 'studio.templates.name.risoStoryPlate': '故事與插圖', + 'studio.templates.name.risoOffsetPair': '錯位雙圖', + 'studio.templates.name.risoBlobTrio': '色塊三圖', + 'studio.templates.name.risoZineGrid': '小誌網格', + 'studio.templates.name.risoPrintScatter': '散落印刷', + 'studio.templates.name.editorialFeatureOpener': '專題開篇', + 'studio.templates.name.editorialPullQuote': '引文摘句', + 'studio.templates.name.editorialFeatureColumns': '分欄專題', + 'studio.templates.name.editorialPortfolio': '作品集跨頁', + 'studio.templates.name.editorialContactSheet': '印樣頁', + 'studio.templates.name.vintagePosterStory': '海報與故事', + 'studio.templates.name.vintagePosterTwin': '雙聯海報', + 'studio.templates.name.vintagePosterArcade': '拱廊', + 'studio.templates.name.vintagePosterPanels': '畫板與山丘', + 'studio.templates.name.vintagePosterLabels': '行李標籤', + 'studio.templates.name.nightFilmOpening': '開場鏡頭', + 'studio.templates.name.nightFilmSubtitles': '電影字幕', + 'studio.templates.name.nightFilmReels': '淡出與膠捲', + 'studio.templates.name.nightFilmContact': '底片印樣頁', + 'studio.templates.name.nightFilmDoubleReel': '雙卷膠捲', + 'studio.templates.name.fieldNotesDiary': '日記頁', + 'studio.templates.name.fieldNotesTrail': '筆記卡小徑', + 'studio.templates.name.fieldNotesRoute': '路線與拍立得', + 'studio.templates.name.fieldNotesContact': '編號印樣頁', + 'studio.templates.name.fieldNotesHerbarium': '植物標本頁', }; export default studioTemplates; diff --git a/shared/src/i18n/zh-TW/studioThemes.ts b/shared/src/i18n/zh-TW/studioThemes.ts index d95edc699..7d48c3bcd 100644 --- a/shared/src/i18n/zh-TW/studioThemes.ts +++ b/shared/src/i18n/zh-TW/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': '北歐', 'studio.theme.name.alpine': '阿爾卑斯', 'studio.theme.name.indiaStamp': '郵票拼貼', + 'studio.theme.name.riso': '孔版印刷', + 'studio.theme.name.magazine': '雜誌', + 'studio.theme.name.retroTravel': '復古旅行', + 'studio.theme.name.midnight': '午夜', + 'studio.theme.name.fieldNotes': '旅行手記', 'studio.theme.descr.posterPop': '奶油色紙張,珊瑚色與向日葵黃,粗重的海報標題', 'studio.theme.descr.cutout': '鈷藍紙張,珊瑚色與沙色圖形,白色文字', 'studio.theme.descr.postcard': '薄荷色紙張,深藍墨色,郵戳紅與手寫副標題', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': '淺灰紙張搭配石板灰、赭石與玫瑰色', 'studio.theme.descr.alpine': '雪白搭配森林綠、鐵鏽紅與天藍', 'studio.theme.descr.indiaStamp': '暖色紙張搭配洋紅、番紅花與青綠', + 'studio.theme.descr.riso': '奶油色紙張,孔版藍與螢光粉疊印', + 'studio.theme.descr.magazine': '米白紙張,黑色油墨,一抹紅色和醒目的刊頭', + 'studio.theme.descr.retroTravel': '泛黃的奶油色紙張,配橘色、青綠和芥末黃', + 'studio.theme.descr.midnight': '近乎黑色的紙張,暖白文字和霓虹點綴', + 'studio.theme.descr.fieldNotes': '牛皮紙,苔綠與鐵鏽色,手寫字和膠帶', 'studio.theme.panel': '主題', 'studio.theme.intro': '為整本書選一種風格。跟隨主題的顏色和字體會隨之改變,其他一切維持原樣。', 'studio.theme.themes': '主題列表', diff --git a/shared/src/i18n/zh/studioTemplates.ts b/shared/src/i18n/zh/studioTemplates.ts index 9c5b3cac7..4c9f0c48a 100644 --- a/shared/src/i18n/zh/studioTemplates.ts +++ b/shared/src/i18n/zh/studioTemplates.ts @@ -12,6 +12,11 @@ const studioTemplates: TranslationStrings = { 'studio.templates.archetype.grid-badge': '网格与徽章', 'studio.templates.archetype.minimal-serif': '极简', 'studio.templates.archetype.stamp-collage': '邮票', + 'studio.templates.archetype.riso': '孔版', + 'studio.templates.archetype.editorial': '杂志', + 'studio.templates.archetype.vintage-poster': '复古海报', + 'studio.templates.archetype.night-film': '夜色胶片', + 'studio.templates.archetype.field-notes': '旅行手记', 'studio.templates.name.spineBandStitched': '缝线色带', 'studio.templates.name.spineBandGingham': '格纹色带', 'studio.templates.name.spineBandScript': '色带与手写体', @@ -49,6 +54,77 @@ const studioTemplates: TranslationStrings = { 'studio.templates.name.gridFeature': '主图网格', 'studio.templates.name.gridColumns': '分栏网格', 'studio.templates.name.gridMosaic': '马赛克网格', + 'studio.templates.name.spineBandPlate': '贴入的插图页', + 'studio.templates.name.posterPopSunDisc': '太阳圆盘', + 'studio.templates.name.cutoutCircle': '圆形剪纸', + 'studio.templates.name.postcardGreetings': '问候明信片', + 'studio.templates.name.gridBadgeTiles': '徽章方格', + 'studio.templates.name.minimalSerifCameo': '椭圆浮雕', + 'studio.templates.name.stampCollageAirmail': '航空信封', + 'studio.templates.name.risoOverprint': '叠印海报', + 'studio.templates.name.risoHalftoneSun': '网点太阳', + 'studio.templates.name.risoZineStack': '小志堆叠', + 'studio.templates.name.risoPinkPress': '粉色印刷', + 'studio.templates.name.editorialMasthead': '刊头封面', + 'studio.templates.name.editorialCoverStory': '封面故事', + 'studio.templates.name.editorialSplit': '标题上方的照片', + 'studio.templates.name.editorialHeadline': '大标题封面', + 'studio.templates.name.vintagePosterPanorama': '海报全景', + 'studio.templates.name.vintagePosterArch': '拱门与海', + 'studio.templates.name.vintagePosterSunDisc': '山丘上的太阳', + 'studio.templates.name.vintagePosterPeaks': '层叠山峰', + 'studio.templates.name.nightFilmLetterbox': '宽银幕封面', + 'studio.templates.name.nightFilmStrip': '胶片条封面', + 'studio.templates.name.nightFilmTitleCard': '片名卡', + 'studio.templates.name.nightFilmFadeOut': '淡出至黑', + 'studio.templates.name.fieldNotesTorn': '撕下的笔记页', + 'studio.templates.name.fieldNotesPolaroid': '胶带贴的拍立得', + 'studio.templates.name.fieldNotesSpecimens': '胶带贴的标本', + 'studio.templates.name.fieldNotesLabel': '笔记本标签', + 'studio.templates.name.spineBandClothStory': '布面上的故事', + 'studio.templates.name.spineBandGinghamTrio': '格纹书脊三图', + 'studio.templates.name.spineBandAlbum': '精装相册', + 'studio.templates.name.posterPopHeadline': '海报大标题', + 'studio.templates.name.posterPopPostcards': '倾斜的照片', + 'studio.templates.name.posterPopPhotoWall': '照片墙', + 'studio.templates.name.cutoutStoryPage': '剪纸故事', + 'studio.templates.name.cutoutTrio': '剪纸三图', + 'studio.templates.name.cutoutScatter': '散落的照片', + 'studio.templates.name.cutoutMosaic': '剪纸马赛克', + 'studio.templates.name.postcardAirmail': '航空信', + 'studio.templates.name.postcardRack': '明信片架', + 'studio.templates.name.gridBadgeLetter': '印章与故事', + 'studio.templates.name.gridBadgeHeroSix': '主图与六图', + 'studio.templates.name.minimalSerifEssay': '静谧随笔', + 'studio.templates.name.minimalSerifTriptych': '三幅插图', + 'studio.templates.name.stampCollageLetter': '盖邮戳的信', + 'studio.templates.name.stampCollageArchStamps': '拱门与邮票', + 'studio.templates.name.stampCollageSheet': '邮票小全张', + 'studio.templates.name.risoStoryPlate': '故事与插图', + 'studio.templates.name.risoOffsetPair': '错位双图', + 'studio.templates.name.risoBlobTrio': '色块三图', + 'studio.templates.name.risoZineGrid': '小志网格', + 'studio.templates.name.risoPrintScatter': '散落印刷', + 'studio.templates.name.editorialFeatureOpener': '专题开篇', + 'studio.templates.name.editorialPullQuote': '引文摘句', + 'studio.templates.name.editorialFeatureColumns': '分栏专题', + 'studio.templates.name.editorialPortfolio': '作品集跨页', + 'studio.templates.name.editorialContactSheet': '印样页', + 'studio.templates.name.vintagePosterStory': '海报与故事', + 'studio.templates.name.vintagePosterTwin': '双联海报', + 'studio.templates.name.vintagePosterArcade': '拱廊', + 'studio.templates.name.vintagePosterPanels': '画板与山丘', + 'studio.templates.name.vintagePosterLabels': '行李标签', + 'studio.templates.name.nightFilmOpening': '开场镜头', + 'studio.templates.name.nightFilmSubtitles': '电影字幕', + 'studio.templates.name.nightFilmReels': '淡出与胶片卷', + 'studio.templates.name.nightFilmContact': '胶片印样页', + 'studio.templates.name.nightFilmDoubleReel': '双卷胶片', + 'studio.templates.name.fieldNotesDiary': '日记页', + 'studio.templates.name.fieldNotesTrail': '笔记卡小径', + 'studio.templates.name.fieldNotesRoute': '路线与拍立得', + 'studio.templates.name.fieldNotesContact': '编号印样页', + 'studio.templates.name.fieldNotesHerbarium': '植物标本页', }; export default studioTemplates; diff --git a/shared/src/i18n/zh/studioThemes.ts b/shared/src/i18n/zh/studioThemes.ts index fdc1d3269..cddcd0894 100644 --- a/shared/src/i18n/zh/studioThemes.ts +++ b/shared/src/i18n/zh/studioThemes.ts @@ -13,6 +13,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.name.nordic': '北欧', 'studio.theme.name.alpine': '阿尔卑斯', 'studio.theme.name.indiaStamp': '邮票拼贴', + 'studio.theme.name.riso': '孔版印刷', + 'studio.theme.name.magazine': '杂志', + 'studio.theme.name.retroTravel': '复古旅行', + 'studio.theme.name.midnight': '午夜', + 'studio.theme.name.fieldNotes': '旅行手记', 'studio.theme.descr.posterPop': '奶油色纸张,珊瑚色与向日葵黄,粗重的海报标题', 'studio.theme.descr.cutout': '钴蓝纸张,珊瑚色与沙色图形,白色文字', 'studio.theme.descr.postcard': '薄荷色纸张,藏青墨色,邮戳红与手写副标题', @@ -25,6 +30,11 @@ const studioThemes: TranslationStrings = { 'studio.theme.descr.nordic': '浅灰纸张配石板灰、赭石与玫瑰色', 'studio.theme.descr.alpine': '雪白配森林绿、铁锈红与天蓝', 'studio.theme.descr.indiaStamp': '暖色纸张配品红、藏红花与青绿', + 'studio.theme.descr.riso': '奶油色纸张,孔版蓝与荧光粉叠印', + 'studio.theme.descr.magazine': '米白纸张,黑色油墨,一抹红色和醒目的刊头', + 'studio.theme.descr.retroTravel': '泛黄的奶油色纸张,配橙色、青绿和芥末黄', + 'studio.theme.descr.midnight': '近乎黑色的纸张,暖白文字和霓虹点缀', + 'studio.theme.descr.fieldNotes': '牛皮纸,苔绿与铁锈色,手写字和胶带', 'studio.theme.panel': '主题', 'studio.theme.intro': '为整本书选一种风格。跟随主题的颜色和字体会随之改变,其他一切保持原样。', 'studio.theme.themes': '主题列表', diff --git a/wiki/Journey-Journal.md b/wiki/Journey-Journal.md index 1314f6bda..dbc874b45 100644 --- a/wiki/Journey-Journal.md +++ b/wiki/Journey-Journal.md @@ -179,7 +179,7 @@ A journey can also be laid out as a printable photo book. Open a journey and cli - **Page format** — Square 21 × 21 cm (the default), Square 30 × 30 cm, A4 landscape, A4 portrait, A5 landscape, or a custom width × height in millimetres. Everything is drawn as a spread (two pages side by side) with 3 mm bleed and a 5 mm safe margin. - **The shape of the book** follows a bound one: a cover, a single first page on the right (page 1, where a title page or a dedication goes), the spreads, a single last page on the left, and a back cover. The first and last pages take the cover layouts and, like the covers, stay where they are; new spreads always go between them. Page numbers, when switched on, count from the first page, and the number on screen is the number that prints. Books made before this had no single pages and keep their numbering as it was. - **Auto layout** has two entries. **This spread** builds the spread on screen again from the journal entry it came from, and is only offered on a spread that came from one. **The whole book** replaces every page, keeping your title and page setup. Both are ordinary undo steps, so you can press one, look at it, and undo. -- **Pages, Content, Layouts, Elements and Travel** are the sections of the left rail, in the order a book is made, with **Theme** and **Layers** set apart below them. The rail and the tabs inside its panels answer to the arrow keys. Content holds the journey's own photos and entries, with **Upload photos** and, when Immich or Synology Photos is connected, **From Immich** or **From Synology Photos** to add photos from your library the way the journey gallery does; Layouts opens on **Designed pages**, whole pages laid out by a designer: 21 covers in seven styles (spine band, poster, cut-out, postcard, grid and badge, minimal, stamps) for the cover and the other single pages, and 16 double spreads for the pages between. Each card shows the page you are on as the click will lay it, with its own photos and words in the template and in the book's theme, and the style chips narrow the set to one look. Below them come the book's own layouts and the built-in ones: thirteen spread layouts (Hero and story, Four up, Strip and text, Mosaic and so on) plus a separate set of five for the cover and back; Elements has six tabs: text styles, shapes, lines, empty frames with their frame styles and grids, a searchable icon library, and the stickers; Travel builds figures out of the journey itself: route maps, country outlines and lists, flags, date, day and distance marks, and a trip summary. Theme sets the look of the whole book, and Layers lists the page front to back. +- **Pages, Content, Layouts, Elements and Travel** are the sections of the left rail, in the order a book is made, with **Theme** and **Layers** set apart below them. The rail and the tabs inside its panels answer to the arrow keys. Content holds the journey's own photos and entries, with **Upload photos** and, when Immich or Synology Photos is connected, **From Immich** or **From Synology Photos** to add photos from your library the way the journey gallery does; Layouts opens on **Designed pages**, whole pages laid out by a designer: 48 covers in twelve styles (spine band, poster, cut-out, postcard, grid and badge, minimal, stamps, riso, editorial, vintage poster, night film, field notes) for the cover and the other single pages, and 60 double spreads for the pages between, five in each style. Each card shows the page you are on as the click will lay it, with its own photos and words in the template and in the book's theme, and the style chips narrow the set to one look. Below them come the book's own layouts and the built-in ones: thirteen spread layouts (Hero and story, Four up, Strip and text, Mosaic and so on) plus a separate set of five for the cover and back; Elements has six tabs: text styles, shapes, lines, empty frames with their frame styles and grids, a searchable icon library, and the stickers; Travel builds figures out of the journey itself: route maps, country outlines and lists, flags, date, day and distance marks, and a trip summary. Theme sets the look of the whole book, and Layers lists the page front to back. - **Properties** on the right edits whatever is selected, in the same order for every kind: what the element is or says (a text's words, a photo's crop and focal point, a shape), then its position and size, then its look (type, colour, fill, frame, corner), then its effects, and last **Arrange** (aligning, stacking, grouping, copying a style, and a button that shows the page in Layers). The groups you set rarely start folded and open by themselves on an element that already uses them. With nothing selected it shows the page background, the book's theme and the page numbers. An element that auto layout tied to a journal entry follows that entry until you edit it here, which breaks the link. - **Copy and paste**: a selected element copies with Ctrl+C and pastes on any page with Ctrl+V or the paste button. - **My layouts**: **Save this page as a layout** keeps the arrangement of a page without its photos, for every editor of the book, and applying it lays another page out the same way while keeping that page's photos and words. A book keeps up to 24 layouts.