diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index 60113c6f1..638b1a807 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -351,7 +351,12 @@ const afterStoreSetup = async ({ store, i18n }) => {
store.dispatch('setInstanceOption', { name: 'server', value: server })
await setConfig({ store })
- await store.dispatch('applyTheme', { recompile: false })
+ document.querySelector('#status').textContent = i18n.global.t('splash.theme')
+ try {
+ await store.dispatch('applyTheme').catch((e) => { console.error('Error setting theme', e) })
+ } catch (e) {
+ return Promise.reject(e)
+ }
applyConfig(store.state.config)
diff --git a/src/components/select/select_motion.vue b/src/components/select/select_motion.vue
new file mode 100644
index 000000000..be42b040d
--- /dev/null
+++ b/src/components/select/select_motion.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/settings_modal/tabs/appearance_tab.js b/src/components/settings_modal/tabs/appearance_tab.js
index 1e48c7e88..bba4647c6 100644
--- a/src/components/settings_modal/tabs/appearance_tab.js
+++ b/src/components/settings_modal/tabs/appearance_tab.js
@@ -34,7 +34,7 @@ const AppearanceTab = {
return {
availableStyles: [],
availablePalettes: [],
- themeImporter: newImporter({
+ fileImporter: newImporter({
accept: '.json, .piss',
validator: this.importValidator,
onImport: this.onImport,
@@ -179,6 +179,10 @@ const AppearanceTab = {
this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })
}
},
+ customThemeVersion () {
+ const { themeVersion } = this.$store.state.interface
+ return themeVersion
+ },
isCustomThemeUsed () {
const { theme } = this.mergedConfig
return theme === 'custom'
@@ -202,8 +206,8 @@ const AppearanceTab = {
}
})
},
- importTheme () {
- this.themeImporter.importData()
+ importFile () {
+ this.fileImporter.importData()
},
onImport (parsed, filename) {
if (filename.endsWith('.json')) {
@@ -234,14 +238,18 @@ const AppearanceTab = {
const { palette } = this.mergedConfig
return key === palette
},
- importStyle () {
-
+ setStyle (name) {
+ this.$store.dispatch('resetThemeV2')
+ this.$store.dispatch('setTheme', name)
+ this.$store.dispatch('applyTheme')
},
setTheme (name) {
+ this.$store.dispatch('resetThemeV3')
this.$store.dispatch('setTheme', name)
this.$store.dispatch('applyTheme')
},
setPalette (name) {
+ this.$store.dispatch('resetThemeV2')
this.$store.dispatch('setPalette', name)
this.$store.dispatch('applyTheme')
},
diff --git a/src/components/settings_modal/tabs/appearance_tab.scss b/src/components/settings_modal/tabs/appearance_tab.scss
index 77d668ecb..b95ef07db 100644
--- a/src/components/settings_modal/tabs/appearance_tab.scss
+++ b/src/components/settings_modal/tabs/appearance_tab.scss
@@ -24,6 +24,10 @@
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 0.5em;
+
+ .unsupported-theme-v2 {
+ grid-column: 1 / span 2;
+ }
}
.palette-entry {
diff --git a/src/components/settings_modal/tabs/appearance_tab.vue b/src/components/settings_modal/tabs/appearance_tab.vue
index d27f43fe1..32f6f1a72 100644
--- a/src/components/settings_modal/tabs/appearance_tab.vue
+++ b/src/components/settings_modal/tabs/appearance_tab.vue
@@ -7,7 +7,7 @@
{{ $t('settings.theme') }}