ui: raise in-game emoji button above the hand + gender = male/female/unknown
CI/CD / CI - API (dotnet build + engine sim) (push) Successful in 29s
CI/CD / CI - Web (tsc + next build) (push) Successful in 1m13s
CI/CD / Deploy - local stack (db + server + web) (push) Successful in 1m4s

- GameTable reactions button (and its tray) moved up from the bottom-right so it
  no longer overlaps the player's cards on mobile portrait.
- Gender options are now Male / Female / Unknown — removed "other" from the
  Gender type, GENDER_META, and the profile picker; the empty value renders as
  «نامشخص» / "Unknown".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-13 08:59:15 +03:30
parent 1954992203
commit 53759be8b7
5 changed files with 6 additions and 7 deletions
+3 -3
View File
@@ -800,7 +800,7 @@ function Reactions() {
initial={{ opacity: 0, y: 12, scale: 0.95 }} initial={{ opacity: 0, y: 12, scale: 0.95 }}
animate={{ opacity: 1, y: 0, scale: 1 }} animate={{ opacity: 1, y: 0, scale: 1 }}
exit={{ opacity: 0, y: 12, scale: 0.95 }} exit={{ opacity: 0, y: 12, scale: 0.95 }}
className="absolute bottom-20 ltr:right-4 rtl:left-4 z-50 glass rounded-2xl p-2 w-[min(270px,86vw)]" className="absolute bottom-60 ltr:right-3 rtl:left-3 z-50 glass rounded-2xl p-2 w-[min(270px,86vw)]"
> >
<div className="flex gap-1 p-1 rounded-xl bg-navy-900/70 mb-2"> <div className="flex gap-1 p-1 rounded-xl bg-navy-900/70 mb-2">
<button <button
@@ -852,10 +852,10 @@ function Reactions() {
)} )}
</AnimatePresence> </AnimatePresence>
{/* button */} {/* button — raised above the hand so it doesn't overlap the cards on mobile */}
<button <button
onClick={() => setOpen((o) => !o)} onClick={() => setOpen((o) => !o)}
className="absolute bottom-[max(1rem,env(safe-area-inset-bottom))] ltr:right-4 rtl:left-4 z-50 glass rounded-full min-h-12 min-w-12 grid place-items-center hover:bg-navy-800 transition" className="absolute bottom-44 ltr:right-3 rtl:left-3 z-50 glass rounded-full min-h-12 min-w-12 grid place-items-center hover:bg-navy-800 transition"
title={t("reactions.title")} title={t("reactions.title")}
> >
<SmilePlus className="size-5 text-gold-400" /> <SmilePlus className="size-5 text-gold-400" />
+1 -1
View File
@@ -407,7 +407,7 @@ function Stat({ label, value }: { label: string; value: string | number }) {
); );
} }
const GENDERS: Gender[] = ["male", "female", "other", ""]; const GENDERS: Gender[] = ["male", "female", ""];
const VIS_OPTIONS: { id: SocialVisibility; icon: React.ReactNode; key: string }[] = [ const VIS_OPTIONS: { id: SocialVisibility; icon: React.ReactNode; key: string }[] = [
{ id: "public", icon: <Eye className="size-3.5" />, key: "profile.visPublic" }, { id: "public", icon: <Eye className="size-3.5" />, key: "profile.visPublic" },
{ id: "friends", icon: <Users className="size-3.5" />, key: "profile.visFriends" }, { id: "friends", icon: <Users className="size-3.5" />, key: "profile.visFriends" },
+1 -1
View File
@@ -737,7 +737,7 @@ const en: Dict = {
"profile.cardBack": "Card back", "profile.cardBack": "Card back",
"profile.social": "Social & contact", "profile.social": "Social & contact",
"profile.gender": "Gender", "profile.gender": "Gender",
"profile.genderNone": "Unspecified", "profile.genderNone": "Unknown",
"profile.socialLinks": "Social media", "profile.socialLinks": "Social media",
"profile.socialsVisibility": "Show socials to", "profile.socialsVisibility": "Show socials to",
"profile.visPublic": "Everyone", "profile.visPublic": "Everyone",
+1 -1
View File
@@ -34,7 +34,7 @@ export interface PlayerStats {
export type PlanId = "free" | "pro"; export type PlanId = "free" | "pro";
/** Player-stated gender (empty = unspecified / not shown). */ /** Player-stated gender (empty = unspecified / not shown). */
export type Gender = "" | "male" | "female" | "other"; export type Gender = "" | "male" | "female";
/** Who may see a player's social links. */ /** Who may see a player's social links. */
export type SocialVisibility = "public" | "friends" | "hidden"; export type SocialVisibility = "public" | "friends" | "hidden";
-1
View File
@@ -7,7 +7,6 @@ export const GENDER_META: Record<
> = { > = {
male: { symbol: "♂", color: "#5aa6e0", faLabel: "آقا", enLabel: "Male" }, male: { symbol: "♂", color: "#5aa6e0", faLabel: "آقا", enLabel: "Male" },
female: { symbol: "♀", color: "#ff7aa8", faLabel: "خانم", enLabel: "Female" }, female: { symbol: "♀", color: "#ff7aa8", faLabel: "خانم", enLabel: "Female" },
other: { symbol: "⚧", color: "#c77dff", faLabel: "دیگر", enLabel: "Other" },
}; };
/** The social platforms a player can share, with link prefixes + brand colours. */ /** The social platforms a player can share, with link prefixes + brand colours. */