chore: changed panel navbar style

This commit is contained in:
2025-10-12 00:18:39 +02:00
parent 7934a83cfd
commit cafdbb9653
3 changed files with 50 additions and 14 deletions
+2 -2
View File
@@ -4,8 +4,8 @@
"en": "ENG" "en": "ENG"
}, },
"navbar": { "navbar": {
"OrderMessagePanel": "ORDER MESSAGE", "OrderMessagePanel": "MESSAGE",
"OrderListPanel": "SAVED ORDERS", "OrderListPanel": "SAVED",
"OrderTrainPickerPanel": "TRAINS" "OrderTrainPickerPanel": "TRAINS"
}, },
"update": { "update": {
+2 -2
View File
@@ -13,8 +13,8 @@
"info-2": "Pełny changelog dostępny na <a href='https://github.com/Spythere/genera-tor' target='_blank'>GitHubie projektu</a>" "info-2": "Pełny changelog dostępny na <a href='https://github.com/Spythere/genera-tor' target='_blank'>GitHubie projektu</a>"
}, },
"navbar": { "navbar": {
"OrderMessagePanel": "TREŚĆ ROZKAZU", "OrderMessagePanel": "WIADOMOŚĆ",
"OrderListPanel": "ZAPISANE ROZKAZY", "OrderListPanel": "ZAPISANE",
"OrderTrainPickerPanel": "POCIĄGI" "OrderTrainPickerPanel": "POCIĄGI"
}, },
"order-message": { "order-message": {
+46 -10
View File
@@ -8,13 +8,33 @@
<div class="panel-container"> <div class="panel-container">
<div class="panel-nav"> <div class="panel-nav">
<button <button
v-for="(action, i) in navActions" key="OrderMessagePanel"
:key="action" class="g-button"
class="g-button option" :data-active="store.panelMode == 'OrderMessagePanel'"
:data-active="store.panelMode == action" @click="selectOrderMode('OrderMessagePanel')"
@click="selectOrderMode(action)"
> >
{{ t(`navbar.${action}`) }} <MessageSquareTextIcon :size="20" />
{{ t(`navbar.OrderMessagePanel`) }}
</button>
<button
key="OrderListPanel"
class="g-button"
:data-active="store.panelMode == 'OrderListPanel'"
@click="selectOrderMode('OrderListPanel')"
>
<BookMarkedIcon :size="20" />
{{ t(`navbar.OrderListPanel`) }}
</button>
<button
key="OrderTrainPickerPanel"
class="g-button"
:data-active="store.panelMode == 'OrderTrainPickerPanel'"
@click="selectOrderMode('OrderTrainPickerPanel')"
>
<TrainFrontIcon :size="20" />
{{ t(`navbar.OrderTrainPickerPanel`) }}
</button> </button>
</div> </div>
@@ -38,12 +58,11 @@ import OrderMessagePanel from '../components/Panels/OrderMessagePanel.vue';
import OrderListPanel from '../components/Panels/OrderListPanel.vue'; import OrderListPanel from '../components/Panels/OrderListPanel.vue';
import OrderTrainPickerPanel from '../components/Panels/OrderTrainPickerPanel.vue'; import OrderTrainPickerPanel from '../components/Panels/OrderTrainPickerPanel.vue';
import { TPanelMode } from '../types/dataTypes'; import { TPanelMode } from '../types/dataTypes';
import { BookMarkedIcon, MessageSquareTextIcon, TrainFrontIcon } from 'lucide-vue-next';
const { t } = useI18n(); const { t } = useI18n();
const store = useStore(); const store = useStore();
const navActions: TPanelMode[] = ['OrderMessagePanel', 'OrderListPanel', 'OrderTrainPickerPanel'];
function selectOrderMode(mode: TPanelMode) { function selectOrderMode(mode: TPanelMode) {
store.panelMode = mode; store.panelMode = mode;
} }
@@ -113,8 +132,8 @@ const panelComponent = computed(() => {
.panel-nav { .panel-nav {
display: flex; display: flex;
align-items: center;
justify-content: center; justify-content: center;
align-items: center;
gap: 0.25em; gap: 0.25em;
flex-wrap: wrap; flex-wrap: wrap;
@@ -124,11 +143,24 @@ const panelComponent = computed(() => {
.panel-nav > button { .panel-nav > button {
position: relative; position: relative;
display: flex;
justify-content: center;
align-items: center;
gap: 0.5em;
min-width: 8em;
padding: 0.25em 0.5em;
&:focus-visible {
outline: 1px solid white;
}
&::before { &::before {
position: absolute; position: absolute;
content: ''; content: '';
bottom: -3px; bottom: -3px;
left: 0; left: 50%;
transform: translateX(-50%);
width: 0; width: 0;
height: 3px; height: 3px;
@@ -137,6 +169,10 @@ const panelComponent = computed(() => {
background-color: colors.$accentCol; background-color: colors.$accentCol;
} }
&[data-active='true'] {
color: colors.$accentCol;
}
&[data-active='true']::before { &[data-active='true']::before {
width: 100%; width: 100%;
} }