restruct: updated sass version and rules

This commit is contained in:
2025-03-26 18:04:00 +01:00
parent 829059d35b
commit 22b6177560
71 changed files with 2447 additions and 2507 deletions
+1 -1
View File
@@ -26,7 +26,7 @@
"vue-router": "^4.4.0" "vue-router": "^4.4.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.14.12", "@types/node": "^22.13.13",
"@types/showdown": "^2.0.6", "@types/showdown": "^2.0.6",
"@vite-pwa/assets-generator": "^0.2.4", "@vite-pwa/assets-generator": "^0.2.4",
"@vitejs/plugin-vue": "^5.1.0", "@vitejs/plugin-vue": "^5.1.0",
+3 -12
View File
@@ -167,15 +167,14 @@ export default defineComponent({
</script> </script>
<style lang="scss"> <style lang="scss">
@import './styles/global'; @use './styles/animations';
@import './styles/animations';
.route { .route {
margin: 0 0.2em; margin: 0 0.2em;
&-active, &-active,
&[data-active='true'] { &[data-active='true'] {
color: $accentCol; color: var(--clr-primary);
font-weight: bold; font-weight: bold;
} }
} }
@@ -183,16 +182,8 @@ export default defineComponent({
// APP // APP
#app { #app {
color: white; color: white;
font-size: 1rem;
overflow-x: hidden; overflow-x: hidden;
font-size: 1em;
@include smallScreen() {
font-size: calc(0.65rem + 0.85vw);
}
@include screenLandscape() {
font-size: calc(0.45rem + 0.8vw);
}
} }
// CONTAINER // CONTAINER
-2
View File
@@ -37,5 +37,3 @@ export default defineComponent({
} }
}); });
</script> </script>
<style scoped></style>
+5 -5
View File
@@ -116,9 +116,9 @@ export default defineComponent({
} }
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/variables.scss'; @use '../../styles/responsive';
@import '../../styles/responsive.scss';
// HEADER // HEADER
.app_header { .app_header {
@@ -126,7 +126,7 @@ export default defineComponent({
justify-content: center; justify-content: center;
position: relative; position: relative;
background-color: $primaryCol; background-color: #2c2c2c;
} }
.header { .header {
@@ -141,7 +141,7 @@ export default defineComponent({
border-radius: 0 0 1em 1em; border-radius: 0 0 1em 1em;
@include smallScreen { @include responsive.smallScreen{
position: relative; position: relative;
margin-top: 0.5em; margin-top: 0.5em;
} }
@@ -180,7 +180,7 @@ export default defineComponent({
padding: 0.5em; padding: 0.5em;
@include smallScreen { @include responsive.smallScreen{
transform: translateX(85%); transform: translateX(85%);
} }
} }
+1 -5
View File
@@ -6,9 +6,7 @@
import { computed, defineComponent, ref } from 'vue'; import { computed, defineComponent, ref } from 'vue';
export default defineComponent({ export default defineComponent({
name: 'VueClock', name: 'VueClock',
data: () => ({ data: () => ({ timestamp: Date.now() }),
timestamp: Date.now()
}),
setup() { setup() {
let timestamp = ref(Date.now()); let timestamp = ref(Date.now());
@@ -28,8 +26,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss';
.clock { .clock {
display: flex; display: flex;
align-items: center; align-items: center;
+3 -3
View File
@@ -310,7 +310,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
// INDICATOR TOOLTIP ANIMATION // INDICATOR TOOLTIP ANIMATION
.tooltip-anim { .tooltip-anim {
@@ -379,7 +379,7 @@ export default defineComponent({
content: ''; content: '';
} }
@include midScreen() { @include responsive.midScreen() {
left: auto; left: auto;
right: 200%; right: 200%;
@@ -393,7 +393,7 @@ export default defineComponent({
} }
} }
@include smallScreen() { @include responsive.smallScreen{
min-width: 8em; min-width: 8em;
} }
} }
+1 -3
View File
@@ -73,11 +73,9 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/variables';
::v-deep(h1) { ::v-deep(h1) {
text-align: center; text-align: center;
color: $accentCol; color: var(--clr-primary);
} }
::v-deep(h2) { ::v-deep(h2) {
+1 -2
View File
@@ -13,8 +13,7 @@ export default defineComponent({});
</script> </script>
<style lang="scss"> <style lang="scss">
@import '../../styles/variables'; @use '../../styles/responsive';
@import '../../styles/responsive';
.button_content { .button_content {
display: flex; display: flex;
-2
View File
@@ -38,5 +38,3 @@ export default defineComponent({
} }
}); });
</script> </script>
<style scoped></style>
+2 -2
View File
@@ -43,7 +43,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
.card { .card {
position: fixed; position: fixed;
@@ -85,7 +85,7 @@ export default defineComponent({
overflow: auto; overflow: auto;
} }
@include smallScreen { @include responsive.smallScreen{
.card { .card {
align-items: flex-start; align-items: flex-start;
} }
-2
View File
@@ -150,8 +150,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss';
.body { .body {
display: grid; display: grid;
grid-template-rows: 1fr auto; grid-template-rows: 1fr auto;
+1 -3
View File
@@ -120,8 +120,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/variables.scss';
.region-dropdown { .region-dropdown {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -182,7 +180,7 @@ li.option {
background: none; background: none;
&:focus + span { &:focus + span {
color: $accentCol; color: var(--clr-primary);
font-weight: 800; font-weight: 800;
} }
} }
+13 -23
View File
@@ -7,7 +7,12 @@
@keypress="updateValue" @keypress="updateValue"
/> />
<img class="search-exit" src="/images/icon-exit.svg" alt="exit-icon" @click="clearSearchValue" /> <img
class="search-exit"
src="/images/icon-exit.svg"
alt="exit-icon"
@click="clearSearchValue"
/>
</div> </div>
</template> </template>
@@ -17,21 +22,10 @@ import { defineComponent, ref, watch } from 'vue';
export default defineComponent({ export default defineComponent({
emits: ['update:searchedValue', 'clearValue'], emits: ['update:searchedValue', 'clearValue'],
props: { props: {
searchedValue: { searchedValue: { type: String, required: true },
type: String, updateOnInput: { type: Boolean, default: true },
required: true titleToTranslate: { type: String, required: true },
}, clearValue: { type: Function }
updateOnInput: {
type: Boolean,
default: true
},
titleToTranslate: {
type: String,
required: true
},
clearValue: {
type: Function
}
}, },
setup(props, { emit }) { setup(props, { emit }) {
@@ -56,17 +50,13 @@ export default defineComponent({
emit('update:searchedValue', compSearchedValue.value); emit('update:searchedValue', compSearchedValue.value);
}; };
return { return { compSearchedValue, updateValue, clearSearchValue };
compSearchedValue,
updateValue,
clearSearchValue
};
} }
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive'; @use '../../styles/responsive';
.search { .search {
&-box { &-box {
@@ -78,7 +68,7 @@ export default defineComponent({
margin: 0.5em 0 0.5em 0.5em; margin: 0.5em 0 0.5em 0.5em;
@include smallScreen() { @include responsive.smallScreen{
width: 85%; width: 85%;
} }
} }
+3 -9
View File
@@ -20,15 +20,9 @@ import { Status } from '../../typings/common';
export default defineComponent({ export default defineComponent({
props: { props: {
dispatcherStatus: { dispatcherStatus: { type: Number as PropType<Status.ActiveDispatcher | number> },
type: Number as PropType<Status.ActiveDispatcher | number> dispatcherTimestamp: { type: Number as PropType<number | null> },
}, isOnline: { type: Boolean }
dispatcherTimestamp: {
type: Number as PropType<number | null>
},
isOnline: {
type: Boolean
}
}, },
mixins: [dateMixin], mixins: [dateMixin],
+3 -12
View File
@@ -22,20 +22,12 @@ export default defineComponent({
components: { VehicleThumbnail }, components: { VehicleThumbnail },
props: { props: {
trainStockList: { trainStockList: { type: Array as PropType<string[]>, required: true },
type: Array as PropType<string[]>, tractionOnly: { type: Boolean, required: false }
required: true
},
tractionOnly: {
type: Boolean,
required: false
}
}, },
data() { data() {
return { return { apiStore: useApiStore() };
apiStore: useApiStore()
};
}, },
computed: { computed: {
@@ -151,7 +143,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.list-wrapper { .list-wrapper {
display: flex; display: flex;
justify-content: center; justify-content: center;
@@ -51,7 +51,6 @@ function onImageLoad() {
<style lang="scss" scoped> <style lang="scss" scoped>
.vehicle-thumbnail { .vehicle-thumbnail {
position: relative; position: relative;
opacity: 0; opacity: 0;
transition: opacity 100ms ease-in-out; transition: opacity 100ms ease-in-out;
@@ -234,9 +234,9 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/animations';
@import '../../styles/JournalStats.scss'; @use '../../styles/journal-stats';
@import '../../styles/badge.scss'; @use '../../styles/responsive';
.daily-stats { .daily-stats {
text-align: left; text-align: left;
@@ -265,7 +265,7 @@ ul.stats-list {
gap: 0.5em; gap: 0.5em;
} }
@include smallScreen { @include responsive.smallScreen{
h3 { h3 {
text-align: center; text-align: center;
} }
@@ -121,14 +121,8 @@ import StationStatusBadge from '../../Global/StationStatusBadge.vue';
export default defineComponent({ export default defineComponent({
props: { props: {
entry: { entry: { type: Object as PropType<API.DispatcherHistory.Data>, required: true },
type: Object as PropType<API.DispatcherHistory.Data>, showExtraInfo: { type: Boolean, required: true }
required: true
},
showExtraInfo: {
type: Boolean,
required: true
}
}, },
components: { StationStatusBadge }, components: { StationStatusBadge },
@@ -136,10 +130,7 @@ export default defineComponent({
emits: ['toggleShowExtraInfo'], emits: ['toggleShowExtraInfo'],
data() { data() {
return { return { regions, apiStore: useApiStore() };
regions,
apiStore: useApiStore()
};
}, },
methods: { methods: {
@@ -151,8 +142,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/responsive.scss'; @use '../../../styles/responsive';
@import '../../../styles/badge.scss'; @use '../../../styles/badge';
.region-badge { .region-badge {
padding: 0 0.25em; padding: 0 0.25em;
@@ -207,7 +198,7 @@ export default defineComponent({
border-radius: 1em; border-radius: 1em;
} }
@include smallScreen { @include responsive.smallScreen{
.entry-info { .entry-info {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
@@ -81,5 +81,5 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/JournalStats.scss'; @use '../../../styles/journal-stats';
</style> </style>
@@ -104,6 +104,5 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/variables.scss'; @use '../../../styles/journal-section';
@import '../../../styles/JournalSection.scss';
</style> </style>
@@ -300,6 +300,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/dropdown'; @use '../../styles/dropdown';
@import '../../styles/dropdown_filters'; @use '../../styles/dropdown-filters';
</style> </style>
+2 -4
View File
@@ -79,14 +79,12 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/dropdown.scss'; @use '../../styles/dropdown';
@import '../../styles/dropdown_filters.scss'; @use '../../styles/dropdown-filters';
@import '../../styles/variables.scss';
.dropdown_wrapper.dropdown-align-right { .dropdown_wrapper.dropdown-align-right {
left: auto; left: auto;
right: 0; right: 0;
max-width: 700px; max-width: 700px;
// max-width: 100%;
} }
</style> </style>
@@ -225,9 +225,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/variables.scss'; @use '../../../styles/responsive';
@import '../../../styles/responsive.scss'; @use '../../../styles/badge';
@import '../../../styles/badge.scss';
.details-body { .details-body {
margin-top: 0.5em; margin-top: 0.5em;
@@ -250,7 +249,7 @@ export default defineComponent({
margin-top: 1em; margin-top: 1em;
button[data-checked='true'] { button[data-checked='true'] {
color: $accentCol; color: var(--clr-primary);
} }
} }
@@ -272,7 +271,7 @@ export default defineComponent({
span:last-child { span:last-child {
color: black; color: black;
background-color: $accentCol; background-color: var(--clr-primary);
border-radius: 0 0.25em 0.25em 0; border-radius: 0 0.25em 0.25em 0;
} }
} }
@@ -300,7 +299,7 @@ hr {
} }
} }
@include smallScreen() { @include responsive.smallScreen{
.timetable-specs { .timetable-specs {
justify-content: center; justify-content: center;
} }
@@ -130,8 +130,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/responsive'; @use '../../../styles/responsive';
@import '../../../styles/badge'; @use '../../../styles/badge';
.item-general { .item-general {
display: flex; display: flex;
@@ -191,7 +191,7 @@ export default defineComponent({
} }
} }
@include smallScreen { @include responsive.smallScreen{
.item-general { .item-general {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
@@ -59,7 +59,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/responsive.scss'; @use '../../../styles/responsive';
.entry-status { .entry-status {
display: flex; display: flex;
@@ -67,7 +67,7 @@ export default defineComponent({
flex-wrap: wrap; flex-wrap: wrap;
gap: 0.5em; gap: 0.5em;
@include smallScreen() { @include responsive.smallScreen{
justify-content: center; justify-content: center;
} }
} }
@@ -187,7 +187,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/badge.scss'; @use '../../../styles/badge';
.entry-stops { .entry-stops {
word-wrap: break-word; word-wrap: break-word;
@@ -68,5 +68,5 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/JournalStats.scss'; @use '../../../styles/journal-stats';
</style> </style>
@@ -3,7 +3,6 @@
<!-- General --> <!-- General -->
<EntryGeneral :timetable="timetableEntry" /> <EntryGeneral :timetable="timetableEntry" />
<div @click="toggleExtraInfo" style="cursor: pointer">
<!-- Route --> <!-- Route -->
<div class="entry-route"> <div class="entry-route">
<b>{{ timetableEntry.route.replace('|', ' - ') }}</b> <b>{{ timetableEntry.route.replace('|', ' - ') }}</b>
@@ -11,6 +10,7 @@
<hr /> <hr />
<div @click="toggleExtraInfo" style="cursor: pointer">
<!-- Status --> <!-- Status -->
<EntryStatus :timetable="timetableEntry" /> <EntryStatus :timetable="timetableEntry" />
</div> </div>
@@ -134,15 +134,20 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/responsive.scss'; @use '../../../styles/responsive';
.timetable-history-entry { .timetable-history-entry {
background-color: #1a1a1a; background-color: #1a1a1a;
padding: 1em; padding: 1em;
} }
@include smallScreen { .entry-route {
display: flex;
}
@include responsive.smallScreen{
.entry-route { .entry-route {
justify-content: center;
text-align: center; text-align: center;
} }
} }
@@ -107,10 +107,11 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/JournalSection.scss'; @use '../../../styles/animations';
@import '../../../styles/animations.scss'; @use '../../../styles/journal-section';
@use '../../../styles/responsive';
@include smallScreen { @include responsive.smallScreen{
.journal_item-info { .journal_item-info {
text-align: center; text-align: center;
} }
@@ -148,8 +148,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
@import '../../styles/sceneryViewTables.scss'; @use '../../styles/scenery-history-table';
.scenery-dispatchers-history { .scenery-dispatchers-history {
height: 100%; height: 100%;
@@ -194,7 +194,7 @@ export default defineComponent({
color: springgreen; color: springgreen;
} }
@include smallScreen { @include responsive.smallScreen{
.journal-list > div { .journal-list > div {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
+1 -2
View File
@@ -35,8 +35,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/variables.scss'; @use '../../styles/responsive';
@import '../../styles/responsive.scss';
.info-header { .info-header {
margin-top: 1em; margin-top: 1em;
+2 -2
View File
@@ -59,8 +59,8 @@ export default defineComponent({
</script> </script>
<style lang="scss"> <style lang="scss">
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
@import '../../styles/badge.scss'; @use '../../styles/badge';
h3.section-header { h3.section-header {
margin: 0.5em 0; margin: 0.5em 0;
@@ -28,5 +28,3 @@ export default defineComponent({
} }
}); });
</script> </script>
<style scoped></style>
@@ -102,7 +102,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/icons.scss'; @use '../../../styles/icons';
.info-icons { .info-icons {
display: flex; display: flex;
@@ -53,8 +53,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../../styles/variables.scss';
ul { ul {
position: relative; position: relative;
} }
@@ -18,7 +18,7 @@
:key="train.id" :key="train.id"
:data-status="status" :data-status="status"
> >
<router-link :to="train.driverRouteLocation" class="a-block"> <router-link :to="train.driverRouteLocation">
<span class="user_train"> {{ train.trainNo }}</span> <span class="user_train"> {{ train.trainNo }}</span>
<span class="user_name"> <span class="user_name">
{{ train.driverName }} {{ train.driverName }}
@@ -64,7 +64,7 @@
</div> </div>
<router-link <router-link
class="timetable-item a-block" class="timetable-item"
v-else v-else
v-for="(row, i) in sceneryTimetables" v-for="(row, i) in sceneryTimetables"
:key="row.train.id + i" :key="row.train.id + i"
@@ -327,9 +327,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
@import '../../styles/variables.scss'; @use '../../styles/animations';
@import '../../styles/animations.scss';
.scenery-timetable { .scenery-timetable {
height: 100%; height: 100%;
@@ -436,7 +435,7 @@ export default defineComponent({
&.current { &.current {
font-weight: bold; font-weight: bold;
color: $accentCol; color: var(--clr-primary);
} }
} }
@@ -449,7 +448,7 @@ export default defineComponent({
flex-wrap: wrap; flex-wrap: wrap;
.info-number { .info-number {
color: $accentCol; color: var(--clr-primary);
} }
.info-route { .info-route {
@@ -485,7 +484,7 @@ export default defineComponent({
align-self: center; align-self: center;
font-size: 0.9em; font-size: 0.9em;
color: $accentCol; color: var(--clr-primary);
&::after { &::after {
content: '\027F6'; content: '\027F6';
@@ -502,7 +501,7 @@ export default defineComponent({
font-size: 0.85em; font-size: 0.85em;
} }
@include smallScreen { @include responsive.smallScreen {
.timetable-item { .timetable-item {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
@@ -188,8 +188,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
@import '../../styles/sceneryViewTables.scss'; @use '../../styles/scenery-history-table';
.scenery-timetables-history { .scenery-timetables-history {
height: 100%; height: 100%;
+1 -3
View File
@@ -66,8 +66,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/variables.scss';
label { label {
position: relative; position: relative;
user-select: none; user-select: none;
@@ -98,7 +96,7 @@ label {
} }
&:focus-visible + span { &:focus-visible + span {
outline: 1px solid $accentCol; outline: 1px solid var(--clr-primary);
} }
} }
} }
@@ -379,10 +379,9 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive'; @use '../../styles/responsive';
@import '../../styles/card'; @use '../../styles/card';
@import '../../styles/animations'; @use '../../styles/animations';
@import '../../styles/variables';
h3.section-header { h3.section-header {
text-align: center; text-align: center;
@@ -432,7 +431,7 @@ h3.section-header {
.card_title { .card_title {
font-size: 2em; font-size: 2em;
font-weight: 700; font-weight: 700;
color: $accentCol; color: var(--clr-primary);
text-align: center; text-align: center;
} }
@@ -453,7 +452,7 @@ h3.section-header {
span { span {
min-width: 120px; min-width: 120px;
font-weight: bold; font-weight: bold;
color: $accentCol; color: var(--clr-primary);
} }
button { button {
@@ -527,7 +526,7 @@ h3.section-header {
} }
&:focus-visible + span { &:focus-visible + span {
outline: 1px solid $accentCol; outline: 1px solid var(--clr-primary);
} }
} }
} }
@@ -575,7 +574,7 @@ h3.section-header {
margin-bottom: 1em; margin-bottom: 1em;
&-value { &-value {
color: $accentCol; color: var(--clr-primary);
padding: 0.1em 0.2em; padding: 0.1em 0.2em;
text-align: center; text-align: center;
} }
@@ -604,14 +603,14 @@ h3.section-header {
border-radius: 50%; border-radius: 50%;
background: white; background: white;
border: 3px solid $accentCol; border: 3px solid var(--clr-primary);
background-color: #333; background-color: #333;
@include smallScreen() { @include responsive.smallScreen{
width: 15px; width: 15px;
height: 15px; height: 15px;
margin-top: -5px; margin-top: -5px;
border: 3px solid $accentCol; border: 3px solid var(--clr-primary);
} }
} }
@@ -622,14 +621,14 @@ h3.section-header {
border-radius: 50%; border-radius: 50%;
background: white; background: white;
border: 4px solid $accentCol; border: 4px solid var(--clr-primary);
cursor: pointer; cursor: pointer;
@include smallScreen() { @include responsive.smallScreen{
width: 1em; width: 1em;
height: 1em; height: 1em;
border: 3px solid $accentCol; border: 3px solid var(--clr-primary);
} }
} }
@@ -659,7 +658,7 @@ h3.section-header {
} }
} }
@include smallScreen { @include responsive.smallScreen{
.slider { .slider {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
+4 -3
View File
@@ -190,8 +190,9 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/dropdown.scss'; @use '../../styles/dropdown';
@import '../../styles/badge.scss'; @use '../../styles/badge';
@use '../../styles/responsive';
h1 img { h1 img {
vertical-align: text-bottom; vertical-align: text-bottom;
@@ -229,7 +230,7 @@ ul.stats-list {
} }
} }
@include smallScreen { @include responsive.smallScreen{
.filter-button span { .filter-button span {
display: none; display: none;
} }
+6 -7
View File
@@ -400,9 +400,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
@import '../../styles/variables.scss'; @use '../../styles/icons';
@import '../../styles/icons.scss';
$rowCol: #424242; $rowCol: #424242;
@@ -435,7 +434,7 @@ table {
} }
thead tr { thead tr {
background-color: $bgCol; background-color: var(--clr-bg3);
} }
thead th { thead th {
@@ -477,7 +476,7 @@ table {
} }
padding: 0.5em 0.25em; padding: 0.5em 0.25em;
background-color: $bgCol; background-color: var(--clr-bg3);
white-space: pre-wrap; white-space: pre-wrap;
cursor: pointer; cursor: pointer;
@@ -524,7 +523,7 @@ tr,
opacity: 0.2; opacity: 0.2;
} }
@include smallScreen() { @include responsive.smallScreen{
margin: 0; margin: 0;
padding: 0.3em 0.5em; padding: 0.3em 0.5em;
font-size: 1em; font-size: 1em;
@@ -537,7 +536,7 @@ tr,
max-width: 200px; max-width: 200px;
&.default { &.default {
color: $accentCol; color: var(--clr-primary);
} }
&.nonPublic { &.nonPublic {
+2 -1
View File
@@ -264,7 +264,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/badge.scss'; @use '../../styles/badge';
.image-warning { .image-warning {
height: 1em; height: 1em;
@@ -297,6 +297,7 @@ export default defineComponent({
.train-info { .train-info {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
font-size: 1em;
gap: 0.25em; gap: 0.25em;
background-color: #1a1a1a; background-color: #1a1a1a;
+2 -2
View File
@@ -195,8 +195,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/dropdown.scss'; @use '../../styles/dropdown';
@import '../../styles/dropdown_filters.scss'; @use '../../styles/dropdown-filters';
.search_content > div { .search_content > div {
margin: 0.5em auto; margin: 0.5em auto;
+1 -1
View File
@@ -367,7 +367,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
$barClr: #b1b1b1; $barClr: #b1b1b1;
$confirmedClr: #4ae24a; $confirmedClr: #4ae24a;
+9 -5
View File
@@ -80,7 +80,11 @@
<h3>{{ $t('train-stats.top-units') }}</h3> <h3>{{ $t('train-stats.top-units') }}</h3>
<transition-group tag="ul" name="stats-anim"> <transition-group tag="ul" name="stats-anim">
<li class="badge stat-badge" v-for="top in stats.topUnits.slice(0, 7)" :key="top.name"> <li
class="badge stat-badge"
v-for="top in stats.topUnits.slice(0, 7)"
:key="top.name"
>
<span>{{ top.name }}</span> <span>{{ top.name }}</span>
<span>{{ top.count }}</span> <span>{{ top.count }}</span>
</li> </li>
@@ -221,9 +225,9 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/dropdown.scss'; @use '../../styles/dropdown';
@import '../../styles/badge.scss'; @use '../../styles/badge';
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
h1 img { h1 img {
vertical-align: text-bottom; vertical-align: text-bottom;
@@ -248,7 +252,7 @@ h3 {
max-width: 600px; max-width: 600px;
} }
@include smallScreen { @include responsive.smallScreen{
.no-data { .no-data {
text-align: center; text-align: center;
} }
+7 -3
View File
@@ -19,7 +19,7 @@
>) >)
</div> </div>
<transition-group name="list-anim" tag="ul"> <transition-group name="list-anim" tag="div" class="list_wrapper">
<TrainTableItem v-for="train in trains" :key="train.id" :train="train" /> <TrainTableItem v-for="train in trains" :key="train.id" :train="train" />
</transition-group> </transition-group>
</div> </div>
@@ -93,8 +93,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
@import '../../styles/animations.scss'; @use '../../styles/animations';
.train-table { .train-table {
height: calc(100vh - 11em); height: calc(100vh - 11em);
@@ -105,6 +105,10 @@ export default defineComponent({
overflow-x: hidden; overflow-x: hidden;
} }
.list_wrapper {
padding: 2px; // ensures focused items outline visibility
}
.table-warning { .table-warning {
text-align: center; text-align: center;
+4 -5
View File
@@ -1,6 +1,5 @@
<template> <template>
<li class="train-item"> <router-link :to="train.driverRouteLocation" class="train-item">
<router-link class="a-block" :to="train.driverRouteLocation">
<div class="item-wrapper"> <div class="item-wrapper">
<TrainInfo :train="train" /> <TrainInfo :train="train" />
@@ -23,7 +22,6 @@
</div> </div>
</div> </div>
</router-link> </router-link>
</li>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@@ -41,9 +39,10 @@ defineProps({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../styles/responsive.scss'; @use '../../styles/responsive';
.train-item { .train-item {
display: block;
background-color: #1a1a1a; background-color: #1a1a1a;
margin-bottom: 1em; margin-bottom: 1em;
width: 100%; width: 100%;
@@ -67,7 +66,7 @@ defineProps({
line-height: 1.5em; line-height: 1.5em;
} }
@include smallScreen() { @include responsive.smallScreen {
.item-wrapper { .item-wrapper {
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: 1em 0; gap: 1em 0;
@@ -1,5 +1,4 @@
@import 'variables.scss'; @use 'responsive';
@import 'responsive.scss';
.badge { .badge {
font-weight: 600; font-weight: 600;
@@ -23,7 +22,7 @@
text-align: center; text-align: center;
@include smallScreen() { @include responsive.smallScreen{
font-size: 1em; font-size: 1em;
} }
} }
@@ -131,7 +130,7 @@
color: white; color: white;
& > span:first-child { & > span:first-child {
background-color: $accentCol; background-color: var(--clr-primary);
color: black; color: black;
} }
} }
@@ -1,5 +1,4 @@
@import './variables.scss'; @use 'responsive';
@import './responsive.scss';
.card-dimmer { .card-dimmer {
position: fixed; position: fixed;
@@ -46,7 +45,7 @@
} }
} }
@include smallScreen { @include responsive.smallScreen{
.card { .card {
max-height: 85vh; max-height: 85vh;
} }
@@ -1,6 +1,5 @@
@import 'search_box.scss'; @use 'search-box';
@import 'responsive.scss'; @use 'responsive';
@import 'variables.scss';
.actions-bar { .actions-bar {
display: flex; display: flex;
@@ -51,7 +50,7 @@ h1.option-title {
} }
.sort-option[data-selected='true'] { .sort-option[data-selected='true'] {
color: $accentCol; color: var(--clr-primary);
font-weight: bold; font-weight: bold;
} }
@@ -95,7 +94,7 @@ h1.option-title {
} }
} }
@include smallScreen() { @include responsive.smallScreen{
h1 { h1 {
text-align: center; text-align: center;
@@ -1,5 +1,4 @@
@import 'responsive.scss'; @use 'responsive';
@import 'variables.scss';
.dropdown-anim { .dropdown-anim {
&-enter-from, &-enter-from,
@@ -29,9 +28,9 @@
left: 0; left: 0;
top: calc(100% + 0.5em); top: calc(100% + 0.5em);
background-color: $bgCol; background-color: var(--clr-bg3);
// box-shadow: 0 5px 10px 2px #0f0f0f; // box-shadow: 0 5px 10px 2px #0f0f0f;
box-shadow: 0 0 5px 1px $accentCol; box-shadow: 0 0 5px 1px var(--clr-primary);
width: 100%; width: 100%;
max-width: 550px; max-width: 550px;
@@ -40,7 +39,7 @@
z-index: 100; z-index: 100;
} }
@include smallScreen { @include responsive.smallScreen{
.dropdown_wrapper { .dropdown_wrapper {
font-size: 1.1em; font-size: 1.1em;
max-width: 100%; max-width: 100%;
@@ -1,6 +1,5 @@
@import 'fonts'; @use 'fonts';
@import 'variables'; @use 'responsive';
@import 'responsive';
:root { :root {
--clr-primary: #ffc014; --clr-primary: #ffc014;
@@ -8,6 +7,7 @@
--clr-bg: #4d4d4d; --clr-bg: #4d4d4d;
--clr-bg2: #1b1b1b; --clr-bg2: #1b1b1b;
--clr-bg3: #1d1d1d;
--clr-accent: #1085b3; --clr-accent: #1085b3;
--clr-accent2: #ff3d5d; --clr-accent2: #ff3d5d;
@@ -18,7 +18,7 @@
--clr-pn: #ffd000; --clr-pn: #ffd000;
--clr-error: #fa3636; --clr-error: #fa3636;
--clr-warning: #c59429; --clr-warning: #ffe15b;
--clr-donator: #f7a4ff; --clr-donator: #f7a4ff;
@@ -60,11 +60,21 @@ body {
overflow-x: hidden; overflow-x: hidden;
position: relative; position: relative;
font-size: 16px;
@include responsive.smallScreen {
font-size: calc(0.65rem + 0.85vw);
}
@include responsive.screenLandscape {
font-size: calc(0.45rem + 0.8vw);
}
&.no-scroll { &.no-scroll {
overflow-y: hidden; overflow-y: hidden;
padding-right: var(--no-scroll-padding); padding-right: var(--no-scroll-padding);
@include smallScreen() { @include responsive.smallScreen {
padding: 0; padding: 0;
} }
} }
@@ -108,11 +118,11 @@ input {
} }
*:focus-visible { *:focus-visible {
outline: 1px solid $accentCol; outline: 1px solid var(--clr-primary);
} }
.title { .title {
color: $accentCol; color: var(--clr-primary);
font-weight: 600; font-weight: 600;
padding: 0.35em 0; padding: 0.35em 0;
@@ -130,20 +140,14 @@ a {
color: inherit; color: inherit;
} }
a:not(.a-block):not(.a-button):not(.a-row) { a:focus-visible {
display: inline-block; outline: 1px solid var(--clr-primary);
transition: color 0.3s;
&:hover,
&:focus {
color: $accentCol;
border: none;
}
} }
a.a-block { .route-active,
display: block; .route[data-active='true'] {
color: #ffc014;
font-weight: 700;
} }
a.a-row { a.a-row {
@@ -292,7 +296,7 @@ a.a-button {
width: 1.3em; width: 1.3em;
} }
@include smallScreen() { @include responsive.smallScreen {
bottom: 1em; bottom: 1em;
right: 0; right: 0;
left: 50%; left: 50%;
@@ -330,7 +334,7 @@ a.a-button {
cursor: help; cursor: help;
} }
@include smallScreen { @include responsive.smallScreen {
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 0.5em; width: 0.5em;
height: 0.5em; height: 0.5em;
@@ -1,5 +1,5 @@
@import 'responsive.scss'; @use 'responsive';
@import 'animations.scss'; @use 'animations';
.journal-list { .journal-list {
display: flex; display: flex;
@@ -12,7 +12,7 @@
.list_wrapper { .list_wrapper {
overflow-y: auto; overflow-y: auto;
height: calc(100vh - 12.5em); height: calc(100vh - 12.5em);
min-height: 500px; min-height: 650px;
margin-top: 0.5em; margin-top: 0.5em;
position: relative; position: relative;
@@ -68,7 +68,7 @@
font-size: 1.2em; font-size: 1.2em;
} }
@include smallScreen() { @include responsive.smallScreen{
.journal_top-bar { .journal_top-bar {
justify-content: center; justify-content: center;
flex-wrap: wrap; flex-wrap: wrap;
@@ -1,6 +1,5 @@
@import 'variables.scss'; @use 'responsive';
@import 'responsive.scss'; @use 'badge';
@import 'badge.scss';
.stats-tab { .stats-tab {
position: absolute; position: absolute;
@@ -11,7 +10,7 @@
width: 100%; width: 100%;
background-color: #1a1a1a; background-color: #1a1a1a;
box-shadow: 0 0 5px 1px $accentCol; box-shadow: 0 0 5px 1px var(--clr-primary);
padding: 1em; padding: 1em;
display: flex; display: flex;
@@ -33,7 +32,7 @@ hr.section-separator {
gap: 0.5em; gap: 0.5em;
} }
@include smallScreen { @include responsive.smallScreen{
.journal-stats { .journal-stats {
text-align: center; text-align: center;
} }
@@ -1,4 +1,4 @@
@import 'responsive.scss'; @use 'responsive';
.search { .search {
label { label {
@@ -39,7 +39,7 @@
max-width: 300px; max-width: 300px;
} }
@include smallScreen { @include responsive.smallScreen{
&-box, &-box,
&-button { &-button {
margin: 0.5em 0 0 0; margin: 0.5em 0 0 0;
-11
View File
@@ -1,11 +0,0 @@
$primaryCol: #2c2c2c;
$secondaryCol: #01e733;
$bgCol: #1d1d1d;
$bgLigtherCol: #5b5b5b;
$errorCol: #ff1919;
$warningCol: #ffe15b;
$accentCol: #ffc014;
$accent2Col: #ff3d5d;
+2 -2
View File
@@ -147,7 +147,7 @@ function copyStockToClipboard() {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/responsive'; @use '../styles/responsive';
$viewBgCol: #1a1a1a; $viewBgCol: #1a1a1a;
@@ -209,7 +209,7 @@ $viewBgCol: #1a1a1a;
gap: 0.5em; gap: 0.5em;
} }
@include smallScreen { @include responsive.smallScreen{
span.hidable { span.hidable {
display: none; display: none;
} }
+1 -1
View File
@@ -332,5 +332,5 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/JournalSection.scss'; @use '../styles/journal-section';
</style> </style>
+1 -1
View File
@@ -482,5 +482,5 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/JournalSection.scss'; @use '../styles/journal-section';
</style> </style>
+5 -6
View File
@@ -173,8 +173,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/responsive.scss'; @use '../styles/responsive';
@import '../styles/variables.scss';
button.back-btn { button.back-btn {
img { img {
@@ -193,7 +192,7 @@ button.back-btn {
text-align: center; text-align: center;
padding: 2em 1em; padding: 2em 1em;
color: $warningCol; color: var(--clr-warning);
display: inline-block; display: inline-block;
@@ -275,7 +274,7 @@ button.back-btn {
.checkpoint_item { .checkpoint_item {
&.current { &.current {
font-weight: bold; font-weight: bold;
color: $accentCol; color: var(--clr-primary);
} }
&:not(:last-child)::after { &:not(:last-child)::after {
@@ -286,7 +285,7 @@ button.back-btn {
} }
} }
@include midScreen { @include responsive.midScreen {
.scenery-wrapper { .scenery-wrapper {
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: 0; gap: 0;
@@ -304,7 +303,7 @@ button.back-btn {
} }
} }
@include smallScreen { @include responsive.smallScreen{
.scenery-left { .scenery-left {
max-height: 100vh; max-height: 100vh;
} }
+3 -4
View File
@@ -4,7 +4,7 @@
<div class="stations-options"> <div class="stations-options">
<StationFilterCard <StationFilterCard
:showCard="filterCardOpen" :showCard="filterCardOpen"
:exit="(filterCardOpen = false)" :exit="filterCardOpen = false"
ref="filterCardRef" ref="filterCardRef"
/> />
@@ -78,8 +78,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/variables.scss'; @use '../styles/responsive';
@import '../styles/responsive.scss';
.stations-view { .stations-view {
position: relative; position: relative;
@@ -115,7 +114,7 @@ button.btn-donation {
background-color: lighten($btnColor, 5%); background-color: lighten($btnColor, 5%);
} }
@include smallScreen { @include responsive.smallScreen{
span { span {
display: none; display: none;
} }
+2 -2
View File
@@ -114,7 +114,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/responsive.scss'; @use '../styles/responsive';
.trains-view { .trains-view {
position: relative; position: relative;
@@ -134,7 +134,7 @@ export default defineComponent({
margin-bottom: 0.5em; margin-bottom: 0.5em;
} }
@include smallScreen { @include responsive.smallScreen {
.trains_topbar { .trains_topbar {
justify-content: space-between; justify-content: space-between;
} }
+15 -15
View File
@@ -1,17 +1,22 @@
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; import vue from '@vitejs/plugin-vue';
import { VitePWA } from 'vite-plugin-pwa'; import { VitePWA } from 'vite-plugin-pwa';
import path from 'path';
export default defineConfig({ export default defineConfig({
server: { server: { port: 5123, open: true },
port: 5001, preview: { port: 4001, open: true },
open: true
},
preview: {
port: 4001,
open: true
},
publicDir: 'public', publicDir: 'public',
css: {
preprocessorOptions: {
scss: { additionalData: `@use '@/styles/global';`, silenceDeprecations: ['legacy-js-api'] }
}
},
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
},
plugins: [ plugins: [
vue(), vue(),
VitePWA({ VitePWA({
@@ -29,17 +34,12 @@ export default defineConfig({
handler: 'StaleWhileRevalidate', handler: 'StaleWhileRevalidate',
options: { options: {
cacheName: 'stacjownik-api-cache', cacheName: 'stacjownik-api-cache',
cacheableResponse: { cacheableResponse: { statuses: [0, 200] }
statuses: [0, 200]
} }
} }
},
] ]
}, },
devOptions: { devOptions: { enabled: true, suppressWarnings: true }
enabled: true,
suppressWarnings: true
}
}) })
], ],
build: { build: {
+2201 -2189
View File
File diff suppressed because it is too large Load Diff