From 833e56826db60a9a4c3b3046c8230337669dd2b5 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com.> Date: Tue, 16 Sep 2025 16:03:08 +0100 Subject: [PATCH] fix buttons and formatting --- .../public/locales/en-GB/translation.json | 27 +++- .../src/components/shared/ButtonSelector.tsx | 5 +- .../BookletImpositionSettings.tsx | 138 ++++++------------ 3 files changed, 78 insertions(+), 92 deletions(-) diff --git a/frontend/public/locales/en-GB/translation.json b/frontend/public/locales/en-GB/translation.json index f090fd08e..4c0d1adc4 100644 --- a/frontend/public/locales/en-GB/translation.json +++ b/frontend/public/locales/en-GB/translation.json @@ -1684,8 +1684,33 @@ "title": "Booklet Imposition", "header": "Booklet Imposition", "submit": "Create Booklet", + "bookletType": { + "label": "Style", + "standard": "Standard", + "sideStitch": "Side Stitch", + "standardDesc": "Standard for saddle-stitched binding (fold in half)", + "sideStitchDesc": "Side stitch for binding along the edge" + }, + "pagesPerSheet": { + "label": "Pages Per Sheet", + "two": "2 Pages", + "four": "4 Pages", + "twoDesc": "Two pages side by side on each sheet (most common)", + "fourDesc": "Four pages arranged in a 2x2 grid on each sheet" + }, + "pageOrientation": { + "label": "Page Orientation", + "landscape": "Landscape", + "portrait": "Portrait", + "landscapeDesc": "A4 landscape → A5 portrait when folded (recommended, standard booklet size)", + "portraitDesc": "A4 portrait → A6 when folded (smaller booklet)" + }, + "addBorder": { + "label": "Add borders around pages", + "tooltip": "Adds borders around each page section to help with cutting and alignment", + "description": "Helpful for cutting and alignment when printing" + }, "files": { - "placeholder": "Select PDF files to create booklet impositions from" }, "error": { "failed": "An error occurred while creating the booklet imposition." diff --git a/frontend/src/components/shared/ButtonSelector.tsx b/frontend/src/components/shared/ButtonSelector.tsx index bc95134d6..850a547c4 100644 --- a/frontend/src/components/shared/ButtonSelector.tsx +++ b/frontend/src/components/shared/ButtonSelector.tsx @@ -45,7 +45,10 @@ const ButtonSelector = ({ flex: fullWidth ? 1 : undefined, height: 'auto', minHeight: '2.5rem', - fontSize: 'var(--mantine-font-size-sm)' + fontSize: 'var(--mantine-font-size-sm)', + lineHeight: '1.4', + paddingTop: '0.5rem', + paddingBottom: '0.5rem' }} > {option.label} diff --git a/frontend/src/components/tools/bookletImposition/BookletImpositionSettings.tsx b/frontend/src/components/tools/bookletImposition/BookletImpositionSettings.tsx index e90f7e7a8..6be52a1d3 100644 --- a/frontend/src/components/tools/bookletImposition/BookletImpositionSettings.tsx +++ b/frontend/src/components/tools/bookletImposition/BookletImpositionSettings.tsx @@ -1,6 +1,8 @@ import React from "react"; -import { Button, Stack, Text, Divider } from "@mantine/core"; +import { useTranslation } from "react-i18next"; +import { Stack, Text, Divider } from "@mantine/core"; import { BookletImpositionParameters } from "../../../hooks/tools/bookletImposition/useBookletImpositionParameters"; +import ButtonSelector from "../../shared/ButtonSelector"; interface BookletImpositionSettingsProps { parameters: BookletImpositionParameters; @@ -9,6 +11,7 @@ interface BookletImpositionSettingsProps { } const BookletImpositionSettings = ({ parameters, onParameterChange, disabled = false }: BookletImpositionSettingsProps) => { + const { t } = useTranslation(); return ( @@ -16,35 +19,20 @@ const BookletImpositionSettings = ({ parameters, onParameterChange, disabled = f {/* Booklet Type */} - Booklet Type -
- - -
+ onParameterChange('bookletType', value)} + options={[ + { value: 'BOOKLET', label: t('bookletImposition.bookletType.standard', 'Standard Booklet') }, + { value: 'SIDE_STITCH_BOOKLET', label: t('bookletImposition.bookletType.sideStitch', 'Side-Stitch Booklet') } + ]} + disabled={disabled} + /> - {parameters.bookletType === 'BOOKLET' - ? "Standard booklet for saddle-stitched binding (fold in half)" - : "Side-stitched booklet for binding along the edge"} + {parameters.bookletType === 'BOOKLET' + ? t('bookletImposition.bookletType.standardDesc', 'Standard booklet for saddle-stitched binding (fold in half)') + : t('bookletImposition.bookletType.sideStitchDesc', 'Side-stitched booklet for binding along the edge')}
@@ -52,35 +40,20 @@ const BookletImpositionSettings = ({ parameters, onParameterChange, disabled = f {/* Pages Per Sheet */} - Pages Per Sheet -
- - -
+ onParameterChange('pagesPerSheet', value)} + options={[ + { value: 2, label: t('bookletImposition.pagesPerSheet.two', '2 Pages') }, + { value: 4, label: t('bookletImposition.pagesPerSheet.four', '4 Pages') } + ]} + disabled={disabled} + /> - {parameters.pagesPerSheet === 2 - ? "Two pages side by side on each sheet (most common)" - : "Four pages arranged in a 2x2 grid on each sheet"} + {parameters.pagesPerSheet === 2 + ? t('bookletImposition.pagesPerSheet.twoDesc', 'Two pages side by side on each sheet (most common)') + : t('bookletImposition.pagesPerSheet.fourDesc', 'Four pages arranged in a 2x2 grid on each sheet')}
@@ -88,35 +61,20 @@ const BookletImpositionSettings = ({ parameters, onParameterChange, disabled = f {/* Page Orientation */} - Page Orientation -
- - -
+ onParameterChange('pageOrientation', value)} + options={[ + { value: 'LANDSCAPE', label: t('bookletImposition.pageOrientation.landscape', 'Landscape') }, + { value: 'PORTRAIT', label: t('bookletImposition.pageOrientation.portrait', 'Portrait') } + ]} + disabled={disabled} + /> - {parameters.pageOrientation === 'LANDSCAPE' - ? "A4 landscape → A5 portrait when folded (standard booklet size)" - : "A4 portrait → A6 when folded (smaller booklet)"} + {parameters.pageOrientation === 'LANDSCAPE' + ? t('bookletImposition.pageOrientation.landscapeDesc', 'A4 landscape → A5 portrait when folded (recommended, standard booklet size)') + : t('bookletImposition.pageOrientation.portraitDesc', 'A4 portrait → A6 when folded (smaller booklet)')}
@@ -125,8 +83,8 @@ const BookletImpositionSettings = ({ parameters, onParameterChange, disabled = f {/* Add Border Option */} - - Helpful for cutting and alignment when printing + + {t('bookletImposition.addBorder.description', 'Helpful for cutting and alignment when printing')}