diff --git a/package-lock.json b/package-lock.json
index 1df6156..733f97d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.0.0",
"dependencies": {
"@headlessui/vue": "^1.7.3",
+ "@heroicons/vue": "^2.0.12",
"@intlify/vite-plugin-vue-i18n": "^6.0.3",
"console-stamp": "^3.0.6",
"cron": "^2.1.0",
@@ -115,6 +116,14 @@
"vue": "^3.2.0"
}
},
+ "node_modules/@heroicons/vue": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.0.12.tgz",
+ "integrity": "sha512-ypuQl/Wei7BoShO65AdRVikXDaSt6hJBRuKs2pVd/6HvxfEz18oXraH+J5G/QPIwObMEVhMb6nkOs9l3WZv/gA==",
+ "peerDependencies": {
+ "vue": ">= 3"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
@@ -4894,6 +4903,12 @@
"integrity": "sha512-Is4iakKts9u9E0+jEZNzoJpBjwq2SamwEIoEl2RlyYSu6Zco536GsPXaQEfg/o7Eyc1GUUlcL+dJd4Rt7qyf7A==",
"requires": {}
},
+ "@heroicons/vue": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.0.12.tgz",
+ "integrity": "sha512-ypuQl/Wei7BoShO65AdRVikXDaSt6hJBRuKs2pVd/6HvxfEz18oXraH+J5G/QPIwObMEVhMb6nkOs9l3WZv/gA==",
+ "requires": {}
+ },
"@humanwhocodes/config-array": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
diff --git a/package.json b/package.json
index dfa7f18..f58ffe3 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
},
"dependencies": {
"@headlessui/vue": "^1.7.3",
+ "@heroicons/vue": "^2.0.12",
"@intlify/vite-plugin-vue-i18n": "^6.0.3",
"console-stamp": "^3.0.6",
"cron": "^2.1.0",
diff --git a/src/components/ModalDialog.vue b/src/components/ModalDialog.vue
index 883922d..cabc012 100644
--- a/src/components/ModalDialog.vue
+++ b/src/components/ModalDialog.vue
@@ -7,12 +7,12 @@
-
+
+ enter-from="opacity-0 translate-y-0 scale-95"
+ enter-to="opacity-100 translate-y-0 scale-100" leave="ease-in duration-200"
+ leave-from="opacity-100 translate-y-0 scale-100"
+ leave-to="opacity-0 translate-y-0 scale-95">
diff --git a/src/components/StageDialog.vue b/src/components/StageDialog.vue
new file mode 100644
index 0000000..f71c50e
--- /dev/null
+++ b/src/components/StageDialog.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
![]()
+
+
+
+

+
+
+
+

+
+ {{ stage.name }}
+
+
+
+
+
+
diff --git a/src/components/StageImage.vue b/src/components/StageImage.vue
index 51651ce..e4966c2 100644
--- a/src/components/StageImage.vue
+++ b/src/components/StageImage.vue
@@ -1,5 +1,5 @@
-
+
+
+
+
diff --git a/src/stores/schedules.mjs b/src/stores/schedules.mjs
index 03e783f..0529401 100644
--- a/src/stores/schedules.mjs
+++ b/src/stores/schedules.mjs
@@ -6,10 +6,20 @@ import { useTimeStore } from "./time.mjs";
// Schedule store definition (used for each type of schedule)
function defineScheduleStore(id, options) {
return defineStore(`schedules/${id}`, () => {
- const transform = node => ({
- ...node,
- settings: options.settings(node),
- });
+ const transform = (node) => {
+ node = {
+ ...node,
+ settings: options.settings(node),
+ };
+
+ // Move the thumbnail image to "thumbnailImage" and pull in the high-res image for the stage
+ for (let stage of node.settings.vsStages || []) {
+ stage.thumbnailImage = stage.image;
+ stage.image = findStageImage(stage.id) || stage.image;
+ }
+
+ return node;
+ };
const time = useTimeStore();
const schedules = computed(() => options.nodes()?.map(n => transform(n)));
@@ -22,6 +32,12 @@ function defineScheduleStore(id, options) {
});
}
+function findStageImage(id) {
+ return useSchedulesDataStore().data
+ ?.vsStages.nodes.find(s => s.id === id)
+ ?.originalImage;
+}
+
// Regular Battle
export const useRegularSchedulesStore = defineScheduleStore('regular', {
nodes: () => useSchedulesDataStore().data?.regularSchedules.nodes,