diff --git a/src/components/dialogs/NewInstanceDialog.vue b/src/components/dialogs/NewInstanceDialog.vue index a6359e9c..eeb19a26 100644 --- a/src/components/dialogs/NewInstanceDialog.vue +++ b/src/components/dialogs/NewInstanceDialog.vue @@ -9,65 +9,85 @@ - - {{ + + {{ t('dialog.new_instance.access_type_public') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_group') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_friend_plus') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_friend') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_invite_plus') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_invite') - }} - + }} + - - + {{ t('dialog.new_instance.group_access_type_members') }}{{ t('dialog.new_instance.group_access_type_members') }} - {{ t('dialog.new_instance.group_access_type_plus') }}{{ t('dialog.new_instance.group_access_type_plus') }} - {{ t('dialog.new_instance.group_access_type_public') }}{{ t('dialog.new_instance.group_access_type_public') }} - + - - {{ t('dialog.new_instance.region_usw') }} - {{ t('dialog.new_instance.region_use') }} - {{ t('dialog.new_instance.region_eu') }} - {{ t('dialog.new_instance.region_jp') }} - + + {{ t('dialog.new_instance.region_usw') }} + {{ t('dialog.new_instance.region_use') }} + {{ t('dialog.new_instance.region_eu') }} + {{ t('dialog.new_instance.region_jp') }} + - - {{ + + {{ t('dialog.new_instance.access_type_public') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_group') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_friend_plus') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_friend') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_invite_plus') - }} - {{ + }} + {{ t('dialog.new_instance.access_type_invite') - }} - + }} + - - {{ + + {{ t('dialog.new_instance.group_access_type_members') - }} - {{ + }} + {{ t('dialog.new_instance.group_access_type_plus') - }} - {{ + }} + {{ t('dialog.new_instance.group_access_type_public') - }} - + }} + - - {{ t('dialog.new_instance.region_usw') }} - {{ t('dialog.new_instance.region_use') }} - {{ t('dialog.new_instance.region_eu') }} - {{ t('dialog.new_instance.region_jp') }} - + + {{ t('dialog.new_instance.region_usw') }} + {{ t('dialog.new_instance.region_use') }} + {{ t('dialog.new_instance.region_eu') }} + {{ t('dialog.new_instance.region_jp') }} + + import { ToggleGroupRoot, useForwardPropsEmits } from 'reka-ui'; + import { cn } from '@/lib/utils'; + import { provide } from 'vue'; + import { reactiveOmit } from '@vueuse/core'; + + const props = defineProps({ + rovingFocus: { type: Boolean, required: false }, + disabled: { type: Boolean, required: false }, + orientation: { type: String, required: false }, + dir: { type: String, required: false }, + loop: { type: Boolean, required: false }, + asChild: { type: Boolean, required: false }, + as: { type: null, required: false }, + name: { type: String, required: false }, + required: { type: Boolean, required: false }, + type: { type: String, required: false }, + modelValue: { type: null, required: false }, + defaultValue: { type: null, required: false }, + class: { type: null, required: false }, + variant: { type: null, required: false }, + size: { type: null, required: false }, + spacing: { type: Number, required: false, default: 0 } + }); + + const emits = defineEmits(['update:modelValue']); + + provide('toggleGroup', { + variant: props.variant, + size: props.size, + spacing: props.spacing + }); + + const delegatedProps = reactiveOmit(props, 'class', 'size', 'variant'); + const forwarded = useForwardPropsEmits(delegatedProps, emits); + + + diff --git a/src/components/ui/toggle-group/ToggleGroupItem.vue b/src/components/ui/toggle-group/ToggleGroupItem.vue new file mode 100644 index 00000000..cfaabfca --- /dev/null +++ b/src/components/ui/toggle-group/ToggleGroupItem.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/components/ui/toggle-group/index.js b/src/components/ui/toggle-group/index.js new file mode 100644 index 00000000..ac3e34bb --- /dev/null +++ b/src/components/ui/toggle-group/index.js @@ -0,0 +1,2 @@ +export { default as ToggleGroup } from './ToggleGroup.vue'; +export { default as ToggleGroupItem } from './ToggleGroupItem.vue'; diff --git a/src/components/ui/toggle/Toggle.vue b/src/components/ui/toggle/Toggle.vue new file mode 100644 index 00000000..14574863 --- /dev/null +++ b/src/components/ui/toggle/Toggle.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/toggle/index.js b/src/components/ui/toggle/index.js new file mode 100644 index 00000000..970be6cd --- /dev/null +++ b/src/components/ui/toggle/index.js @@ -0,0 +1,25 @@ +import { cva } from 'class-variance-authority'; + +export { default as Toggle } from './Toggle.vue'; + +export const toggleVariants = cva( + "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap", + { + variants: { + variant: { + default: 'bg-transparent', + outline: + 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground' + }, + size: { + default: 'h-9 px-2 min-w-9', + sm: 'h-8 px-1.5 min-w-8', + lg: 'h-10 px-2.5 min-w-10' + } + }, + defaultVariants: { + variant: 'default', + size: 'default' + } + } +); diff --git a/src/views/Settings/components/PhotonSettings.vue b/src/views/Settings/components/PhotonSettings.vue index 3eeea1b3..1bf12ced 100644 --- a/src/views/Settings/components/PhotonSettings.vue +++ b/src/views/Settings/components/PhotonSettings.vue @@ -12,24 +12,27 @@
{{ t('view.settings.advanced.photon.event_hud.filter') }} - - {{ + {{ t('view.settings.advanced.photon.event_hud.filter_favorites') - }} - {{ + }} + {{ t('view.settings.advanced.photon.event_hud.filter_friends') - }} - {{ + }} + {{ t('view.settings.advanced.photon.event_hud.filter_everyone') - }} - + }} +
{{ @@ -65,24 +68,27 @@ @change="saveEventOverlay('VRCX_TimeoutHudOverlay')">
{{ t('view.settings.advanced.photon.timeout_hud.filter') }} - - {{ + {{ t('view.settings.advanced.photon.timeout_hud.filter_favorites') - }} - {{ + }} + {{ t('view.settings.advanced.photon.timeout_hud.filter_friends') - }} - {{ + }} + {{ t('view.settings.advanced.photon.timeout_hud.filter_everyone') - }} - + }} +
{{ @@ -99,6 +105,7 @@ import { useNotificationsSettingsStore, usePhotonStore } from '../../../stores'; import { photonEventTableTypeFilterList } from '../../../shared/constants/photon'; + import { ToggleGroup, ToggleGroupItem } from '../../../components/ui/toggle-group'; import SimpleSwitch from './SimpleSwitch.vue'; diff --git a/src/views/Settings/components/Tabs/GeneralTab.vue b/src/views/Settings/components/Tabs/GeneralTab.vue index e95e4335..9d036ebf 100644 --- a/src/views/Settings/components/Tabs/GeneralTab.vue +++ b/src/views/Settings/components/Tabs/GeneralTab.vue @@ -45,21 +45,24 @@
{{ t('view.settings.general.vrcx_updater.update_action') }}
- - {{ + @update:model-value="setAutoUpdateVRCX"> + {{ t('view.settings.general.vrcx_updater.auto_update_off') - }} - {{ + }} + {{ t('view.settings.general.vrcx_updater.auto_update_notify') - }} - {{ + }} + {{ t('view.settings.general.vrcx_updater.auto_update_download') - }} - + }} +
{{ t('view.settings.general.vrcx_updater.updater_disabled') }} @@ -242,21 +245,24 @@
- - {{ + @update:model-value="setAutoAcceptInviteRequests"> + {{ t('view.settings.general.automation.auto_invite_request_accept_off') - }} - {{ + }} + {{ t('view.settings.general.automation.auto_invite_request_accept_favs') - }} - {{ + }} + {{ t('view.settings.general.automation.auto_invite_request_accept_selected_favs') - }} - + }} +
@@ -301,6 +307,8 @@ import { links } from '../../../../shared/constants'; import { openExternalLink } from '../../../../shared/utils'; + import { ToggleGroup, ToggleGroupItem } from '../../../../components/ui/toggle-group'; + import SimpleSwitch from '../SimpleSwitch.vue'; const { t } = useI18n(); diff --git a/src/views/Settings/components/Tabs/NotificationsTab.vue b/src/views/Settings/components/Tabs/NotificationsTab.vue index 2e9c2f3f..10a0f63c 100644 --- a/src/views/Settings/components/Tabs/NotificationsTab.vue +++ b/src/views/Settings/components/Tabs/NotificationsTab.vue @@ -17,9 +17,12 @@ t('view.settings.notifications.notifications.desktop_notifications.when_to_display') }}
- - {{ + {{ t('view.settings.notifications.notifications.conditions.never') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.inside_vrchat') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.outside_vrchat') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.always') - }} - + }} +

- - {{ + @update:model-value="setDesktopToast(String($event))"> + {{ t('view.settings.notifications.notifications.conditions.never') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.desktop') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.inside_vr') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.outside_vr') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.inside_vrchat') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.outside_vrchat') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.always') - }} - + }} +
- {{ + @update:model-value="saveNotificationTTS"> + {{ t('view.settings.notifications.notifications.conditions.never') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.inside_vr') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.inside_vrchat') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.outside_vrchat') - }} - {{ + }} + {{ t('view.settings.notifications.notifications.conditions.always') - }} - + }} +
{{ t('view.settings.notifications.notifications.text_to_speech.tts_voice') }} @@ -272,6 +281,7 @@ import { useAdvancedSettingsStore, useNotificationsSettingsStore, useVrStore } from '../../../../stores'; import { Slider } from '../../../../components/ui/slider'; + import { ToggleGroup, ToggleGroupItem } from '../../../../components/ui/toggle-group'; import FeedFiltersDialog from '../../dialogs/FeedFiltersDialog.vue'; import NotificationPositionDialog from '../../dialogs/NotificationPositionDialog.vue'; diff --git a/src/views/Settings/components/WristOverlaySettings.vue b/src/views/Settings/components/WristOverlaySettings.vue index 19559807..fd8912dc 100644 --- a/src/views/Settings/components/WristOverlaySettings.vue +++ b/src/views/Settings/components/WristOverlaySettings.vue @@ -73,23 +73,26 @@
{{ t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on') }} - - {{ - t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on_left') - }} - {{ - t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on_right') - }} - {{ - t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on_both') - }} - + + {{ + t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on_left') + }} + {{ + t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on_right') + }} + {{ + t('view.settings.wrist_overlay.steamvr_wrist_overlay.display_overlay_on_both') + }} +
@@ -19,14 +19,22 @@ - - + + {{ t(option.textKey) }} - - + +
@@ -64,6 +80,7 @@ import { useI18n } from 'vue-i18n'; import { useNotificationsSettingsStore, usePhotonStore, useSharedFeedStore } from '../../../stores'; + import { ToggleGroup, ToggleGroupItem } from '../../../components/ui/toggle-group'; import { feedFiltersOptions, sharedFeedFiltersDefaults } from '../../../shared/constants'; import configRepository from '../../../service/config'; @@ -130,3 +147,11 @@ emit('update:feedFiltersDialogMode', ''); } + +