From e1d1eb3bef3d61e235c867d6bb739b4ba32123d3 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 3 Feb 2026 17:31:30 +0100 Subject: [PATCH] Update settings page --- front/app.config.ts | 2 +- front/public/splash-screen.png | Bin 16007 -> 22076 bytes front/src/app/(app)/_layout.tsx | 4 +- front/src/primitives/button.tsx | 130 +++++++++------------ front/src/primitives/menu.tsx | 4 +- front/src/primitives/menu.web.tsx | 2 +- front/src/primitives/select.web.tsx | 175 +++++++++------------------- front/src/primitives/text.tsx | 4 +- front/src/ui/navbar/icon.tsx | 12 +- front/src/ui/navbar/index.tsx | 6 +- front/src/ui/settings/account.tsx | 16 +-- front/src/ui/settings/base.tsx | 82 +++---------- front/src/ui/settings/general.tsx | 35 +++--- front/src/ui/settings/index.tsx | 3 +- 14 files changed, 180 insertions(+), 295 deletions(-) diff --git a/front/app.config.ts b/front/app.config.ts index 0a073ba8..9c42ee2e 100644 --- a/front/app.config.ts +++ b/front/app.config.ts @@ -5,7 +5,7 @@ import { supportedLanguages } from "./src/providers/translations.compile.ts"; const IS_DEV = process.env.APP_VARIANT === "development"; export const expo: ExpoConfig = { - name: IS_DEV ? "Kyoo Development" : "Kyoo", + name: IS_DEV ? "Kyoo Dev" : "Kyoo", slug: "kyoo", scheme: "kyoo", version: "1.0.0", diff --git a/front/public/splash-screen.png b/front/public/splash-screen.png index 499addfd1b845212947093772eccf770ed6d8eb8..d1427ed437e1c6677bf78d889048da2bb13812af 100644 GIT binary patch literal 22076 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 Kf7DX~&-@qH%30C? literal 16007 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 @@ -22,6 +23,7 @@ export default function Layout() { headerStyle: { backgroundColor: accent as string, }, + headerTintColor: color as string, }} > ( - { - children, - text, - icon, - licon, - disabled, - as, - ...props - }: { - children?: ReactElement | ReactElement[] | Falsy; - text?: string; - licon?: ReactElement | Falsy; - icon?: ReactElement | Falsy; - disabled?: boolean; - as?: ComponentType; - } & AsProps, - ref: ForwardedRef, -) { - const { css } = useYoshiki("button"); +export const Button = ({ + text, + icon, + ricon, + disabled, + as, + ref, + className, + ...props +}: { + disabled?: boolean; + text?: string; + icon?: ComponentProps["icon"] | Falsy; + ricon?: ComponentProps["icon"] | Falsy; + ref?: Ref; + className?: string; + as?: ComponentType; +} & AsProps) => { const Container = as ?? PressableFeedback; return ( theme.accent, - borderWidth: ts(0.5), - fover: { - self: { bg: (theme: Theme) => theme.accent }, - text: { color: (theme: Theme) => theme.colors.white }, - }, - }, - disabled && { - child: { - self: { - borderColor: (theme) => theme.overlay1, - }, - text: { - color: (theme) => theme.overlay1, - }, - }, - }, - ], - props as any, - ) as AsProps)} - > - {(licon || text || icon) != null && ( - - {licon} - {text &&

{text}

} - {icon} -
+ className={cn( + "flex-row items-center justify-center overflow-hidden", + "rounded-4xl border-3 border-accent p-1", + disabled && "border-slate-600", + "group focus-within:bg-accent hover:bg-accent", + className, )} - {children} + {...(props as AsProps)} + > + + {icon && ( + + )} + {text && ( +

+ {text} +

+ )} + {ricon && ( + + )} +
); -}); +}; diff --git a/front/src/primitives/menu.tsx b/front/src/primitives/menu.tsx index 4c591d22..f638471c 100644 --- a/front/src/primitives/menu.tsx +++ b/front/src/primitives/menu.tsx @@ -122,7 +122,7 @@ const MenuItem = ({ @@ -136,7 +136,7 @@ const MenuItem = ({ if (href) router.push(href); }} disabled={disabled} - className="h-10 w-full flex-row items-center px-4" + className="h-15 w-full flex-row items-center px-4" {...props} > {left && left} diff --git a/front/src/primitives/menu.web.tsx b/front/src/primitives/menu.web.tsx index ab30f238..dcf58c09 100644 --- a/front/src/primitives/menu.web.tsx +++ b/front/src/primitives/menu.web.tsx @@ -54,7 +54,7 @@ const Menu = ({ }} > - + string; }) => { - const { css: wCss } = useYoshiki(); - const { css } = useNativeYoshiki(); - return ( theme.accent, - borderWidth: ts(0.5), - fover: { - self: { bg: (theme: Theme) => theme.accent }, - text: { color: (theme: Theme) => theme.colors.white }, - }, - })} + className={cn( + "group flex-row items-center justify-center overflow-hidden rounded-4xl", + "border-2 border-accent p-1 outline-0 focus-within:bg-accent hover:bg-accent", + )} > - -

