frontend/app/components/TerminalWindow.vue

79 lines
1.7 KiB
Vue
Raw Normal View History

2025-09-11 14:22:41 +00:00
<template>
2025-09-11 16:50:28 +00:00
<BaseWindow
:window-data="windowData"
@close="$emit('close')"
@minimize="$emit('minimize')"
@bring-to-front="$emit('bring-to-front')"
@update-position="$emit('update-position', $event)"
@update-dimensions="$emit('update-dimensions', $event)"
2025-09-11 14:22:41 +00:00
>
2025-09-11 16:50:28 +00:00
<div class="terminal-content">
<div class="terminal-section">
<span class="prompt">guest@daniels-mac:~$</span>
<input
v-model="command"
type="text"
class="terminal-input"
@keydown.enter="runCommand"
placeholder="Terminal is for display only"
autofocus
/>
2025-09-11 14:22:41 +00:00
</div>
</div>
2025-09-11 16:50:28 +00:00
</BaseWindow>
2025-09-11 14:22:41 +00:00
</template>
<script setup>
import { ref } from 'vue';
2025-09-11 16:50:28 +00:00
import BaseWindow from './BaseWindow.vue';
2025-09-11 14:22:41 +00:00
2025-09-11 16:50:28 +00:00
defineProps({ windowData: Object });
defineEmits(['close', 'minimize', 'bring-to-front', 'update-position', 'update-dimensions']);
2025-09-11 14:22:41 +00:00
const command = ref('');
const runCommand = () => {
command.value = '';
};
</script>
<style scoped>
2025-09-11 16:50:28 +00:00
.terminal-content {
2025-09-11 14:22:41 +00:00
background-color: black;
color: #34d399; /* green-400 */
font-family: 'Courier New', Courier, monospace;
2025-09-11 16:50:28 +00:00
height: 100%;
display: flex;
flex-direction: column;
padding: 5px; /* Added small padding */
2025-09-11 14:22:41 +00:00
}
.terminal-section {
2025-09-11 16:50:28 +00:00
display: flex;
align-items: center;
width: 100%;
2025-09-11 14:22:41 +00:00
}
.prompt {
color: #fbbF24; /* yellow-400 */
margin-right: 8px;
white-space: nowrap;
}
.terminal-input {
background: transparent;
border: none;
color: #34d399; /* green-400 */
width: 100%;
font-family: 'Courier New', Courier, monospace;
}
.terminal-input:focus {
outline: none;
}
.terminal-input::placeholder {
color: #6b7280; /* gray-500 */
}
</style>