windows/components/StartMenu.vue

70 lines
1.5 KiB
Vue
Raw Normal View History

2025-09-23 16:43:57 +00:00
<script setup lang="ts">
2025-09-24 10:08:22 +00:00
const { t } = useI18n();
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-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>