- New addressable kinds 35007–35011 with types, label maps and parsers - Shared parseCraftBase helper + parseLabProfile dispatcher in useLabProfiles - Reusable, config-driven CraftProfileForm (polished shared shell, per-craft skill sections + extra fields, entity/collective, CLINK, Pro upgrade) - Five thin Become* pages wired into AppRouter and the Lab "Offer" menu - LabPage: extended ServiceType, accents, scrollable tab strip, filter sections, counts, empty states and ProfileCard to all 10 crafts - CoachDetailPage renders all craft types (map-driven accents/icons/labels) plus craft-specific fields (studio, books-open, credentials, remote, graffiti crew, music links) - NIP.md documents all five new craft schemas Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
42 lines
1.8 KiB
TypeScript
42 lines
1.8 KiB
TypeScript
import { useSeoMeta } from '@unhead/react';
|
|
import { Music } from 'lucide-react';
|
|
import { CraftProfileForm } from '@/components/CraftProfileForm';
|
|
import { SKATE_MUSICIAN_KIND, MUSICIAN_GENRE_LABELS, MUSICIAN_INSTRUMENT_LABELS } from '@/lib/types';
|
|
|
|
export default function BecomeMusicianPage() {
|
|
useSeoMeta({
|
|
title: 'Add a Music Profile - SkateSpots',
|
|
description: 'Skate and make music? List your band or solo project — genres, instruments and links.',
|
|
});
|
|
|
|
return (
|
|
<CraftProfileForm
|
|
config={{
|
|
kind: SKATE_MUSICIAN_KIND,
|
|
selfTag: 'skatemusician',
|
|
identifier: 'musician-profile',
|
|
heading: 'Musician / Band',
|
|
tagline: 'Skate and make music? Get booked for demos, jams & after-parties',
|
|
noun: 'musician',
|
|
accentText: 'text-sky-400',
|
|
accentBg: 'bg-sky-500',
|
|
accentChip: 'bg-sky-500 text-white border-sky-500',
|
|
accentChipHover: 'hover:border-sky-500/60 hover:text-sky-400',
|
|
icon: Music,
|
|
rateLabel: 'Booking Rate',
|
|
portfolioLabel: 'Website / EPK link',
|
|
skillSections: [
|
|
{ title: 'Genre', entries: Object.entries(MUSICIAN_GENRE_LABELS), required: true },
|
|
{ title: 'Instruments & Role', entries: Object.entries(MUSICIAN_INSTRUMENT_LABELS) },
|
|
],
|
|
extraFields: [
|
|
{ tag: 'act', label: 'Act Type', placeholder: 'solo / band / dj / producer' },
|
|
{ tag: 'spotify', label: 'Spotify', type: 'url', placeholder: 'https://open.spotify.com/…' },
|
|
{ tag: 'bandcamp', label: 'Bandcamp', type: 'url', placeholder: 'https://…bandcamp.com' },
|
|
{ tag: 'soundcloud', label: 'SoundCloud', type: 'url', placeholder: 'https://soundcloud.com/…' },
|
|
{ tag: 'youtube', label: 'YouTube', type: 'url', placeholder: 'https://youtube.com/…' },
|
|
],
|
|
}}
|
|
/>
|
|
);
|
|
}
|