chatgpt codex + cascade: update
This commit is contained in:
@@ -74,7 +74,7 @@ export default function GamePageContent({
|
|||||||
return (
|
return (
|
||||||
<div className="page-container py-6 space-y-6">
|
<div className="page-container py-6 space-y-6">
|
||||||
<div className="grid gap-6 lg:grid-cols-[2fr_1fr]">
|
<div className="grid gap-6 lg:grid-cols-[2fr_1fr]">
|
||||||
<div className="panel overflow-hidden aspect-video">
|
<div className="panel overflow-hidden aspect-video rounded-full bg-black!">
|
||||||
<LazyLoadedImage
|
<LazyLoadedImage
|
||||||
imgId={`GameThumbnail_${game.rootPlaceId}`}
|
imgId={`GameThumbnail_${game.rootPlaceId}`}
|
||||||
alt={game.name}
|
alt={game.name}
|
||||||
|
|||||||
@@ -3,10 +3,7 @@
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
font-family:
|
font-family:
|
||||||
var(--font-geist-sans),
|
var(--font-geist-sans), "SF Pro Display", "Segoe UI", sans-serif;
|
||||||
"SF Pro Display",
|
|
||||||
"Segoe UI",
|
|
||||||
sans-serif;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
@@ -14,11 +11,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.font-super-mono {
|
.font-super-mono {
|
||||||
font-family:
|
font-family: var(--font-geist-mono), "SF Mono", "Segoe UI Mono", monospace;
|
||||||
var(--font-geist-mono),
|
|
||||||
"SF Mono",
|
|
||||||
"Segoe UI Mono",
|
|
||||||
monospace;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@layer base {
|
@layer base {
|
||||||
@@ -140,7 +133,9 @@ body {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-decoration-color: hsl(var(--primary) / 0.35);
|
text-decoration-color: hsl(var(--primary) / 0.35);
|
||||||
text-underline-offset: 0.18em;
|
text-underline-offset: 0.18em;
|
||||||
transition: color 150ms ease, text-decoration-color 150ms ease;
|
transition:
|
||||||
|
color 150ms ease,
|
||||||
|
text-decoration-color 150ms ease;
|
||||||
}
|
}
|
||||||
a:hover {
|
a:hover {
|
||||||
text-decoration-color: hsl(var(--primary) / 0.85);
|
text-decoration-color: hsl(var(--primary) / 0.85);
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ const geistMono = Geist_Mono({
|
|||||||
subsets: ["latin"]
|
subsets: ["latin"]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Home | Roblox",
|
title: "Home | Roblox",
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ function ProfileMoreDetails({ profile }: { profile: UserProfileDetails }) {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{!theirFriends && <Skeleton className="w-full h-64" />}
|
{!theirFriends && <Skeleton className="w-full h-64" />}
|
||||||
{/*
|
|
||||||
//@ts-expect-error */}
|
|
||||||
<FriendCarousel
|
<FriendCarousel
|
||||||
title="Friends"
|
title="Friends"
|
||||||
className="overflow-visible"
|
className="overflow-visible"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useCurrentAccount } from "@/hooks/roblox/useCurrentAccount";
|
import { useCurrentAccount } from "@/hooks/roblox/useCurrentAccount";
|
||||||
import { useFriendsPresence } from "@/hooks/roblox/usePresence";
|
import { useFriendsPresence } from "@/hooks/roblox/usePresence";
|
||||||
import React, { ReactNode, useMemo } from "react";
|
import React, { useMemo } from "react";
|
||||||
import LazyLoadedImage from "../util/LazyLoadedImage";
|
import LazyLoadedImage from "../util/LazyLoadedImage";
|
||||||
import { StupidHoverThing } from "../util/MiscStuff";
|
import { StupidHoverThing } from "../util/MiscStuff";
|
||||||
import { VerifiedIcon } from "./RobloxIcons";
|
import { VerifiedIcon } from "./RobloxIcons";
|
||||||
@@ -53,11 +53,11 @@ export function FriendCarousel({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div {...props}>
|
<div className="relative" {...props}>
|
||||||
<h1 className="text-2xl pt-4 pl-4 -mb-4">{title}</h1>
|
<h1 className="text-2xl pt-4 pl-4 -mb-4 pb-6">{title}</h1>
|
||||||
<div className="rounded-xl flex flex-col gap-2 px-4 no-scrollbar">
|
<div className="rounded-xl flex flex-col px-4 py-2 overflow-x-hidden no-scrollbar panel-soft">
|
||||||
<div
|
<div
|
||||||
className="flex p-8 items-center gap-4 overflow-x-auto overflow-y-visible no-scrollbar pb-2 -mx-4 w-screen scrollbar-thin scrollbar-thumb-surface2 scrollbar-track-surface0"
|
className="flex p-8 items-center gap-4 overflow-x-auto overflow-y-visible no-scrollbar pb-4 -mx-4 w-screen scrollbar-thin scrollbar-thumb-surface2 scrollbar-track-surface0"
|
||||||
style={{
|
style={{
|
||||||
scrollSnapType: "x mandatory",
|
scrollSnapType: "x mandatory",
|
||||||
WebkitOverflowScrolling: "touch",
|
WebkitOverflowScrolling: "touch",
|
||||||
@@ -69,6 +69,7 @@ export function FriendCarousel({
|
|||||||
(b) => b.userId === a.id
|
(b) => b.userId === a.id
|
||||||
);
|
);
|
||||||
const userPresence = userStatus?.userPresenceType || 0;
|
const userPresence = userStatus?.userPresenceType || 0;
|
||||||
|
/* dont touch these color thingys */
|
||||||
const borderColor =
|
const borderColor =
|
||||||
userPresence === 1
|
userPresence === 1
|
||||||
? "border-blue/25 bg-blue/25"
|
? "border-blue/25 bg-blue/25"
|
||||||
@@ -107,15 +108,17 @@ export function FriendCarousel({
|
|||||||
text={
|
text={
|
||||||
<div className="text-center items-center justify-center content-center">
|
<div className="text-center items-center justify-center content-center">
|
||||||
<span className="space-x-1 flex items-center">
|
<span className="space-x-1 flex items-center">
|
||||||
<p>{a.displayName || a.name}</p>
|
<p className={textColor}>
|
||||||
|
{a.displayName || a.name}
|
||||||
|
</p>
|
||||||
{!a.hasVerifiedBadge ? (
|
{!a.hasVerifiedBadge ? (
|
||||||
<VerifiedIcon
|
<VerifiedIcon
|
||||||
useDefault
|
useDefault
|
||||||
className={`w-4 h-4 shrink-0`}
|
className={`w-4 h-4 shrink-0 ${textColor}`}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
{userPresence >= 2 ? (
|
{userPresence >= 2 ? (
|
||||||
<p>
|
<p className={textColor}>
|
||||||
{userStatus?.lastLocation}
|
{userStatus?.lastLocation}
|
||||||
</p>
|
</p>
|
||||||
) : null}
|
) : null}
|
||||||
@@ -123,8 +126,10 @@ export function FriendCarousel({
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Link href={`/users/${a.id}`}>
|
<Link
|
||||||
<div className="flex flex-col min-w-[6.5rem]">
|
href={`/users/${a.id}`}
|
||||||
|
className="flex flex-col min-w-[6.5rem] relative"
|
||||||
|
>
|
||||||
<LazyLoadedImage
|
<LazyLoadedImage
|
||||||
imgId={`AvatarHeadShot_${a.id}`}
|
imgId={`AvatarHeadShot_${a.id}`}
|
||||||
alt={a.name}
|
alt={a.name}
|
||||||
@@ -142,7 +147,6 @@ export function FriendCarousel({
|
|||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
</Link>
|
</Link>
|
||||||
</StupidHoverThing>
|
</StupidHoverThing>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export const GameCard = React.memo(function GameCard({ game }: GameCardProps) {
|
|||||||
onClick={() => setIsOpen(true)}
|
onClick={() => setIsOpen(true)}
|
||||||
>
|
>
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<div className="panel group overflow-hidden aspect-video relative transition hover:-translate-y-0.5 hover:shadow-2xl">
|
<div className="panel group overflow-hidden aspect-video relative transition hover:-translate-y-0.5 hover:shadow-2xl bg-black!">
|
||||||
<div className="overflow-hidden">
|
<div className="overflow-hidden">
|
||||||
{game.primaryMediaAsset ? (
|
{game.primaryMediaAsset ? (
|
||||||
<LazyLoadedImage
|
<LazyLoadedImage
|
||||||
@@ -73,14 +73,14 @@ export const GameCard = React.memo(function GameCard({ game }: GameCardProps) {
|
|||||||
size="384x216" // match game thumbnail size
|
size="384x216" // match game thumbnail size
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<div className="w-full h-full flex items-center justify-center bg-muted">
|
<div className="w-full h-full flex items-center justify-center bg-transparent">
|
||||||
<span className="text-muted-foreground">
|
<span className="text-muted-foreground">
|
||||||
{":("}
|
{":("}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="pointer-events-none absolute inset-0 bg-crust/40 opacity-0 transition-opacity group-hover:opacity-100" />
|
<div className="pointer-events-none absolute inset-0 bg-crust/40 opacity-0 transition-opacity group-hover:opacity-100" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm font-semibold text-text line-clamp-1">
|
<p className="text-sm font-semibold text-text line-clamp-1">
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import Link from "next/link";
|
|||||||
import { UserProfileDetails } from "@/lib/profile";
|
import { UserProfileDetails } from "@/lib/profile";
|
||||||
|
|
||||||
export function UserProfileHeader({ user }: { user: UserProfileDetails }) {
|
export function UserProfileHeader({ user }: { user: UserProfileDetails }) {
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return (
|
return (
|
||||||
<div className="justify-center w-screen px-8 py-6">
|
<div className="justify-center w-screen px-8 py-6">
|
||||||
@@ -42,12 +41,12 @@ export function UserProfileHeader({ user }: { user: UserProfileDetails }) {
|
|||||||
userPresence === 1
|
userPresence === 1
|
||||||
? "border-blue/25 bg-blue/25"
|
? "border-blue/25 bg-blue/25"
|
||||||
: userPresence === 2
|
: userPresence === 2
|
||||||
? "border-green/25 bg-green/25"
|
? "border-green/25 bg-green/25"
|
||||||
: userPresence === 3
|
: userPresence === 3
|
||||||
? "border-yellow/25 bg-yellow/25"
|
? "border-yellow/25 bg-yellow/25"
|
||||||
: userPresence === 0
|
: userPresence === 0
|
||||||
? "border-surface2/25 bg-surface2/25"
|
? "border-surface2/25 bg-surface2/25"
|
||||||
: "border-red/25 bg-red/25";
|
: "border-red/25 bg-red/25";
|
||||||
|
|
||||||
const isLoaded = !!user;
|
const isLoaded = !!user;
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,7 @@ const Card = React.forwardRef<
|
|||||||
>(({ className, ...props }, ref) => (
|
>(({ className, ...props }, ref) => (
|
||||||
<div
|
<div
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className={cn(
|
className={cn("panel-soft text-card-foreground shadow-sm", className)}
|
||||||
"panel-soft text-card-foreground shadow-sm",
|
|
||||||
className
|
|
||||||
)}
|
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { flavors } from "@catppuccin/palette";
|
|||||||
|
|
||||||
const ctpColors: Record<string, string> = {};
|
const ctpColors: Record<string, string> = {};
|
||||||
for (const [name, color] of Object.entries(flavors.mocha.colors)) {
|
for (const [name, color] of Object.entries(flavors.mocha.colors)) {
|
||||||
ctpColors[name] = color.hex;
|
ctpColors[name] = color.hex;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
Reference in New Issue
Block a user