2025-09-23 16:43:57 +00:00
|
|
|
<script setup lang="ts">
|
2025-09-25 02:10:57 +00:00
|
|
|
const { t, locale, setLocale } = useI18n();
|
2025-09-24 10:08:22 +00:00
|
|
|
|
2025-09-24 09:45:36 +00:00
|
|
|
// This component now only emits events and has no internal logic.
|
|
|
|
const emit = defineEmits([
|
|
|
|
'about',
|
|
|
|
'settings',
|
|
|
|
'toggle-theme',
|
|
|
|
'sign-out',
|
|
|
|
'close-all-windows'
|
|
|
|
]);
|
2025-09-25 02:10:57 +00:00
|
|
|
|
2025-09-23 16:43:57 +00:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2025-09-24 09:45:36 +00:00
|
|
|
<div class="start-menu">
|
|
|
|
<ul>
|
2025-09-24 10:08:22 +00:00
|
|
|
<li @click="emit('about')">{{ t('startMenu.about') }}</li>
|
2025-09-24 09:45:36 +00:00
|
|
|
<li class="separator"></li>
|
2025-09-24 10:08:22 +00:00
|
|
|
<li @click="emit('settings')">{{ t('startMenu.systemSettings') }}</li>
|
|
|
|
<li @click="emit('toggle-theme')">{{ t('startMenu.toggleTheme') }}</li>
|
2025-09-24 09:45:36 +00:00
|
|
|
<li class="separator"></li>
|
2025-09-24 10:08:22 +00:00
|
|
|
<li @click="emit('sign-out')">{{ t('startMenu.signOut') }}</li>
|
|
|
|
<li @click="emit('close-all-windows')">{{ t('startMenu.closeAllWindows') }}</li>
|
2025-09-24 09:45:36 +00:00
|
|
|
</ul>
|
|
|
|
</div>
|
2025-09-23 16:43:57 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.start-menu {
|
|
|
|
position: fixed;
|
2025-09-24 09:45:36 +00:00
|
|
|
top: 26px; /* Adjusted for new 22px taskbar height */
|
|
|
|
left: 8px;
|
|
|
|
width: 240px;
|
|
|
|
background-color: var(--start-menu-background);
|
|
|
|
border: 1px solid var(--start-menu-border-color);
|
|
|
|
border-radius: 12px;
|
|
|
|
z-index: 10000;
|
|
|
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
|
|
|
|
padding: 6px;
|
|
|
|
color: var(--content-text-color);
|
2025-09-23 16:43:57 +00:00
|
|
|
}
|
|
|
|
|
2025-09-24 09:45:36 +00:00
|
|
|
ul {
|
2025-09-23 16:43:57 +00:00
|
|
|
list-style: none;
|
2025-09-24 09:45:36 +00:00
|
|
|
padding: 0;
|
2025-09-23 16:43:57 +00:00
|
|
|
margin: 0;
|
|
|
|
}
|
|
|
|
|
2025-09-24 09:45:36 +00:00
|
|
|
li {
|
|
|
|
padding: 6px 12px;
|
|
|
|
font-size: 14px;
|
2025-09-23 16:43:57 +00:00
|
|
|
cursor: pointer;
|
2025-09-24 09:45:36 +00:00
|
|
|
border-radius: 6px;
|
|
|
|
transition: background-color 0.15s ease-in-out;
|
|
|
|
white-space: nowrap;
|
2025-09-23 16:43:57 +00:00
|
|
|
}
|
|
|
|
|
2025-09-24 09:45:36 +00:00
|
|
|
li:not(.separator):hover {
|
2025-09-23 16:43:57 +00:00
|
|
|
background-color: var(--taskbar-item-background-hover);
|
|
|
|
}
|
|
|
|
|
2025-09-24 09:45:36 +00:00
|
|
|
.separator {
|
|
|
|
height: 1px;
|
|
|
|
background-color: var(--start-menu-border-color);
|
|
|
|
margin: 6px 0;
|
|
|
|
padding: 0;
|
|
|
|
cursor: default;
|
2025-09-23 16:43:57 +00:00
|
|
|
}
|
|
|
|
</style>
|