307 lines
13 KiB
TypeScript
307 lines
13 KiB
TypeScript
import type { IconName } from '@@/components/Icon/index.vue'
|
|
import type { SettingsSection } from '@/pinia/stores/settings'
|
|
import { t as translate } from '@@/i18n/runtime'
|
|
|
|
export const SETTINGS_SECTIONS: { id: SettingsSection, title: string, icon: IconName, description: string }[] = [
|
|
{ id: 'appearance', get title() {
|
|
return translate('common.appearance_86a63f')
|
|
}, icon: 'palette', get description() {
|
|
return translate('settings.interface_text_size_themes_color_5acf4b')
|
|
} },
|
|
{ id: 'editor', get title() {
|
|
return translate('settings.editor_3b7f59')
|
|
}, icon: 'edit', get description() {
|
|
return translate('settings.body_typography_code_font_and_f38913')
|
|
} },
|
|
{ id: 'shortcuts', get title() {
|
|
return translate('settings.shortcuts_ee2638')
|
|
}, icon: 'command', get description() {
|
|
return translate('settings.find_commands_and_add_remove_05d2bd')
|
|
} },
|
|
{ id: 'plugins', get title() {
|
|
return translate('settings.plugins_e806fb')
|
|
}, icon: 'grid', get description() {
|
|
return translate('settings.install_enable_disable_and_manage_50b0ae')
|
|
} },
|
|
{ id: 'storage', get title() {
|
|
return translate('settings.storage_26de3d')
|
|
}, icon: 'grid', get description() {
|
|
return translate('settings.storage_usage_backups_migration_and_a2f3e7')
|
|
} },
|
|
{ id: 'trash', get title() {
|
|
return translate('common.trash_ba35dc')
|
|
}, icon: 'trash', get description() {
|
|
return translate('settings.restore_or_permanently_delete_files_3db466')
|
|
} },
|
|
{ id: 'account', get title() {
|
|
return translate('settings.account_and_security_ed3b4b')
|
|
}, icon: 'user', get description() {
|
|
return translate('settings.password_api_tokens_and_signing_9c84b0')
|
|
} },
|
|
{ id: 'about', get title() {
|
|
return translate('settings.about_52d25a')
|
|
}, icon: 'info', get description() {
|
|
return translate('settings.app_version_installation_and_api_1217bd')
|
|
} },
|
|
]
|
|
|
|
export const SETTING_ITEMS = {
|
|
'locale': { section: 'appearance', get title() {
|
|
return translate('settings.language')
|
|
}, get description() {
|
|
return translate('settings.language_description')
|
|
}, keywords: 'language English Chinese 语言 英文 中文' },
|
|
'storage': { section: 'storage', get title() {
|
|
return translate('settings.storage_usage_37ac17')
|
|
}, get description() {
|
|
return translate('settings.automatically_counts_vault_databases_fonts_0fcb92')
|
|
}, get keywords() {
|
|
return translate('settings.capacity_usage_size_attachments_images_43526f')
|
|
} },
|
|
'backup-full': { section: 'storage', get title() {
|
|
return translate('settings.full_instance_backup_093926')
|
|
}, get description() {
|
|
return translate('settings.includes_notes_trash_authentication_settings_c1fad0')
|
|
}, get keywords() {
|
|
return translate('settings.data_import_export_backup_restore_edece0')
|
|
} },
|
|
'backup-notes': { section: 'storage', get title() {
|
|
return translate('settings.note_data_7d34ee')
|
|
}, get description() {
|
|
return translate('settings.export_markdown_and_attachments_as_362805')
|
|
}, get keywords() {
|
|
return translate('settings.data_md_markdown_import_export_0fe592')
|
|
} },
|
|
'backup-settings': { section: 'storage', get title() {
|
|
return translate('settings.settings_and_resources_7408ce')
|
|
}, get description() {
|
|
return translate('settings.back_up_preferences_shortcuts_plugin_88d8f8')
|
|
}, get keywords() {
|
|
return translate('settings.settings_import_export_fonts_themes_6ca5d2')
|
|
} },
|
|
'index-optimize': { section: 'storage', get title() {
|
|
return translate('settings.optimize_index_57f600')
|
|
}, get description() {
|
|
return translate('settings.optimize_full_text_search_and_c95d3a')
|
|
}, get keywords() {
|
|
return translate('settings.search_database_optimize_vacuum_378345')
|
|
} },
|
|
'index-rebuild': { section: 'storage', get title() {
|
|
return translate('settings.rebuild_index_9b178a')
|
|
}, get description() {
|
|
return translate('settings.rebuild_full_text_search_and_af7c7e')
|
|
}, get keywords() {
|
|
return translate('settings.search_database_rebuild_repair_fa9c2a')
|
|
} },
|
|
'temp-clear': { section: 'storage', get title() {
|
|
return translate('settings.clean_temporary_files_af91ae')
|
|
}, get description() {
|
|
return translate('settings.remove_temporary_files_no_longer_d96efe')
|
|
}, get keywords() {
|
|
return translate('settings.temporary_cache_space_cleanup_c6ff13')
|
|
} },
|
|
'settings-reset': { section: 'storage', get title() {
|
|
return translate('settings.reset_settings_9a70ef')
|
|
}, get description() {
|
|
return translate('settings.reset_all_rawmark_preferences_and_9b1af9')
|
|
}, get keywords() {
|
|
return translate('settings.reset_default_restore_3d517b')
|
|
} },
|
|
'logs-export': { section: 'storage', get title() {
|
|
return translate('settings.export_system_logs_d05855')
|
|
}, get description() {
|
|
return translate('settings.export_rotated_application_logs_and_b1f880')
|
|
}, get keywords() {
|
|
return translate('settings.logs_system_errors_diagnostics_f13574')
|
|
} },
|
|
'trash-retention': { section: 'trash', get title() {
|
|
return translate('settings.automatic_deletion_2fb018')
|
|
}, get description() {
|
|
return translate('settings.measured_from_the_original_deletion_0b80f9')
|
|
}, get keywords() {
|
|
return translate('settings.trash_days_automatic_cleanup_retention_f6669a')
|
|
} },
|
|
'trash-clear': { section: 'trash', get title() {
|
|
return translate('settings.empty_trash_1b5909')
|
|
}, get description() {
|
|
return translate('settings.permanently_delete_all_items_in_cf673d')
|
|
}, get keywords() {
|
|
return translate('settings.trash_cleanup_all_delete_bf12ce')
|
|
} },
|
|
'ui-font': { section: 'appearance', get title() {
|
|
return translate('settings.interface_font_52a039')
|
|
}, get description() {
|
|
return translate('settings.used_for_menus_sidebars_and_4ac475')
|
|
}, get keywords() {
|
|
return translate('settings.ui_fonts_import_delete_ttf_767e88')
|
|
} },
|
|
'ui-font-size': { section: 'appearance', get title() {
|
|
return translate('settings.interface_font_size_608972')
|
|
}, get description() {
|
|
return translate('settings.adjust_text_in_menus_sidebars_2eb51a')
|
|
}, get keywords() {
|
|
return translate('settings.ui_size_8d1a96')
|
|
} },
|
|
'theme-select': { section: 'appearance', get title() {
|
|
return translate('settings.themes_788db1')
|
|
}, get description() {
|
|
return translate('settings.use_a_built_in_theme_c2d94c')
|
|
}, get keywords() {
|
|
return translate('settings.light_dark_custom_2035c5')
|
|
} },
|
|
'color-mode': { section: 'appearance', get title() {
|
|
return translate('settings.color_mode_65260b')
|
|
}, get description() {
|
|
return translate('settings.choose_light_dark_or_follow_614653')
|
|
}, get keywords() {
|
|
return translate('settings.night_light_dark_system_49c06d')
|
|
} },
|
|
'glass-opacity': { section: 'appearance', get title() {
|
|
return translate('settings.glass_opacity_c60f04')
|
|
}, get description() {
|
|
return translate('settings.adjust_glass_panel_transparency_while_69b576')
|
|
}, get keywords() {
|
|
return translate('settings.opacity_background_33f07e')
|
|
} },
|
|
'css-snippets': { section: 'appearance', get title() {
|
|
return translate('settings.css_snippets_d0a2c3')
|
|
}, get description() {
|
|
return translate('settings.manage_custom_themes_and_css_5e5a1a')
|
|
}, get keywords() {
|
|
return translate('settings.styles_custom_advanced_88fcf7')
|
|
} },
|
|
'reset-appearance': { section: 'appearance', get title() {
|
|
return translate('settings.reset_appearance_and_typography_c73c09')
|
|
}, get description() {
|
|
return translate('settings.reset_themes_interface_and_body_b13efd')
|
|
}, get keywords() {
|
|
return translate('settings.reset_default_restore_3d517b')
|
|
} },
|
|
'text-font': { section: 'editor', get title() {
|
|
return translate('settings.body_font_dd63f6')
|
|
}, get description() {
|
|
return translate('settings.used_for_note_content_without_30ab7a')
|
|
}, get keywords() {
|
|
return translate('settings.sans_serif_system_13027c')
|
|
} },
|
|
'code-font': { section: 'editor', get title() {
|
|
return translate('settings.code_font_e42107')
|
|
}, get description() {
|
|
return translate('settings.used_for_code_blocks_and_a5b950')
|
|
}, get keywords() {
|
|
return translate('settings.monospace_jetbrains_mono_324be7')
|
|
} },
|
|
'font-size': { section: 'editor', get title() {
|
|
return translate('settings.editor_font_size_7c825e')
|
|
}, get description() {
|
|
return translate('settings.adjust_the_base_font_size_12669f')
|
|
}, get keywords() {
|
|
return translate('settings.body_size_daa3aa')
|
|
} },
|
|
'content-width': { section: 'editor', get title() {
|
|
return translate('settings.content_width_e92272')
|
|
}, get description() {
|
|
return translate('settings.limit_the_maximum_content_width_5de587')
|
|
}, get keywords() {
|
|
return translate('settings.narrow_standard_wide_full_width_d586a8')
|
|
} },
|
|
'line-height': { section: 'editor', get title() {
|
|
return translate('settings.body_line_height_088ef4')
|
|
}, get description() {
|
|
return translate('settings.adjust_the_distance_between_lines_d6a35c')
|
|
}, get keywords() {
|
|
return translate('settings.line_spacing_typography_703508')
|
|
} },
|
|
'selection-toolbar': { section: 'editor', get title() {
|
|
return translate('settings.selection_toolbar_1fe31f')
|
|
}, get description() {
|
|
return translate('settings.show_common_formatting_actions_when_b8ed19')
|
|
}, get keywords() {
|
|
return translate('settings.format_editing_8105d6')
|
|
} },
|
|
'spellcheck': { section: 'editor', get title() {
|
|
return translate('settings.spell_check_c664a4')
|
|
}, get description() {
|
|
return translate('settings.use_the_browser_s_spell_be99c8')
|
|
}, get keywords() {
|
|
return translate('settings.language_spelling_d5cb13')
|
|
} },
|
|
'tab-size': { section: 'editor', get title() {
|
|
return translate('settings.tab_width_c8881a')
|
|
}, get description() {
|
|
return translate('settings.change_only_the_display_width_3af0c9')
|
|
}, get keywords() {
|
|
return translate('settings.tab_indentation_spaces_8a3c02')
|
|
} },
|
|
'typography-preview': { section: 'editor', get title() {
|
|
return translate('settings.typography_preview_31ac73')
|
|
}, get description() {
|
|
return translate('settings.preview_the_current_body_and_aadacb')
|
|
}, get keywords() {
|
|
return translate('settings.font_size_line_height_spacing_862f84')
|
|
} },
|
|
'tokens': { section: 'account', get title() {
|
|
return translate('common.api_tokens_79db53')
|
|
}, get description() {
|
|
return translate('settings.create_or_revoke_rest_api_64d1ec')
|
|
}, get keywords() {
|
|
return translate('settings.api_rest_automation_security_ca1d07')
|
|
} },
|
|
'password': { section: 'account', get title() {
|
|
return translate('settings.change_password_81ecab')
|
|
}, get description() {
|
|
return translate('settings.other_devices_must_sign_in_2c516e')
|
|
}, get keywords() {
|
|
return translate('settings.account_security_authentication_e06655')
|
|
} },
|
|
'logout': { section: 'account', get title() {
|
|
return translate('common.sign_out_3ab8cc')
|
|
}, get description() {
|
|
return translate('settings.end_this_device_s_login_c5bf28')
|
|
}, get keywords() {
|
|
return translate('settings.account_session_4b227c')
|
|
} },
|
|
'install': { section: 'about', get title() {
|
|
return translate('settings.install_app_a298ba')
|
|
}, get description() {
|
|
return translate('settings.add_rawmark_to_your_desktop_fb06d4')
|
|
}, get keywords() {
|
|
return translate('settings.pwa_install_57a0e5')
|
|
} },
|
|
'version': { section: 'about', get title() {
|
|
return translate('settings.build_version_736f65')
|
|
}, get description() {
|
|
return translate('settings.the_application_version_loaded_by_3242d8')
|
|
}, get keywords() {
|
|
return translate('settings.rawmark_about_64ca9b')
|
|
} },
|
|
'openapi': { section: 'about', get title() {
|
|
return translate('settings.api_documentation_c7042f')
|
|
}, get description() {
|
|
return translate('settings.create_a_token_under_account_8d40ff')
|
|
}, get keywords() {
|
|
return translate('settings.openapi_automation_9f53ae')
|
|
} },
|
|
} satisfies Record<string, { section: SettingsSection, title: string, description: string, keywords: string }>
|
|
|
|
export type SettingId = keyof typeof SETTING_ITEMS
|
|
export interface SettingSearchResult {
|
|
section: SettingsSection
|
|
id?: SettingId
|
|
title: string
|
|
description: string
|
|
}
|
|
|
|
/** Search setting descriptions only, without reading values, notes, or management lists. */
|
|
export function searchSettings(query: string): SettingSearchResult[] {
|
|
const terms = query.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean)
|
|
if (!terms.length) return []
|
|
const matches = (text: string) => terms.every(term => text.toLocaleLowerCase().includes(term))
|
|
return [
|
|
...SETTINGS_SECTIONS.filter(s => matches(`${s.title} ${s.description}`)).map(s => ({ section: s.id, title: s.title, description: s.description })),
|
|
...(Object.entries(SETTING_ITEMS) as [SettingId, typeof SETTING_ITEMS[SettingId]][])
|
|
.filter(([, item]) => matches(`${item.title} ${item.description} ${item.keywords}`))
|
|
.map(([id, item]) => ({ id, section: item.section, title: item.title, description: item.description })),
|
|
]
|
|
}
|