diff --git a/frontend/components/App/ThemePicker.vue b/frontend/components/App/ThemePicker.vue new file mode 100644 index 00000000..d014aa3c --- /dev/null +++ b/frontend/components/App/ThemePicker.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/frontend/components/Form/DatePicker.vue b/frontend/components/Form/DatePicker.vue index 8ef24a04..de14338d 100644 --- a/frontend/components/Form/DatePicker.vue +++ b/frontend/components/Form/DatePicker.vue @@ -15,6 +15,7 @@ import "@vuepic/vue-datepicker/dist/main.css"; import * as datelib from "~/lib/datelib/datelib"; import { Label } from "@/components/ui/label"; + import { darkThemes } from "~/lib/data/themes"; const emit = defineEmits(["update:modelValue", "update:text"]); @@ -34,7 +35,7 @@ }, }); - const isDark = useIsDark(); + const isDark = useIsThemeInList(darkThemes); const formatDate = (date: Date | string | number) => fmtDate(date, "human", "date"); diff --git a/frontend/composables/use-theme.ts b/frontend/composables/use-theme.ts index abf07f05..9f821661 100644 --- a/frontend/composables/use-theme.ts +++ b/frontend/composables/use-theme.ts @@ -1,5 +1,5 @@ import type { ComputedRef } from "vue"; -import type { DaisyTheme } from "~~/lib/data/themes"; +import { type DaisyTheme } from "~~/lib/data/themes"; export interface UseTheme { theme: ComputedRef; @@ -42,27 +42,11 @@ export function useTheme(): UseTheme { return { theme, setTheme }; } -export function useIsDark() { +export function useIsThemeInList(list: DaisyTheme[]) { const theme = useTheme(); - const darkthemes = [ - "synthwave", - "retro", - "cyberpunk", - "valentine", - "halloween", - "forest", - "aqua", - "black", - "luxury", - "dracula", - "business", - "night", - "coffee", - ]; - return computed(() => { - return darkthemes.includes(theme.theme.value); + return list.includes(theme.theme.value); }); } diff --git a/frontend/lib/data/themes.ts b/frontend/lib/data/themes.ts index 44f1c471..faec689a 100644 --- a/frontend/lib/data/themes.ts +++ b/frontend/lib/data/themes.ts @@ -153,3 +153,19 @@ export const themes: ThemeOption[] = [ value: "winter", }, ]; + +export const darkThemes: DaisyTheme[] = [ + "synthwave", + "retro", + "cyberpunk", + "valentine", + "halloween", + "forest", + "aqua", + "black", + "luxury", + "dracula", + "business", + "night", + "coffee", +]; diff --git a/frontend/pages/index.vue b/frontend/pages/index.vue index cd780c21..7452e232 100644 --- a/frontend/pages/index.vue +++ b/frontend/pages/index.vue @@ -54,6 +54,20 @@ } }); + const isEvilAccentTheme = useIsThemeInList([ + "bumblebee", + "corporate", + "forest", + "pastel", + "wireframe", + "black", + "dracula", + "autumn", + "acid", + ]); + const isEvilForegroundTheme = useIsThemeInList(["light", "aqua", "fantasy", "autumn", "night"]); + const isLofiTheme = useIsThemeInList(["lofi"]); + const route = useRoute(); const router = useRouter(); @@ -166,14 +180,19 @@
-
+

HomeB x

-

{{ $t("index.tagline") }}

+

+ {{ $t("index.tagline") }} +

diff --git a/frontend/pages/profile.vue b/frontend/pages/profile.vue index a63dcb91..e46befb9 100644 --- a/frontend/pages/profile.vue +++ b/frontend/pages/profile.vue @@ -2,7 +2,6 @@ import { useI18n } from "vue-i18n"; import { toast } from "@/components/ui/sonner"; import type { Detail } from "~~/components/global/DetailsSection/types"; - import { themes } from "~~/lib/data/themes"; import type { CurrenciesCurrency, NotifierCreate, NotifierOut } from "~~/lib/api/types/data-contracts"; import MdiLoading from "~icons/mdi/loading"; import MdiAccount from "~icons/mdi/account"; @@ -21,6 +20,7 @@ import LanguageSelector from "~/components/App/LanguageSelector.vue"; import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from "@/components/ui/tooltip"; import { DialogID } from "~/components/ui/dialog-provider/utils"; + import ThemePicker from "~/components/App/ThemePicker.vue"; const { t } = useI18n(); @@ -105,8 +105,6 @@ toast.success(t("profile.toast.group_updated")); } - const { setTheme } = useTheme(); - const auth = useAuthContext(); const details = computed(() => { @@ -516,40 +514,7 @@ {{ $t("profile.display_legacy_header", { currentValue: preferences.displayLegacyHeader }) }}
-
-
-
-
-
-
-
-
-
{{ theme.label }}
-
-
-
A
-
-
-
A
-
-
-
A
-
-
-
-
-
-
-
+