-
{{ t('view.settings.appearance.appearance.language') }}
+
+
+
-
+
-
-
- {{ t('view.settings.appearance.appearance.font_family') }}
-
+
-
- {{ t('view.settings.appearance.appearance.zoom') }}
+
+
+
-
-
-
-
-
-
-
-
-
{{
- t('view.settings.appearance.user_colors.trust_levels.visitor')
- }}
-
-
-
-
{{
- t('view.settings.appearance.user_colors.trust_levels.new_user')
- }}
-
-
-
-
{{ t('view.settings.appearance.user_colors.trust_levels.user') }}
-
-
-
-
{{
- t('view.settings.appearance.user_colors.trust_levels.known_user')
- }}
-
-
-
-
{{
- t('view.settings.appearance.user_colors.trust_levels.trusted_user')
- }}
-
-
-
-
{{
- t('view.settings.appearance.user_colors.trust_levels.vrchat_team')
- }}
-
-
-
-
{{
- t('view.settings.appearance.user_colors.trust_levels.nuisance')
- }}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ t(colorEntry.labelKey) }}
+
+
-
+
@@ -397,6 +337,7 @@
import { CheckIcon, ChevronDown } from 'lucide-vue-next';
import { useAppearanceSettingsStore, useFavoriteStore, useVrStore } from '@/stores';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
+ import { Switch } from '@/components/ui/switch';
import { getLanguageName, languageCodes } from '@/localization';
import { APP_CJK_FONT_PACKS, APP_FONT_CONFIG, APP_FONT_DEFAULT_KEY, APP_FONT_FAMILIES } from '@/shared/constants';
import { Button } from '@/components/ui/button';
@@ -408,7 +349,8 @@
import TableLimitsDialog from '@/components/dialogs/TableLimitsDialog.vue';
import { saveSortFavoritesOption } from '@/coordinators/favoriteCoordinator';
- import SimpleSwitch from '../SimpleSwitch.vue';
+ import SettingsGroup from '../SettingsGroup.vue';
+ import SettingsItem from '../SettingsItem.vue';
const { t } = useI18n();
@@ -464,6 +406,51 @@
setAppCjkFontPack
} = appearanceSettingsStore;
+ const trustColorEntries = [
+ {
+ key: 'untrusted',
+ tagClass: 'x-tag-untrusted',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.visitor',
+ presets: ['#CCCCCC']
+ },
+ {
+ key: 'basic',
+ tagClass: 'x-tag-basic',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.new_user',
+ presets: ['#1778ff']
+ },
+ {
+ key: 'known',
+ tagClass: 'x-tag-known',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.user',
+ presets: ['#2bcf5c']
+ },
+ {
+ key: 'trusted',
+ tagClass: 'x-tag-trusted',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.known_user',
+ presets: ['#ff7b42']
+ },
+ {
+ key: 'veteran',
+ tagClass: 'x-tag-veteran',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.trusted_user',
+ presets: ['#b18fff', '#8143e6', '#ff69b4', '#b52626', '#ffd000', '#abcdef']
+ },
+ {
+ key: 'vip',
+ tagClass: 'x-tag-vip',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.vrchat_team',
+ presets: ['#ff2626']
+ },
+ {
+ key: 'troll',
+ tagClass: 'x-tag-troll',
+ labelKey: 'view.settings.appearance.user_colors.trust_levels.nuisance',
+ presets: ['#782f2f']
+ }
+ ];
+
const fontDropdownDisplayText = computed(() => {
if (appFontFamily.value === 'custom') {
return t('view.settings.appearance.appearance.font_family_custom');