Refine Lab banner copy, stance to Regular/Goofy, full profile carry-over chips on Become-Skater, remove Back to Leaderboard from profile
- Lab "Just a skater?" banner: drop redundant "→ join the directory" trailer (arrow icon already present) - Skater stances distinct emojis (🛹 Regular / 🤙 Goofy); already limited to Regular & Goofy - Become-Skater: fix missing ShieldCheck/Zap imports; show ALL carried-over kind-0 fields (photo, name, bio, website, nip05, zaps) as read-only chips - Profile (NIP19Page): remove hardcoded "Back to Leaderboard" link and unused ArrowLeft import Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
This commit is contained in:
parent
67d8a24d73
commit
3ef11eda61
5 changed files with 54 additions and 30 deletions
2
NIP.md
2
NIP.md
|
|
@ -1506,7 +1506,7 @@ exists purely for community discovery.
|
|||
["t", "skateskater"],
|
||||
["t", "skateboarding"],
|
||||
["alt", "SkateSpots skater: <display name>"],
|
||||
["stance", "regular | goofy | switch | mongo"],
|
||||
["stance", "regular | goofy"],
|
||||
["level", "grom | intermediate | advanced | ripper"],
|
||||
["t", "<style>"],
|
||||
["years", "<years skating>"],
|
||||
|
|
|
|||
|
|
@ -294,15 +294,13 @@ export function isValidLightningAddress(value: string | undefined | null): value
|
|||
// skater*. Publishing this (opt-in) is what lets someone appear in the /skaters
|
||||
// directory — a plain kind-0 profile is NOT enough (that's the anti-spam wall).
|
||||
|
||||
export type SkaterStance = 'regular' | 'goofy' | 'switch' | 'mongo';
|
||||
export type SkaterStance = 'regular' | 'goofy';
|
||||
export type SkaterStyle = 'street' | 'park' | 'vert' | 'transition' | 'bowl' | 'cruising' | 'downhill' | 'freestyle' | 'ledges' | 'stairs' | 'diy';
|
||||
export type SkaterLevel = 'grom' | 'intermediate' | 'advanced' | 'ripper';
|
||||
|
||||
export const SKATER_STANCES: Record<SkaterStance, { label: string; emoji: string }> = {
|
||||
regular: { label: 'Regular', emoji: '🦶' },
|
||||
goofy: { label: 'Goofy', emoji: '🦶' },
|
||||
switch: { label: 'Switch', emoji: '🔄' },
|
||||
mongo: { label: 'Mongo', emoji: '😅' },
|
||||
regular: { label: 'Regular', emoji: '🛹' },
|
||||
goofy: { label: 'Goofy', emoji: '🤙' },
|
||||
};
|
||||
|
||||
export const SKATER_STYLES: Record<SkaterStyle, { label: string; emoji: string }> = {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import {
|
|||
} from '@/lib/types';
|
||||
import { genUserName } from '@/lib/genUserName';
|
||||
import { cn } from '@/lib/utils';
|
||||
import { Upload, X, Loader2, ArrowLeft, MapPin, PersonStanding, Sparkles, UserRound } from 'lucide-react';
|
||||
import { Upload, X, Loader2, ArrowLeft, MapPin, PersonStanding, Sparkles, UserRound, ShieldCheck, Zap, FileText, Globe } from 'lucide-react';
|
||||
|
||||
export default function BecomeSkaterPage() {
|
||||
useSeoMeta({
|
||||
|
|
@ -50,6 +50,8 @@ export default function BecomeSkaterPage() {
|
|||
// kind-0 values we borrow from so we never re-ask for what the profile has.
|
||||
const kind0About = metadata?.about ?? '';
|
||||
const kind0Website = metadata?.website ?? '';
|
||||
const kind0Nip05 = metadata?.nip05 ?? '';
|
||||
const kind0Lud16 = metadata?.lud16 ?? '';
|
||||
|
||||
const [bio, setBio] = useState('');
|
||||
const [location, setLocation] = useState('');
|
||||
|
|
@ -236,17 +238,51 @@ export default function BecomeSkaterPage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{/* Linked-to-your-profile notice */}
|
||||
<Link
|
||||
to="/settings?section=profile"
|
||||
className="group flex items-center gap-3 rounded-xl border border-white/10 bg-white/5 p-3.5 mb-6 hover:border-white/25 transition-colors"
|
||||
>
|
||||
<UserRound className="h-5 w-5 text-gray-400 flex-shrink-0" />
|
||||
<p className="text-xs text-gray-400 flex-1 leading-relaxed">
|
||||
This is your <span className="text-white font-bold">skate layer</span>, built on your Nostr profile.
|
||||
Your name, photo & bio come from there — <span className="text-[#ccff00] font-bold group-hover:underline">edit your full profile</span> to change them everywhere.
|
||||
</p>
|
||||
</Link>
|
||||
{/* Linked-to-your-profile notice + read-only summary of borrowed fields */}
|
||||
<div className="rounded-xl border border-white/10 bg-white/5 p-3.5 mb-6 space-y-3">
|
||||
<Link
|
||||
to="/settings?section=profile"
|
||||
className="group flex items-center gap-3"
|
||||
>
|
||||
<UserRound className="h-5 w-5 text-gray-400 flex-shrink-0" />
|
||||
<p className="text-xs text-gray-400 flex-1 leading-relaxed">
|
||||
This is your <span className="text-white font-bold">skate layer</span>, built on your Nostr profile.
|
||||
Your name, photo, bio, lightning & verification come from there — <span className="text-[#ccff00] font-bold group-hover:underline">edit your full profile</span> to change them everywhere.
|
||||
</p>
|
||||
</Link>
|
||||
|
||||
{/* Chips showing EVERYTHING carried over from your kind-0 profile */}
|
||||
<div className="flex flex-wrap items-center gap-1.5 pl-8">
|
||||
{avatar && (
|
||||
<span className="inline-flex items-center gap-1 text-[10px] font-bold px-2 py-1 rounded-full bg-black/40 border border-white/10 text-gray-300">
|
||||
<img src={avatar} alt="" className="h-3.5 w-3.5 rounded-full object-cover" /> Photo
|
||||
</span>
|
||||
)}
|
||||
<span className="inline-flex items-center gap-1 text-[10px] font-bold px-2 py-1 rounded-full bg-black/40 border border-white/10 text-gray-300">
|
||||
<UserRound className="h-3 w-3 text-[#ff0040]" /> {displayName}
|
||||
</span>
|
||||
{kind0About.trim() && (
|
||||
<span className="inline-flex items-center gap-1 text-[10px] font-bold px-2 py-1 rounded-full bg-black/40 border border-white/10 text-gray-300">
|
||||
<FileText className="h-3 w-3 text-gray-400" /> Bio
|
||||
</span>
|
||||
)}
|
||||
{kind0Website.trim() && (
|
||||
<span className="inline-flex items-center gap-1 text-[10px] font-bold px-2 py-1 rounded-full bg-black/40 border border-white/10 text-gray-300">
|
||||
<Globe className="h-3 w-3 text-sky-400" /> Website
|
||||
</span>
|
||||
)}
|
||||
{kind0Nip05 && (
|
||||
<span className="inline-flex items-center gap-1 text-[10px] font-bold px-2 py-1 rounded-full bg-black/40 border border-white/10 text-gray-300">
|
||||
<ShieldCheck className="h-3 w-3 text-[#ccff00]" /> {kind0Nip05}
|
||||
</span>
|
||||
)}
|
||||
{kind0Lud16 && (
|
||||
<span className="inline-flex items-center gap-1 text-[10px] font-bold px-2 py-1 rounded-full bg-black/40 border border-white/10 text-gray-300">
|
||||
<Zap className="h-3 w-3 text-yellow-400" /> Zaps on
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{loadingExisting ? (
|
||||
<div className="flex items-center justify-center py-16 text-gray-500">
|
||||
|
|
|
|||
|
|
@ -1305,10 +1305,10 @@ export default function LabPage() {
|
|||
</div>
|
||||
<div className="min-w-0 flex-1">
|
||||
<p className="font-black uppercase text-sm leading-tight">
|
||||
Just a <span className="text-[#ff0040]">skater</span>? Not a pro?
|
||||
Just a <span className="text-[#ff0040]">skater</span>?
|
||||
</p>
|
||||
<p className="text-xs text-gray-400 mt-0.5">
|
||||
The Lab is for services. Browse & join the whole skater community →
|
||||
The Lab is for services. Browse & join the whole skater community
|
||||
</p>
|
||||
</div>
|
||||
<ArrowRight className="h-5 w-5 text-gray-500 group-hover:text-[#ff0040] group-hover:translate-x-0.5 transition-all flex-shrink-0" />
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ import {
|
|||
Zap,
|
||||
Calendar,
|
||||
ExternalLink,
|
||||
ArrowLeft,
|
||||
Copy,
|
||||
Check,
|
||||
Users,
|
||||
|
|
@ -129,15 +128,6 @@ function ProfilePage({ pubkey }: { pubkey: string }) {
|
|||
return (
|
||||
<Layout>
|
||||
<div className="container px-4 py-6 max-w-4xl">
|
||||
{/* Back Button */}
|
||||
<Link
|
||||
to="/bounties"
|
||||
className="inline-flex items-center text-gray-400 hover:text-white transition-colors mb-4"
|
||||
>
|
||||
<ArrowLeft className="h-4 w-4 mr-2" />
|
||||
Back to Leaderboard
|
||||
</Link>
|
||||
|
||||
{/* Banner */}
|
||||
<div className="relative h-32 sm:h-48 rounded-xl overflow-hidden bg-gradient-to-br from-[#ff0040]/30 to-[#ccff00]/20 mb-4">
|
||||
{banner && (
|
||||
|
|
|
|||
Loading…
Reference in a new issue