import { Article } from '@phosphor-icons/react' import type { TranslationKey, TranslationValues } from '../lib/i18n' import type { NoteWidthMode } from '../types' import type { AllNotesFileVisibility } from '../utils/allNotesFileVisibility' import { DATE_DISPLAY_FORMATS, type DateDisplayFormat } from '../utils/dateDisplay' import { SectionHeading, SelectControl, SettingsGroup, SettingsRow, SettingsSwitchRow, } from './SettingsControls' type Translate = (key: TranslationKey, values?: TranslationValues) => string interface VaultContentSettingsSectionProps { t: Translate dateDisplayFormat: DateDisplayFormat setDateDisplayFormat: (value: DateDisplayFormat) => void defaultNoteWidth: NoteWidthMode setDefaultNoteWidth: (value: NoteWidthMode) => void sidebarTypePluralizationEnabled: boolean setSidebarTypePluralizationEnabled: (value: boolean) => void initialH1AutoRename: boolean setInitialH1AutoRename: (value: boolean) => void hideGitignoredFiles: boolean setHideGitignoredFiles: (value: boolean) => void allNotesFileVisibility: AllNotesFileVisibility setAllNotesFileVisibility: (value: AllNotesFileVisibility) => void } const NOTE_WIDTH_OPTIONS: readonly NoteWidthMode[] = ['normal', 'wide'] const NOTE_WIDTH_LABEL_KEYS: Record = { normal: 'settings.noteWidth.normal', wide: 'settings.noteWidth.wide', } const DATE_DISPLAY_LABEL_KEYS: Record = { us: 'settings.dateDisplay.us', european: 'settings.dateDisplay.european', friendly: 'settings.dateDisplay.friendly', iso: 'settings.dateDisplay.iso', } function buildNoteWidthOptions(t: Translate): Array<{ value: NoteWidthMode; label: string }> { return NOTE_WIDTH_OPTIONS.map((value) => ({ value, label: t(Reflect.get(NOTE_WIDTH_LABEL_KEYS, value) as Parameters[0]), })) } function buildDateDisplayOptions(t: Translate): Array<{ value: DateDisplayFormat; label: string }> { return DATE_DISPLAY_FORMATS.map((value) => ({ value, label: t(Reflect.get(DATE_DISPLAY_LABEL_KEYS, value) as Parameters[0]), })) } export function VaultContentSettingsSection({ t, dateDisplayFormat, setDateDisplayFormat, defaultNoteWidth, setDefaultNoteWidth, sidebarTypePluralizationEnabled, setSidebarTypePluralizationEnabled, initialH1AutoRename, setInitialH1AutoRename, hideGitignoredFiles, setHideGitignoredFiles, allNotesFileVisibility, setAllNotesFileVisibility, }: VaultContentSettingsSectionProps) { const updateAllNotesFileVisibility = (patch: Partial) => { setAllNotesFileVisibility({ ...allNotesFileVisibility, ...patch }) } return ( <>