feat(mail): center-align action button in email template

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-14 00:49:41 +02:00
parent 172a6a12d3
commit ef195a6777
14 changed files with 336 additions and 141 deletions

View File

@@ -1,42 +1,50 @@
import { breakpointsVuetifyV3 } from '@vueuse/core'
import { VIcon } from 'vuetify/components/VIcon'
import { defineThemeConfig } from '@core'
import { Skins } from '@core/enums'
import { breakpointsVuetifyV3 } from "@vueuse/core";
import { VIcon } from "vuetify/components/VIcon";
import { defineThemeConfig } from "@core";
import { Skins } from "@core/enums";
// ❗ Logo SVG must be imported with ?raw suffix
import logo from '@images/logo.svg?raw'
import logo from "@images/logo.svg?raw";
import { AppContentLayoutNav, ContentWidth, FooterType, NavbarType } from '@layouts/enums'
import {
AppContentLayoutNav,
ContentWidth,
FooterType,
NavbarType,
} from "@layouts/enums";
export const { themeConfig, layoutConfig } = defineThemeConfig({
app: {
title: 'Crewli Portal',
logo: h('div', { innerHTML: logo, style: 'line-height:0; color: rgb(var(--v-global-theme-primary))' }),
title: "Crewli Portal",
logo: h("div", {
innerHTML: logo,
style: "line-height:0; color: rgb(var(--v-global-theme-primary))",
}),
contentWidth: ContentWidth.Boxed,
contentLayoutNav: AppContentLayoutNav.Vertical,
overlayNavFromBreakpoint: breakpointsVuetifyV3.lg - 1, // 1 for matching with vuetify breakpoint. Docs: https://next.vuetifyjs.com/en/features/display-and-platform/
i18n: {
enable: false,
defaultLocale: 'en',
defaultLocale: "en",
langConfig: [
{
label: 'English',
i18nLang: 'en',
label: "English",
i18nLang: "en",
isRTL: false,
},
{
label: 'French',
i18nLang: 'fr',
label: "French",
i18nLang: "fr",
isRTL: false,
},
{
label: 'Arabic',
i18nLang: 'ar',
label: "Arabic",
i18nLang: "ar",
isRTL: true,
},
],
},
theme: 'light',
theme: "light",
skin: Skins.Default,
iconRenderer: VIcon,
},
@@ -47,12 +55,12 @@ export const { themeConfig, layoutConfig } = defineThemeConfig({
footer: { type: FooterType.Static },
verticalNav: {
isVerticalNavCollapsed: false,
defaultNavItemIconProps: { icon: 'tabler-circle' },
defaultNavItemIconProps: { icon: "tabler-circle" },
isVerticalNavSemiDark: false,
},
horizontalNav: {
type: 'sticky',
transition: 'slide-y-reverse-transition',
type: "sticky",
transition: "slide-y-reverse-transition",
popoverOffset: 6,
},
@@ -61,11 +69,11 @@ export const { themeConfig, layoutConfig } = defineThemeConfig({
// Such as: chevronDown: { icon: 'tabler-chevron-down', color:'primary', size: '24' },
*/
icons: {
chevronDown: { icon: 'tabler-chevron-down' },
chevronRight: { icon: 'tabler-chevron-right', size: 20 },
close: { icon: 'tabler-x', size: 20 },
verticalNavPinned: { icon: 'tabler-circle-dot', size: 20 },
verticalNavUnPinned: { icon: 'tabler-circle', size: 20 },
sectionTitlePlaceholder: { icon: 'tabler-minus' },
chevronDown: { icon: "tabler-chevron-down" },
chevronRight: { icon: "tabler-chevron-right", size: 20 },
close: { icon: "tabler-x", size: 20 },
verticalNavPinned: { icon: "tabler-circle-dot", size: 20 },
verticalNavUnPinned: { icon: "tabler-circle", size: 20 },
sectionTitlePlaceholder: { icon: "tabler-minus" },
},
})
});