- Flesh out SkateJudge as a full craft-based Lab profile (parseCraftBase), with JUDGE_FORMAT / SPECIALTY / LEVEL label sets covering Game of S.K.A.T.E., best trick, jams, contests, am series, world tour stops, etc. - Wire judge into useLabProfiles (union type, self-tag, parse case) - Add "judging" ServiceType to LabPage: tab, accent, filter sections, empty state, counts, profile card icon, and ?craft=judging deep link - New BecomeJudgePage + /become-judge route + FAB entry - CoachDetailPage renders judge profiles (accent, icon, labels, noun, title) - Community Stats "Judges" card now links to /lab?craft=judging - Document kind 35012 (skatejudge) in NIP.md Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import { useSeoMeta } from '@unhead/react';
|
|
import { Gavel } from 'lucide-react';
|
|
import { CraftProfileForm } from '@/components/CraftProfileForm';
|
|
import {
|
|
SKATE_JUDGE_KIND,
|
|
JUDGE_FORMAT_LABELS,
|
|
JUDGE_SPECIALTY_LABELS,
|
|
JUDGE_LEVEL_LABELS,
|
|
} from '@/lib/types';
|
|
|
|
export default function BecomeJudgePage() {
|
|
useSeoMeta({
|
|
title: 'Judge Skate Events - SkateSpots',
|
|
description:
|
|
'List yourself as a skate event judge — Game of S.K.A.T.E., best trick jams, contests, am series and world tour stops. Get booked to run fair, credible events.',
|
|
});
|
|
|
|
return (
|
|
<CraftProfileForm
|
|
config={{
|
|
kind: SKATE_JUDGE_KIND,
|
|
selfTag: 'skatejudge',
|
|
identifier: 'judge-profile',
|
|
heading: 'Skate Event Judge',
|
|
tagline: 'From flat-ground Game of S.K.A.T.E. to the World Destruction Tour — run it fair, run it credible',
|
|
noun: 'judge',
|
|
accentText: 'text-yellow-400',
|
|
accentBg: 'bg-yellow-500',
|
|
accentChip: 'bg-yellow-500 text-black border-yellow-500',
|
|
accentChipHover: 'hover:border-yellow-500/60 hover:text-yellow-400',
|
|
icon: Gavel,
|
|
rateLabel: 'Day Rate / Fee',
|
|
portfolioLabel: 'Results archive / profile link',
|
|
skillSections: [
|
|
{ title: 'Event Formats', entries: Object.entries(JUDGE_FORMAT_LABELS), required: true },
|
|
{ title: 'Specialty', entries: Object.entries(JUDGE_SPECIALTY_LABELS) },
|
|
{ title: 'Level / Circuit', entries: Object.entries(JUDGE_LEVEL_LABELS) },
|
|
],
|
|
extraFields: [
|
|
{
|
|
tag: 'events_judged',
|
|
label: 'Events Judged',
|
|
placeholder: 'e.g. 40+ contests, 3 World Tour stops',
|
|
helper: 'Notable events, comps or tours you have officiated.',
|
|
},
|
|
],
|
|
}}
|
|
/>
|
|
);
|
|
}
|