{}

- - + +

+ {} +

+ +
- - - - {({ css }) => ( - - theme.background, - overflow: "auto", - minWidth: "220px", - borderRadius: "8px", - boxShadow: - "0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2)", - zIndex: 2, - maxHeight: - "calc(var(--radix-dropdown-menu-content-available-height) * 0.8)", - })} - > - - - - - {values.map((x) => ( - - ))} - - - - - - - )} - - - + + + + + + + {values.map((x) => ( + + ))} + + + + + +
); }; const Item = forwardRef( function Item({ label, value, ...props }, ref) { - const { css, theme } = useYoshiki(); - const { css: nCss } = useNativeYoshiki(); return ( - <> - {/* */} - theme.paragraph, - borderRadius: "4px", - position: "relative", - userSelect: "none", - ...focusReset, - }, - props as any, - )} - > - theme.paragraph })}> - {label} - - - - - - + + {label} + + + + ); }, ); diff --git a/front/src/primitives/text.tsx b/front/src/primitives/text.tsx index e1e5a149..576c496b 100644 --- a/front/src/primitives/text.tsx +++ b/front/src/primitives/text.tsx @@ -25,7 +25,6 @@ const styleText = ( ) => { const Wrapped = ({ className, - style, ...props }: { ref?: Ref } & TextProps) => { return ( @@ -128,7 +127,8 @@ export const CroppedText = ({ (acc, line) => acc + line.text, "", ); - setNeedExpand(visible !== children); + if (!expended) + setNeedExpand(visible !== children && visible?.length > 0); }} {...props} > diff --git a/front/src/ui/navbar/icon.tsx b/front/src/ui/navbar/icon.tsx index cd060cad..9b6d9820 100644 --- a/front/src/ui/navbar/icon.tsx +++ b/front/src/ui/navbar/icon.tsx @@ -5,10 +5,16 @@ import { Svg } from "~/primitives"; export const KyooLongLogo = (props: ComponentProps) => { return ( - + - - + + ); diff --git a/front/src/ui/navbar/index.tsx b/front/src/ui/navbar/index.tsx index c3ac78e4..6a1f6c79 100644 --- a/front/src/ui/navbar/index.tsx +++ b/front/src/ui/navbar/index.tsx @@ -46,7 +46,7 @@ export const NavbarTitle = ({ @@ -172,7 +172,7 @@ export const NavbarRight = () => { icon={Search} as={Link} href={"/browse"} - className="fill-slate-200 dark:fill-slate-200" + iconClassName="fill-slate-200 dark:fill-slate-200" {...tooltip(t("navbar.search"))} /> )} @@ -181,7 +181,7 @@ export const NavbarRight = () => { icon={Admin} as={Link} href={"/admin"} - className="fill-slate-200 dark:fill-slate-200" + iconClassName="fill-slate-200 dark:fill-slate-200" {...tooltip(t("navbar.admin"))} /> )} diff --git a/front/src/ui/settings/account.tsx b/front/src/ui/settings/account.tsx index db06f661..ddbd5161 100644 --- a/front/src/ui/settings/account.tsx +++ b/front/src/ui/settings/account.tsx @@ -26,6 +26,7 @@ import { useMutation } from "~/query"; import { deleteAccount, logout } from "../login/logic"; import { PasswordInput } from "../login/password-input"; import { Preference, SettingsContainer } from "./base"; +import { useUniwind } from "uniwind"; // function dataURItoBlob(dataURI: string) { // const byteString = atob(dataURI.split(",")[1]); @@ -39,7 +40,7 @@ import { Preference, SettingsContainer } from "./base"; export const AccountSettings = () => { const account = useAccount()!; - const { css, theme } = useYoshiki(); + const { theme } = useUniwind(); const [setPopup, close] = usePopup(); const { t } = useTranslation(); @@ -68,15 +69,15 @@ export const AccountSettings = () => { +