windows/components/StartMenu.vue

68 lines
1.4 KiB
Vue
Raw Normal View History

2025-09-23 16:43:57 +00:00
<script setup lang="ts">
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>
<li @click="emit('about')">About This Project</li>
<li class="separator"></li>
<li @click="emit('settings')">System Settings...</li>
<li @click="emit('toggle-theme')">Toggle Theme</li>
<li class="separator"></li>
<li @click="emit('sign-out')">Sign Out</li>
<li @click="emit('close-all-windows')">Close All Windows</li>
</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>