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>
|