diff --git a/apps/stage-web/src/components/Backgrounds/ChromaticWavePreview.vue b/apps/stage-web/src/components/Backgrounds/ChromaticWavePreview.vue deleted file mode 100644 index b3ff39e7c..000000000 --- a/apps/stage-web/src/components/Backgrounds/ChromaticWavePreview.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/apps/stage-web/src/components/Backgrounds/AppBackgroundPickerDialog.vue b/apps/stage-web/src/components/Backgrounds/DialogPicker.vue similarity index 100% rename from apps/stage-web/src/components/Backgrounds/AppBackgroundPickerDialog.vue rename to apps/stage-web/src/components/Backgrounds/DialogPicker.vue diff --git a/apps/stage-web/src/components/Backgrounds/CustomizedBackground.vue b/apps/stage-web/src/components/Backgrounds/Provider.vue similarity index 73% rename from apps/stage-web/src/components/Backgrounds/CustomizedBackground.vue rename to apps/stage-web/src/components/Backgrounds/Provider.vue index 652e2b6d1..502ec3309 100644 --- a/apps/stage-web/src/components/Backgrounds/CustomizedBackground.vue +++ b/apps/stage-web/src/components/Backgrounds/Provider.vue @@ -3,29 +3,18 @@ import type { BackgroundItem } from '../../stores/background' import ThemeOverlay from '@proj-airi/stage-ui/components/ThemeOverlay.vue' -import { useTheme } from '@proj-airi/ui' -import { computed, ref } from 'vue' - -import AnimatedWave from '../Widgets/AnimatedWave.vue' -import Cross from './Cross.vue' +import { ref } from 'vue' import { BackgroundKind } from '../../stores/background' +import { DefaultBackground } from '../Backgrounds/default' defineProps<{ background: BackgroundItem topColor?: string }>() -const { isDark: dark } = useTheme() const containerRef = ref(null) -const waveFillColor = computed(() => { - const hue = 'var(--chromatic-hue)' - return dark.value - ? `hsl(${hue} 60% 32%)` - : `hsl(${hue} 75% 78%)` -}) - defineExpose({ surfaceEl: containerRef, }) @@ -39,12 +28,7 @@ defineExpose({ :class="[(background.blur && background.kind !== BackgroundKind.Wave) ? 'blur-md scale-110' : '']" > - - - + +import { useTheme } from '@proj-airi/ui' + +import { PartAnimatedWave, PatternCross } from '.' + +const { isDark } = useTheme() + + + + + + + + + diff --git a/apps/stage-web/src/components/Widgets/AnimatedWave.vue b/apps/stage-web/src/components/Backgrounds/default/part-animated-wave.vue similarity index 100% rename from apps/stage-web/src/components/Widgets/AnimatedWave.vue rename to apps/stage-web/src/components/Backgrounds/default/part-animated-wave.vue diff --git a/apps/stage-web/src/components/Backgrounds/Cross.vue b/apps/stage-web/src/components/Backgrounds/default/pattern-cross.vue similarity index 100% rename from apps/stage-web/src/components/Backgrounds/Cross.vue rename to apps/stage-web/src/components/Backgrounds/default/pattern-cross.vue diff --git a/apps/stage-web/src/components/Backgrounds/default/preview.vue b/apps/stage-web/src/components/Backgrounds/default/preview.vue new file mode 100644 index 000000000..a0f5cca14 --- /dev/null +++ b/apps/stage-web/src/components/Backgrounds/default/preview.vue @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/apps/stage-web/src/components/Backgrounds/index.ts b/apps/stage-web/src/components/Backgrounds/index.ts new file mode 100644 index 000000000..82ec7dcef --- /dev/null +++ b/apps/stage-web/src/components/Backgrounds/index.ts @@ -0,0 +1,2 @@ +export { default as BackgroundDialogPicker } from './DialogPicker.vue' +export { default as BackgroundProvider } from './Provider.vue' diff --git a/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue b/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue index 3263b8fdf..d8689dda0 100644 --- a/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue +++ b/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue @@ -15,12 +15,13 @@ import { onMounted, onUnmounted, ref, useTemplateRef, watch } from 'vue' import { useI18n } from 'vue-i18n' import { RouterLink } from 'vue-router' -import AppBackgroundPickerDialog from '../Backgrounds/AppBackgroundPickerDialog.vue' import IndicatorMicVolume from '../Widgets/IndicatorMicVolume.vue' import ActionAbout from './InteractiveArea/Actions/About.vue' import ActionViewControls from './InteractiveArea/Actions/ViewControls.vue' import ViewControlInputs from './ViewControls/Inputs.vue' +import { BackgroundDialogPicker } from '../Backgrounds' + const { isDark, toggleDark } = useTheme() const hearingDialogOpen = ref(false) const { messages, sending, streamingMessage } = storeToRefs(useChatStore()) @@ -132,7 +133,7 @@ onMounted(() => { - + - + >('backgroundSurface') +const backgroundSurface = useTemplateRef>('backgroundSurface') const { syncBackgroundTheme } = useBackgroundThemeColor({ backgroundSurface, selectedOption, sampledColor }) onMounted(() => syncBackgroundTheme()) @@ -130,7 +130,7 @@ watch([stream, () => vadLoaded.value], async ([s, loaded]) => { - vadLoaded.value], async ([s, loaded]) => { - + diff --git a/apps/stage-web/src/stores/background.ts b/apps/stage-web/src/stores/background.ts index bd1c83aec..b7907d723 100644 --- a/apps/stage-web/src/stores/background.ts +++ b/apps/stage-web/src/stores/background.ts @@ -7,7 +7,7 @@ import { useLocalStorage, useObjectUrl } from '@vueuse/core' import { defineStore } from 'pinia' import { computed, markRaw, onScopeDispose, ref, shallowRef } from 'vue' -import ChromaticWavePreview from '../components/Backgrounds/ChromaticWavePreview.vue' +import { DefaultBackgroundPreview } from '../components/Backgrounds/default' export enum BackgroundKind { Wave = 'wave', @@ -32,7 +32,7 @@ export const useBackgroundStore = defineStore('background', () => { label: 'Colorful Wave', description: 'Animated wave on cross grid', kind: BackgroundKind.Wave, - component: markRaw(ChromaticWavePreview), + component: markRaw(DefaultBackgroundPreview), }, ]