Browse Source

Add support for all 4 spectrum themes in builder!

pull/1431/head
Andrew Kingston 5 years ago
parent
commit
e89c51deef
  1. 21
      packages/builder/src/builderStore/store/theme.js
  2. 11
      packages/builder/src/components/settings/ThemeEditor.svelte

21
packages/builder/src/builderStore/store/theme.js

@ -3,14 +3,25 @@ import { localStorageStore } from "./localStorage"
export const getThemeStore = () => {
const themeElement = document.documentElement
const initialValue = {
darkMode: true,
theme: "darkest",
options: ["lightest", "light", "dark", "darkest"],
}
const store = localStorageStore("bb-theme", initialValue)
// Update theme when store changes
store.subscribe(theme => {
themeElement.classList.toggle("spectrum--darkest", theme.darkMode)
themeElement.classList.toggle("spectrum--lightest", !theme.darkMode)
// Update theme class when store changes
store.subscribe(state => {
// Handle any old local storage values - this can be removed after the update
if (state.darkMode !== undefined) {
store.set(initialValue)
return
}
state.options.forEach(option => {
themeElement.classList.toggle(
`spectrum--${option}`,
option === state.theme
)
})
})
return store

11
packages/builder/src/components/settings/ThemeEditor.svelte

@ -1,8 +1,11 @@
<script>
import { themeStore } from "builderStore"
import { Toggle } from "@budibase/bbui"
let showAdvanced = false
import { Select } from "@budibase/bbui"
import { capitalise } from "../../helpers"
</script>
<Toggle text="Dark theme" bind:value={$themeStore.darkMode} />
<Select
options={$themeStore.options}
bind:value={$themeStore.theme}
placeholder={null}
getOptionLabel={capitalise} />

Loading…
Cancel
Save