ghostguild-org/app/components/PrivacyToggle.vue
Jennie Robinson Faber 896ad0336c Redesign interface across member dashboard and events pages
The changes involve a comprehensive interface redesign across multiple
pages, including:

- Updated peer support badge with shield design
- Switched privacy toggle to use USwitch component
- Added light/dark mode support throughout
- Enhanced layout and spacing in default template
- Added series details page with timeline view
- Improved event cards and status indicators
- Refreshed member profile styles for better readability
- Introduced global cursor styling for interactive elements
2025-10-09 16:25:57 +01:00

56 lines
1.2 KiB
Vue

<template>
<div class="flex items-center gap-3 text-sm">
<span class="text-gray-700 dark:text-ghost-400 text-xs font-medium"
>{{ label }}:</span
>
<div class="flex items-center gap-2">
<span
class="text-xs transition-colors"
:class="
isPrivate
? 'text-gray-500 dark:text-ghost-500'
: 'text-blue-600 dark:text-blue-400 font-semibold'
"
>
Members
</span>
<USwitch
:model-value="isPrivate"
@update:model-value="togglePrivacy"
color="primary"
size="md"
/>
<span
class="text-xs transition-colors"
:class="
isPrivate
? 'text-blue-600 dark:text-blue-400 font-semibold'
: 'text-gray-500 dark:text-ghost-500'
"
>
Private
</span>
</div>
</div>
</template>
<script setup>
const props = defineProps({
modelValue: {
type: String,
default: "members",
},
label: {
type: String,
default: "Privacy",
},
});
const emit = defineEmits(["update:modelValue"]);
const isPrivate = computed(() => props.modelValue === "private");
const togglePrivacy = (value) => {
emit("update:modelValue", value ? "private" : "members");
};
</script>