FIX - refine iFruit settings layout

This commit is contained in:
Eichenholz
2026-08-04 18:48:19 +02:00
parent 9613a7ad1b
commit 2b8d23f238
5 changed files with 57 additions and 39 deletions
+1 -1
View File
@@ -287,7 +287,7 @@ const defaultLocales: LocaleTree = {
accountLocalDetail: 'Not signed in', accountLocalDetail: 'Not signed in',
accountCloudDetail: 'Mail and notes sync through iFruit Cloud', accountCloudDetail: 'Mail and notes sync through iFruit Cloud',
accountLoginBody: accountLoginBody:
'Sign in is optional. This phone also works with local data only.', 'Sign in to keep your Mail and Notes. Without an iFruit Account, this data is lost with the phone.',
accountInformation: 'Account Information', accountInformation: 'Account Information',
accountStatus: 'Account Status', accountStatus: 'Account Status',
accountStatusValue: 'Active', accountStatusValue: 'Active',
+1 -1
View File
@@ -397,7 +397,7 @@ onBeforeUnmount(() => {
) )
}} }}
</k-block-title> </k-block-title>
<k-list> <k-list class="bg-black">
<k-list-input <k-list-input
class="relative" class="relative"
:value="authEmail" :value="authEmail"
+53 -35
View File
@@ -12,6 +12,7 @@ import {
kNavbar, kNavbar,
kNavbarBackLink, kNavbarBackLink,
kPage, kPage,
kPreloader,
kRange, kRange,
kSearchbar, kSearchbar,
kToast, kToast,
@@ -21,6 +22,7 @@ import {
BellRing, BellRing,
Check, Check,
EyeOff, EyeOff,
KeyRound,
Monitor, Monitor,
Plane, Plane,
RotateCcw, RotateCcw,
@@ -426,24 +428,45 @@ async function confirmFactoryReset(): Promise<void> {
) )
}} }}
</k-block-title> </k-block-title>
<k-list> <k-list class="bg-black">
<k-list-input <k-list-input
class="relative"
:value="accountEmail" :value="accountEmail"
:label="phone.t('Apps.mail.email')" :label="
phone.t(
accountMode === 'login'
? 'Apps.mail.email'
: 'Apps.mail.localPart',
)
"
outline outline
floating-label floating-label
:input-class="accountMode === 'register' ? 'pr-20' : undefined"
autocomplete="username" autocomplete="username"
autocapitalize="none" autocapitalize="none"
spellcheck="false"
:clear-button="accountMode === 'login'"
@input="accountEmail = eventValue($event)" @input="accountEmail = eventValue($event)"
/> @clear="accountEmail = ''"
>
<span
v-if="accountMode === 'register'"
class="pointer-events-none absolute right-8 top-1/2 -translate-y-1/2 text-sm opacity-50"
>
@ifruit.com
</span>
</k-list-input>
<k-list-input <k-list-input
type="password" type="password"
:value="accountPassword" :value="accountPassword"
:label="phone.t('Apps.mail.password')" :label="phone.t('Apps.mail.password')"
outline outline
floating-label floating-label
autocomplete="current-password"
@input="accountPassword = eventValue($event)" @input="accountPassword = eventValue($event)"
/> >
<template #media><KeyRound :size="20" /></template>
</k-list-input>
<k-list-input <k-list-input
v-if="accountMode === 'register'" v-if="accountMode === 'register'"
type="password" type="password"
@@ -451,18 +474,24 @@ async function confirmFactoryReset(): Promise<void> {
:label="phone.t('Apps.mail.confirmPassword')" :label="phone.t('Apps.mail.confirmPassword')"
outline outline
floating-label floating-label
autocomplete="new-password"
@input="accountConfirm = eventValue($event)" @input="accountConfirm = eventValue($event)"
/> >
<template #media><KeyRound :size="20" /></template>
</k-list-input>
</k-list> </k-list>
<k-block> <k-block>
<k-button large rounded :disabled="accountSubmitting" @click="submitAccount"> <k-button large rounded :disabled="accountSubmitting" @click="submitAccount">
{{ <k-preloader v-if="accountSubmitting" />
phone.t( <template v-else>
accountMode === 'login' {{
? 'Apps.mail.login' phone.t(
: 'Apps.mail.register', accountMode === 'login'
) ? 'Apps.mail.login'
}} : 'Apps.mail.register',
)
}}
</template>
</k-button> </k-button>
</k-block> </k-block>
<k-list strong inset> <k-list strong inset>
@@ -478,17 +507,6 @@ async function confirmFactoryReset(): Promise<void> {
}} }}
</k-list-button> </k-list-button>
</k-list> </k-list>
<k-block-title>{{ phone.t('Apps.settings.deviceInformation') }}</k-block-title>
<k-list strong inset>
<k-list-item
:title="phone.t('Apps.settings.imei')"
:after="phone.device?.imei ?? '—'"
/>
<k-list-button @click="resetOpened = true">
<RotateCcw :size="18" />
{{ phone.t('Apps.settings.factoryReset') }}
</k-list-button>
</k-list>
</template> </template>
<template v-else> <template v-else>
@@ -503,14 +521,6 @@ async function confirmFactoryReset(): Promise<void> {
</k-list-item> </k-list-item>
</k-list> </k-list>
<k-block-title>{{ phone.t('Apps.settings.deviceInformation') }}</k-block-title>
<k-list strong inset>
<k-list-item
:title="phone.t('Apps.settings.imei')"
:after="phone.device?.imei ?? '—'"
/>
</k-list>
<k-block-title>{{ phone.t('Apps.settings.linkedDevices') }}</k-block-title> <k-block-title>{{ phone.t('Apps.settings.linkedDevices') }}</k-block-title>
<k-list strong inset> <k-list strong inset>
<k-list-item <k-list-item
@@ -533,10 +543,6 @@ async function confirmFactoryReset(): Promise<void> {
<k-list-button @click="logoutAccount"> <k-list-button @click="logoutAccount">
{{ phone.t('Apps.settings.signOut') }} {{ phone.t('Apps.settings.signOut') }}
</k-list-button> </k-list-button>
<k-list-button @click="resetOpened = true">
<RotateCcw :size="18" />
{{ phone.t('Apps.settings.factoryReset') }}
</k-list-button>
</k-list> </k-list>
</template> </template>
</template> </template>
@@ -773,6 +779,18 @@ async function confirmFactoryReset(): Promise<void> {
:after="phone.t('Apps.settings.localStorageValue')" :after="phone.t('Apps.settings.localStorageValue')"
/> />
</k-list> </k-list>
<k-block-title>{{ phone.t('Apps.settings.deviceInformation') }}</k-block-title>
<k-list strong inset>
<k-list-item
:title="phone.t('Apps.settings.imei')"
:after="phone.device?.imei ?? '—'"
/>
<k-list-button @click="resetOpened = true">
<RotateCcw :size="18" />
{{ phone.t('Apps.settings.factoryReset') }}
</k-list-button>
</k-list>
</template> </template>
<template v-else-if="activeView === 'appearance'"> <template v-else-if="activeView === 'appearance'">
+1 -1
View File
@@ -118,7 +118,7 @@ Locales["en"] = {
name = "Settings", searchPlaceholder = "Search", airplaneMode = "Airplane Mode", streamerMode = "Streamer Mode", name = "Settings", searchPlaceholder = "Search", airplaneMode = "Airplane Mode", streamerMode = "Streamer Mode",
wallpaper = "Wallpaper", on = "On", off = "Off", accountName = "iFruit Account", wallpaper = "Wallpaper", on = "On", off = "Off", accountName = "iFruit Account",
accountDetail = "Cloud, Mail & Notes", accountLocalDetail = "Not signed in", accountDetail = "Cloud, Mail & Notes", accountLocalDetail = "Not signed in",
accountCloudDetail = "Mail and notes sync through iFruit Cloud", accountLoginBody = "Sign in is optional. This phone also works with local data only.", accountCloudDetail = "Mail and notes sync through iFruit Cloud", accountLoginBody = "Sign in to keep your Mail and Notes. Without an iFruit Account, this data is lost with the phone.",
accountInformation = "Account Information", accountStatus = "Account Status", accountStatusValue = "Active", accountInformation = "Account Information", accountStatus = "Account Status", accountStatusValue = "Active",
accountStorage = "Cloud Storage", accountStorageValue = "On Device", accountPurchases = "Media & Purchases", accountStorage = "Cloud Storage", accountStorageValue = "On Device", accountPurchases = "Media & Purchases",
accountPurchasesValue = "Available", notifications = "Notifications", sounds = "Sounds & Haptics", accountPurchasesValue = "Available", notifications = "Notifications", sounds = "Sounds & Haptics",
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sky Phone</title> <title>Sky Phone</title>
<script type="module" crossorigin src="./assets/sky-index-CN9A-zsO.js"></script> <script type="module" crossorigin src="./assets/sky-index-Dr0lcFs7.js"></script>
<link rel="stylesheet" crossorigin href="./assets/sky-index-CFphfAe0.css"> <link rel="stylesheet" crossorigin href="./assets/sky-index-CFphfAe0.css">
</head> </head>
<body> <body>