diff --git a/backend/internal/dto/app_config_dto.go b/backend/internal/dto/app_config_dto.go index 723c0b0f..151b5e7e 100644 --- a/backend/internal/dto/app_config_dto.go +++ b/backend/internal/dto/app_config_dto.go @@ -15,6 +15,7 @@ type AppConfigUpdateDto struct { AppName string `json:"appName" binding:"required,min=1,max=30"` SessionDuration string `json:"sessionDuration" binding:"required"` EmailsVerified string `json:"emailsVerified" binding:"required"` + DisableAnimations string `json:"disableAnimations" binding:"required"` AllowOwnAccountEdit string `json:"allowOwnAccountEdit" binding:"required"` SmtpHost string `json:"smtpHost"` SmtpPort string `json:"smtpPort"` diff --git a/backend/internal/model/app_config.go b/backend/internal/model/app_config.go index 07622557..38149c0e 100644 --- a/backend/internal/model/app_config.go +++ b/backend/internal/model/app_config.go @@ -34,6 +34,7 @@ type AppConfig struct { AppName AppConfigVariable `key:"appName,public"` // Public SessionDuration AppConfigVariable `key:"sessionDuration"` EmailsVerified AppConfigVariable `key:"emailsVerified"` + DisableAnimations AppConfigVariable `key:"disableAnimations,public"` // Public AllowOwnAccountEdit AppConfigVariable `key:"allowOwnAccountEdit,public"` // Public // Internal BackgroundImageType AppConfigVariable `key:"backgroundImageType,internal"` // Internal diff --git a/backend/internal/service/app_config_service.go b/backend/internal/service/app_config_service.go index 6928db17..7a442d94 100644 --- a/backend/internal/service/app_config_service.go +++ b/backend/internal/service/app_config_service.go @@ -58,6 +58,7 @@ func (s *AppConfigService) getDefaultDbConfig() *model.AppConfig { AppName: model.AppConfigVariable{Value: "Pocket ID"}, SessionDuration: model.AppConfigVariable{Value: "60"}, EmailsVerified: model.AppConfigVariable{Value: "false"}, + DisableAnimations: model.AppConfigVariable{Value: "false"}, AllowOwnAccountEdit: model.AppConfigVariable{Value: "true"}, // Internal BackgroundImageType: model.AppConfigVariable{Value: "jpg"}, diff --git a/frontend/messages/en-US.json b/frontend/messages/en-US.json index a06e2972..2e46aa04 100644 --- a/frontend/messages/en-US.json +++ b/frontend/messages/en-US.json @@ -322,5 +322,7 @@ "see_all_account_activities_from_the_last_3_months": "See all user activity for the last 3 months.", "token_sign_in": "Token Sign In", "client_authorization": "Client Authorization", - "new_client_authorization": "New Client Authorization" + "new_client_authorization": "New Client Authorization", + "disable_animations": "Disable Animations", + "turn_off_all_animations_throughout_the_admin_ui": "Turn off all animations throughout the Admin UI" } diff --git a/frontend/src/lib/components/fade-wrapper.svelte b/frontend/src/lib/components/fade-wrapper.svelte index 5740fa0e..cab98143 100644 --- a/frontend/src/lib/components/fade-wrapper.svelte +++ b/frontend/src/lib/components/fade-wrapper.svelte @@ -1,5 +1,6 @@ - +
diff --git a/frontend/src/routes/settings/+layout.svelte b/frontend/src/routes/settings/+layout.svelte index a6784d2b..1f95e84b 100644 --- a/frontend/src/routes/settings/+layout.svelte +++ b/frontend/src/routes/settings/+layout.svelte @@ -2,7 +2,9 @@ import { page } from '$app/state'; import FadeWrapper from '$lib/components/fade-wrapper.svelte'; import { m } from '$lib/paraglide/messages'; + import appConfigStore from '$lib/stores/application-configuration-store'; import userStore from '$lib/stores/user-store'; + import { cn } from '$lib/utils/style'; import { LucideExternalLink, LucideSettings } from 'lucide-svelte'; import type { Snippet } from 'svelte'; import { fade, fly } from 'svelte/transition'; @@ -20,7 +22,7 @@ const links = [ { href: '/settings/account', label: m.my_account() }, - { href: '/settings/audit-log', label: m.audit_log() }, + { href: '/settings/audit-log', label: m.audit_log() } ]; const adminLinks = [ @@ -54,11 +56,12 @@ {#each links as { href, label }, i} {label} diff --git a/frontend/src/routes/settings/admin/application-configuration/forms/app-config-general-form.svelte b/frontend/src/routes/settings/admin/application-configuration/forms/app-config-general-form.svelte index 5efa28d8..9d4921bb 100644 --- a/frontend/src/routes/settings/admin/application-configuration/forms/app-config-general-form.svelte +++ b/frontend/src/routes/settings/admin/application-configuration/forms/app-config-general-form.svelte @@ -24,14 +24,16 @@ appName: appConfig.appName, sessionDuration: appConfig.sessionDuration, emailsVerified: appConfig.emailsVerified, - allowOwnAccountEdit: appConfig.allowOwnAccountEdit + allowOwnAccountEdit: appConfig.allowOwnAccountEdit, + disableAnimations: appConfig.disableAnimations }; const formSchema = z.object({ appName: z.string().min(2).max(30), sessionDuration: z.number().min(1).max(43200), emailsVerified: z.boolean(), - allowOwnAccountEdit: z.boolean() + allowOwnAccountEdit: z.boolean(), + disableAnimations: z.boolean() }); const { inputs, ...form } = createForm(formSchema, updatedAppConfig); @@ -66,6 +68,12 @@ description={m.whether_the_users_email_should_be_marked_as_verified_for_the_oidc_clients()} bind:checked={$inputs.emailsVerified.value} /> +