import type { Locale, Translations } from '@urbicon-ui/i18n'; import enTranslations from '../translations/en.js'; /** * blocks package i18n. * * **Only the English base bundle is eager.** German (`de`) is registered as a * lazy dynamic-import loader, so an English-only app never statically bundles the * `de` catalog (~4 KB min) — Vite/Rollup splits it into its own chunk that loads * only when the `de` locale is activated. `en` is the base/fallback locale. * * The eager base is `{ en }` (not `blocksTranslations`, which is retained below as * an `{ en }` back-compat export). Registration is lazy on first * `useBlocksI18n()`/`t()` — see `createPackageI18n`. * * ## Before the `de` chunk loads: resolution falls back to `en` * * A package-scoped lookup for a `de` key that isn't loaded yet resolves through * the package fallback locale, i.e. it returns the **English** string (verified: * `@urbicon-ui/i18n` `registry.translate` package path + `lazy-load.test.ts`). It * never renders the raw key. The provider (``) triggers the `de` * load in a **client-only** `$effect` on mount, so a `de` app renders English on * the server and the first client paint, then re-resolves to German once the * chunk lands — a brief text flash and a possible hydration text mismatch. * Two consequences of that window worth knowing: * * - The "falls back to English" guarantee assumes the provider's `fallbackLocale` * stays at its default (`en`). Pointing `fallbackLocale` at a lazy locale that * has not loaded yet leaves both lookup paths empty — such a key then renders * raw and fires `onMissingKey`. Eager-register any locale you use as fallback. * - `LocaleSwitcher` disables its trigger while a locale chunk load is in flight * (`registry.isLoading`), so without the eager register a `de` app briefly * shows the switcher disabled on first mount. * * The SSR recipe below removes both, along with the flash itself. * * ## SSR recipe for German (and other non-base) apps * * German SvelteKit SSR apps should register the `de` bundle eagerly **once at * app start** so the very first server render is already German (no flash, no * hydration mismatch). The registry is module-global and holds only static, * request-identical translation data, so a single startup registration is * SSR-safe — it carries no per-request state: * * ```ts * // src/hooks.server.ts (or any module evaluated once at server start) * import { registerBlocksLocale } from '@urbicon-ui/blocks'; * import de from '@urbicon-ui/blocks/i18n/de'; * * registerBlocksLocale('de', de); * ``` * * This keeps the `de` catalog out of English-only client bundles (the whole point * of the split) while making it eagerly present wherever it is actually rendered. */ export declare const blocksI18n: import("@urbicon-ui/i18n").PackageI18n<{ readonly accessibility: { readonly avatar: "Avatar"; readonly avatarGroup: "User avatars"; readonly breadcrumb: "Breadcrumb"; readonly breadcrumbExpand: "Show all breadcrumb items"; readonly clearInput: "Clear input"; readonly clearSearch: "Clear search"; readonly clearSelection: "Clear selection"; readonly closeDialog: "Close dialog"; readonly closeDrawer: "Close drawer"; readonly copied: "Copied"; readonly copy: "Copy"; readonly copyFailed: "Copy failed"; readonly dismiss: "Dismiss"; readonly fileUpload: "File upload"; readonly loading: "Loading"; readonly maximum: "Maximum"; readonly minimum: "Minimum"; readonly pagination: "Page navigation"; readonly pinInputCell: "Character {{index}} of {{total}}"; readonly progress: "Progress"; readonly qrCode: "QR code"; readonly slider: "Slider"; readonly timeHours: "Hours"; readonly timeMinutes: "Minutes"; readonly timeSeconds: "Seconds"; readonly timeMeridiem: "AM or PM"; readonly toggle: "Toggle"; readonly toggleOptions: "Toggle options"; readonly removeBadge: "Remove badge"; readonly removeFile: "Remove {{name}}"; readonly removeTag: "Remove {{label}}"; }; readonly button: { readonly close: "Close"; readonly apply: "Apply"; readonly cancel: "Cancel"; readonly confirm: "Confirm"; }; readonly menu: { readonly placeholder: "Select an option..."; }; readonly common: { readonly loading: "Loading..."; }; readonly languages: { readonly de: "Deutsch"; readonly en: "English"; readonly es: "Español"; readonly fr: "Français"; readonly it: "Italiano"; readonly nl: "Nederlands"; }; readonly localeSwitcher: { readonly ariaLabel: "Language selection"; readonly placeholder: "Select language..."; }; readonly pagination: { readonly next: "Next"; readonly first: "First"; readonly last: "Last"; readonly page: "Page"; readonly previous: "Previous"; readonly pageInfo: "{{label}} {{current}} of {{total}}"; readonly rangeInfo: "{{start}}–{{end}} of {{total}}"; }; readonly scroller: { readonly previous: "Previous"; readonly next: "Next"; readonly item: "Item {{index}} of {{total}}"; readonly items: "Items {{from}}–{{to}} of {{total}}"; }; readonly calendar: { readonly recurring: "Recurring event"; readonly previousMonth: "Previous month"; readonly nextMonth: "Next month"; readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousDay: "Previous day"; readonly nextDay: "Next day"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly previousYear: "Previous year"; readonly nextYear: "Next year"; readonly today: "Today"; readonly calendarGrid: "Calendar"; readonly weekdays: "Weekdays"; readonly weekNumber: "Week number"; readonly events: "Events"; readonly noEvents: "No events"; readonly showMore: "{{count}} more"; readonly legend: "Legend"; readonly yearView: "Year overview"; readonly weekView: "Week view"; readonly viewMonth: "Month"; readonly viewYear: "Year"; readonly viewWeek: "Week"; readonly viewDay: "Day"; readonly multiDayLabel: "Day {{current}} of {{total}}"; readonly untilTime: "until {{time}}"; readonly agendaView: "Agenda view"; readonly viewAgenda: "Agenda"; readonly viewSwitcher: "View mode"; readonly viewMonthShort: "M"; readonly viewYearShort: "Y"; readonly viewWeekShort: "W"; readonly viewDayShort: "D"; readonly viewAgendaShort: "A"; }; readonly planner: { readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousMonth: "Previous month"; readonly nextMonth: "Next month"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly today: "Today"; readonly grid: "Planner"; readonly itemCount: "{{count}} items"; }; readonly resourceTimeline: { readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly today: "Today"; readonly grid: "Resource timeline"; readonly occupied: "Occupied"; readonly moreItems: "{{count}} more"; readonly noResources: "No resources"; }; readonly commandPalette: { readonly noResults: "No results found."; readonly search: "Search..."; readonly hints: { readonly navigate: "Navigate"; readonly select: "Select"; readonly close: "Close"; }; }; readonly compositionBar: { readonly total: "Total"; readonly summary: "Composition: {{total}} ({{count}} shares) — {{parts}}"; readonly share: "Share"; readonly value: "Value"; readonly percent: "Percent"; readonly remaining: "remaining"; }; readonly guide: { readonly next: "Next"; readonly previous: "Back"; readonly skip: "Skip tour"; readonly done: "Done"; readonly step: "Step {{current}} of {{total}}"; readonly tour: "Guided tour"; readonly close: "Close"; readonly openHelp: "Help"; readonly backToList: "All topics"; readonly info: "More information"; readonly infoAbout: "More information about {{label}}"; readonly dismiss: "Dismiss hint"; readonly startTour: "Start the guided tour"; readonly actionRequired: "Complete the highlighted action to continue"; readonly filterPlaceholder: "Filter topics…"; readonly noResults: "No matching topics"; }; readonly avatar: { readonly status: { readonly online: "Online"; readonly offline: "Offline"; readonly away: "Away"; readonly busy: "Busy"; }; }; readonly journeyTimeline: { readonly label: "Journey"; readonly status: { readonly complete: "Completed"; readonly active: "In progress"; readonly pending: "Pending"; readonly attention: "Needs attention"; readonly blocked: "Blocked"; readonly skipped: "Skipped"; }; }; readonly datepicker: { readonly placeholder: "Select a date..."; readonly rangePlaceholder: "Select a date range..."; readonly openCalendar: "Open calendar"; readonly invalidDate: "Invalid date"; readonly outOfRange: "Date is outside the allowed range"; readonly invalidRange: "Invalid date range"; }; readonly fileUpload: { readonly exists: "File already added"; readonly invalidType: "File type {{type}} is not allowed"; readonly tooLarge: "File exceeds {{size}} limit"; readonly tooMany: "Maximum {{count}} files allowed"; readonly tooSmall: "File must be at least {{size}}"; }; readonly sankey: { readonly summary: "Sankey diagram: {{nodes}} nodes, {{links}} links — {{flows}}"; readonly source: "Source"; readonly target: "Target"; readonly value: "Value"; }; readonly slider: { readonly rangeStatus: { readonly insideRecommended: "In recommended range"; readonly insideValid: "In valid range"; readonly insideValidOnly: "Outside recommended range, but valid"; readonly outsideValid: "Outside valid range"; }; }; readonly themeSwitcher: { readonly lightMode: "Light mode"; readonly darkMode: "Dark mode"; readonly systemTheme: "System theme"; }; readonly chart: { readonly category: "Category"; readonly series: "Series {{index}}"; readonly segment: "Segment"; readonly value: "Value"; readonly share: "Share"; }; readonly stepper: { readonly optional: "Optional"; }; }>; /** * Context-scoped translation hook for the blocks package. Call during component * initialisation, then use the returned `t` (conventionally aliased `bt`): * * ```svelte * const bt = useBlocksI18n(); * * ``` * * Resolves against the nearest ``'s locale (or the base locale * when none is mounted) and re-renders reactively on locale change. For a lazy * locale (`de`) that isn't loaded yet, resolution falls back to the base locale * (`en`); see the module docblock and `registerBlocksLocale` for the SSR path. */ export declare const useBlocksI18n: () => import("@urbicon-ui/i18n").TypedTranslationFunction<{ readonly accessibility: { readonly avatar: "Avatar"; readonly avatarGroup: "User avatars"; readonly breadcrumb: "Breadcrumb"; readonly breadcrumbExpand: "Show all breadcrumb items"; readonly clearInput: "Clear input"; readonly clearSearch: "Clear search"; readonly clearSelection: "Clear selection"; readonly closeDialog: "Close dialog"; readonly closeDrawer: "Close drawer"; readonly copied: "Copied"; readonly copy: "Copy"; readonly copyFailed: "Copy failed"; readonly dismiss: "Dismiss"; readonly fileUpload: "File upload"; readonly loading: "Loading"; readonly maximum: "Maximum"; readonly minimum: "Minimum"; readonly pagination: "Page navigation"; readonly pinInputCell: "Character {{index}} of {{total}}"; readonly progress: "Progress"; readonly qrCode: "QR code"; readonly slider: "Slider"; readonly timeHours: "Hours"; readonly timeMinutes: "Minutes"; readonly timeSeconds: "Seconds"; readonly timeMeridiem: "AM or PM"; readonly toggle: "Toggle"; readonly toggleOptions: "Toggle options"; readonly removeBadge: "Remove badge"; readonly removeFile: "Remove {{name}}"; readonly removeTag: "Remove {{label}}"; }; readonly button: { readonly close: "Close"; readonly apply: "Apply"; readonly cancel: "Cancel"; readonly confirm: "Confirm"; }; readonly menu: { readonly placeholder: "Select an option..."; }; readonly common: { readonly loading: "Loading..."; }; readonly languages: { readonly de: "Deutsch"; readonly en: "English"; readonly es: "Español"; readonly fr: "Français"; readonly it: "Italiano"; readonly nl: "Nederlands"; }; readonly localeSwitcher: { readonly ariaLabel: "Language selection"; readonly placeholder: "Select language..."; }; readonly pagination: { readonly next: "Next"; readonly first: "First"; readonly last: "Last"; readonly page: "Page"; readonly previous: "Previous"; readonly pageInfo: "{{label}} {{current}} of {{total}}"; readonly rangeInfo: "{{start}}–{{end}} of {{total}}"; }; readonly scroller: { readonly previous: "Previous"; readonly next: "Next"; readonly item: "Item {{index}} of {{total}}"; readonly items: "Items {{from}}–{{to}} of {{total}}"; }; readonly calendar: { readonly recurring: "Recurring event"; readonly previousMonth: "Previous month"; readonly nextMonth: "Next month"; readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousDay: "Previous day"; readonly nextDay: "Next day"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly previousYear: "Previous year"; readonly nextYear: "Next year"; readonly today: "Today"; readonly calendarGrid: "Calendar"; readonly weekdays: "Weekdays"; readonly weekNumber: "Week number"; readonly events: "Events"; readonly noEvents: "No events"; readonly showMore: "{{count}} more"; readonly legend: "Legend"; readonly yearView: "Year overview"; readonly weekView: "Week view"; readonly viewMonth: "Month"; readonly viewYear: "Year"; readonly viewWeek: "Week"; readonly viewDay: "Day"; readonly multiDayLabel: "Day {{current}} of {{total}}"; readonly untilTime: "until {{time}}"; readonly agendaView: "Agenda view"; readonly viewAgenda: "Agenda"; readonly viewSwitcher: "View mode"; readonly viewMonthShort: "M"; readonly viewYearShort: "Y"; readonly viewWeekShort: "W"; readonly viewDayShort: "D"; readonly viewAgendaShort: "A"; }; readonly planner: { readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousMonth: "Previous month"; readonly nextMonth: "Next month"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly today: "Today"; readonly grid: "Planner"; readonly itemCount: "{{count}} items"; }; readonly resourceTimeline: { readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly today: "Today"; readonly grid: "Resource timeline"; readonly occupied: "Occupied"; readonly moreItems: "{{count}} more"; readonly noResources: "No resources"; }; readonly commandPalette: { readonly noResults: "No results found."; readonly search: "Search..."; readonly hints: { readonly navigate: "Navigate"; readonly select: "Select"; readonly close: "Close"; }; }; readonly compositionBar: { readonly total: "Total"; readonly summary: "Composition: {{total}} ({{count}} shares) — {{parts}}"; readonly share: "Share"; readonly value: "Value"; readonly percent: "Percent"; readonly remaining: "remaining"; }; readonly guide: { readonly next: "Next"; readonly previous: "Back"; readonly skip: "Skip tour"; readonly done: "Done"; readonly step: "Step {{current}} of {{total}}"; readonly tour: "Guided tour"; readonly close: "Close"; readonly openHelp: "Help"; readonly backToList: "All topics"; readonly info: "More information"; readonly infoAbout: "More information about {{label}}"; readonly dismiss: "Dismiss hint"; readonly startTour: "Start the guided tour"; readonly actionRequired: "Complete the highlighted action to continue"; readonly filterPlaceholder: "Filter topics…"; readonly noResults: "No matching topics"; }; readonly avatar: { readonly status: { readonly online: "Online"; readonly offline: "Offline"; readonly away: "Away"; readonly busy: "Busy"; }; }; readonly journeyTimeline: { readonly label: "Journey"; readonly status: { readonly complete: "Completed"; readonly active: "In progress"; readonly pending: "Pending"; readonly attention: "Needs attention"; readonly blocked: "Blocked"; readonly skipped: "Skipped"; }; }; readonly datepicker: { readonly placeholder: "Select a date..."; readonly rangePlaceholder: "Select a date range..."; readonly openCalendar: "Open calendar"; readonly invalidDate: "Invalid date"; readonly outOfRange: "Date is outside the allowed range"; readonly invalidRange: "Invalid date range"; }; readonly fileUpload: { readonly exists: "File already added"; readonly invalidType: "File type {{type}} is not allowed"; readonly tooLarge: "File exceeds {{size}} limit"; readonly tooMany: "Maximum {{count}} files allowed"; readonly tooSmall: "File must be at least {{size}}"; }; readonly sankey: { readonly summary: "Sankey diagram: {{nodes}} nodes, {{links}} links — {{flows}}"; readonly source: "Source"; readonly target: "Target"; readonly value: "Value"; }; readonly slider: { readonly rangeStatus: { readonly insideRecommended: "In recommended range"; readonly insideValid: "In valid range"; readonly insideValidOnly: "Outside recommended range, but valid"; readonly outsideValid: "Outside valid range"; }; }; readonly themeSwitcher: { readonly lightMode: "Light mode"; readonly darkMode: "Dark mode"; readonly systemTheme: "System theme"; }; readonly chart: { readonly category: "Category"; readonly series: "Series {{index}}"; readonly segment: "Segment"; readonly value: "Value"; readonly share: "Share"; }; readonly stepper: { readonly optional: "Optional"; }; }>; /** * Eagerly register the blocks bundle for a lazy locale (currently `de`) so it is * present for SSR / the first render, instead of loading client-side on mount. * Call once at app/server start, paired with the public locale subpath import: * * ```ts * import { registerBlocksLocale } from '@urbicon-ui/blocks'; * import de from '@urbicon-ui/blocks/i18n/de'; * registerBlocksLocale('de', de); * ``` * * Additive (does not drop the eager `en` base) and strict (throws on an * unsupported locale or a non-object bundle). */ export declare const registerBlocksLocale: (locale: Locale, bundle: Translations) => void; export declare const hasBlocksTranslation: (key: string) => boolean, getBlocksLocales: () => Locale[]; export type BlocksTranslationKey = keyof typeof enTranslations; /** * The eager base bundle only (`{ en }`). `de` is lazy and no longer part of this * object; import it explicitly via `@urbicon-ui/blocks/i18n/de` (e.g. for a parity * test or the SSR eager-register recipe above). */ declare const blocksTranslations: { en: { readonly accessibility: { readonly avatar: "Avatar"; readonly avatarGroup: "User avatars"; readonly breadcrumb: "Breadcrumb"; readonly breadcrumbExpand: "Show all breadcrumb items"; readonly clearInput: "Clear input"; readonly clearSearch: "Clear search"; readonly clearSelection: "Clear selection"; readonly closeDialog: "Close dialog"; readonly closeDrawer: "Close drawer"; readonly copied: "Copied"; readonly copy: "Copy"; readonly copyFailed: "Copy failed"; readonly dismiss: "Dismiss"; readonly fileUpload: "File upload"; readonly loading: "Loading"; readonly maximum: "Maximum"; readonly minimum: "Minimum"; readonly pagination: "Page navigation"; readonly pinInputCell: "Character {{index}} of {{total}}"; readonly progress: "Progress"; readonly qrCode: "QR code"; readonly slider: "Slider"; readonly timeHours: "Hours"; readonly timeMinutes: "Minutes"; readonly timeSeconds: "Seconds"; readonly timeMeridiem: "AM or PM"; readonly toggle: "Toggle"; readonly toggleOptions: "Toggle options"; readonly removeBadge: "Remove badge"; readonly removeFile: "Remove {{name}}"; readonly removeTag: "Remove {{label}}"; }; readonly button: { readonly close: "Close"; readonly apply: "Apply"; readonly cancel: "Cancel"; readonly confirm: "Confirm"; }; readonly menu: { readonly placeholder: "Select an option..."; }; readonly common: { readonly loading: "Loading..."; }; readonly languages: { readonly de: "Deutsch"; readonly en: "English"; readonly es: "Español"; readonly fr: "Français"; readonly it: "Italiano"; readonly nl: "Nederlands"; }; readonly localeSwitcher: { readonly ariaLabel: "Language selection"; readonly placeholder: "Select language..."; }; readonly pagination: { readonly next: "Next"; readonly first: "First"; readonly last: "Last"; readonly page: "Page"; readonly previous: "Previous"; readonly pageInfo: "{{label}} {{current}} of {{total}}"; readonly rangeInfo: "{{start}}–{{end}} of {{total}}"; }; readonly scroller: { readonly previous: "Previous"; readonly next: "Next"; readonly item: "Item {{index}} of {{total}}"; readonly items: "Items {{from}}–{{to}} of {{total}}"; }; readonly calendar: { readonly recurring: "Recurring event"; readonly previousMonth: "Previous month"; readonly nextMonth: "Next month"; readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousDay: "Previous day"; readonly nextDay: "Next day"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly previousYear: "Previous year"; readonly nextYear: "Next year"; readonly today: "Today"; readonly calendarGrid: "Calendar"; readonly weekdays: "Weekdays"; readonly weekNumber: "Week number"; readonly events: "Events"; readonly noEvents: "No events"; readonly showMore: "{{count}} more"; readonly legend: "Legend"; readonly yearView: "Year overview"; readonly weekView: "Week view"; readonly viewMonth: "Month"; readonly viewYear: "Year"; readonly viewWeek: "Week"; readonly viewDay: "Day"; readonly multiDayLabel: "Day {{current}} of {{total}}"; readonly untilTime: "until {{time}}"; readonly agendaView: "Agenda view"; readonly viewAgenda: "Agenda"; readonly viewSwitcher: "View mode"; readonly viewMonthShort: "M"; readonly viewYearShort: "Y"; readonly viewWeekShort: "W"; readonly viewDayShort: "D"; readonly viewAgendaShort: "A"; }; readonly planner: { readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousMonth: "Previous month"; readonly nextMonth: "Next month"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly today: "Today"; readonly grid: "Planner"; readonly itemCount: "{{count}} items"; }; readonly resourceTimeline: { readonly previousWeek: "Previous week"; readonly nextWeek: "Next week"; readonly previousRange: "Previous range"; readonly nextRange: "Next range"; readonly today: "Today"; readonly grid: "Resource timeline"; readonly occupied: "Occupied"; readonly moreItems: "{{count}} more"; readonly noResources: "No resources"; }; readonly commandPalette: { readonly noResults: "No results found."; readonly search: "Search..."; readonly hints: { readonly navigate: "Navigate"; readonly select: "Select"; readonly close: "Close"; }; }; readonly compositionBar: { readonly total: "Total"; readonly summary: "Composition: {{total}} ({{count}} shares) — {{parts}}"; readonly share: "Share"; readonly value: "Value"; readonly percent: "Percent"; readonly remaining: "remaining"; }; readonly guide: { readonly next: "Next"; readonly previous: "Back"; readonly skip: "Skip tour"; readonly done: "Done"; readonly step: "Step {{current}} of {{total}}"; readonly tour: "Guided tour"; readonly close: "Close"; readonly openHelp: "Help"; readonly backToList: "All topics"; readonly info: "More information"; readonly infoAbout: "More information about {{label}}"; readonly dismiss: "Dismiss hint"; readonly startTour: "Start the guided tour"; readonly actionRequired: "Complete the highlighted action to continue"; readonly filterPlaceholder: "Filter topics…"; readonly noResults: "No matching topics"; }; readonly avatar: { readonly status: { readonly online: "Online"; readonly offline: "Offline"; readonly away: "Away"; readonly busy: "Busy"; }; }; readonly journeyTimeline: { readonly label: "Journey"; readonly status: { readonly complete: "Completed"; readonly active: "In progress"; readonly pending: "Pending"; readonly attention: "Needs attention"; readonly blocked: "Blocked"; readonly skipped: "Skipped"; }; }; readonly datepicker: { readonly placeholder: "Select a date..."; readonly rangePlaceholder: "Select a date range..."; readonly openCalendar: "Open calendar"; readonly invalidDate: "Invalid date"; readonly outOfRange: "Date is outside the allowed range"; readonly invalidRange: "Invalid date range"; }; readonly fileUpload: { readonly exists: "File already added"; readonly invalidType: "File type {{type}} is not allowed"; readonly tooLarge: "File exceeds {{size}} limit"; readonly tooMany: "Maximum {{count}} files allowed"; readonly tooSmall: "File must be at least {{size}}"; }; readonly sankey: { readonly summary: "Sankey diagram: {{nodes}} nodes, {{links}} links — {{flows}}"; readonly source: "Source"; readonly target: "Target"; readonly value: "Value"; }; readonly slider: { readonly rangeStatus: { readonly insideRecommended: "In recommended range"; readonly insideValid: "In valid range"; readonly insideValidOnly: "Outside recommended range, but valid"; readonly outsideValid: "Outside valid range"; }; }; readonly themeSwitcher: { readonly lightMode: "Light mode"; readonly darkMode: "Dark mode"; readonly systemTheme: "System theme"; }; readonly chart: { readonly category: "Category"; readonly series: "Series {{index}}"; readonly segment: "Segment"; readonly value: "Value"; readonly share: "Share"; }; readonly stepper: { readonly optional: "Optional"; }; }; }; export { blocksTranslations };