New data-driven Lab craft, mirroring the artist role: three skill sections (What You Make [required] / How You Make It / Materials) plus minimum order, turnaround, size range, samples and customisation extras, inheriting the shared Lab extras (rate, payment, gallery, reel, languages, availability, booking). Wired through types.ts (kind, label/description maps, parse, collective- capable), labelKeys, useLabProfiles (kind list + dispatch), becomeRoles (role card), craftFields, LabPage (tab, filters, offer button, empty state, counts, deep links), LabCrewsStrip, NIP.md, and en/es i18n (labOptions, becomeRolesUi, labUi). /become/clothing added to the smoke route list. tsc, eslint, check-i18n, vitest 101/101, build and smoke all pass.
330 lines
16 KiB
TypeScript
330 lines
16 KiB
TypeScript
/**
|
||
* Lab role-form strings (`becomeRolesUi.*`) — the copy that lives in the
|
||
* `BECOME_ROLES` data table (`src/lib/becomeRoles.tsx`) and is rendered by
|
||
* `CraftProfileForm`, `BecomeRolePage` (SEO meta) and `LabProfilePreview`.
|
||
*
|
||
* Keys must exist in BOTH `en` and `es` (key-for-key), same as the other
|
||
* `*Ui` namespaces. Skate/brand terms (SkateSpots) and trick names stay as
|
||
* written; every craft field label/placeholder/helper that used to be raw
|
||
* English lives here.
|
||
*/
|
||
const becomeRolesUi = {
|
||
en: {
|
||
artist: {
|
||
seoTitle: 'Become a Designer / Artist - SkateSpots',
|
||
seoDescription: 'List your skate design & art — board graphics, logos, posters, merch and more.',
|
||
heading: 'Designer / Artist',
|
||
tagline: 'Board graphics, logos, posters, merch — put your art on the scene',
|
||
noun: 'artist',
|
||
rateLabel: 'Rate',
|
||
portfolioLabel: 'Portfolio / Shop link',
|
||
sectionWhatYouMake: 'What You Make',
|
||
sectionMedium: 'Medium',
|
||
sectionSoftwareTools: 'Software & Tools',
|
||
deliverablesPlaceholder: 'e.g. print-ready files, source files, deck graphics',
|
||
turnaroundPlaceholder: 'e.g. 3–5 days',
|
||
},
|
||
graffiti: {
|
||
seoTitle: 'Offer Graffiti / Murals - SkateSpots',
|
||
seoDescription: 'List your graffiti & mural work — pieces, murals, skatepark art and more.',
|
||
heading: 'Graffiti / Mural Artist',
|
||
tagline: 'Pieces, murals, skatepark art — paint the scene',
|
||
noun: 'graffiti artist',
|
||
rateLabel: 'Rate',
|
||
portfolioLabel: 'Portfolio link (IG, site)',
|
||
sectionStyle: 'Style',
|
||
sectionMedium: 'Medium',
|
||
sectionWorkContext: 'Work Context',
|
||
crewLabel: 'Graffiti Crew',
|
||
crewPlaceholder: 'Your writing crew (optional)',
|
||
crewHelper: 'Separate from your skate crew — the writers you paint with.',
|
||
surfacesPlaceholder: 'e.g. concrete, brick, permitted walls',
|
||
maxSizePlaceholder: 'e.g. up to 10 m',
|
||
},
|
||
musician: {
|
||
seoTitle: 'Add a Music Profile - SkateSpots',
|
||
seoDescription: 'Skate and make music? List your band or solo project — genres, instruments and links.',
|
||
heading: 'Musician / Band',
|
||
tagline: 'Skate and make music? Get booked for demos, jams & after-parties',
|
||
noun: 'musician',
|
||
rateLabel: 'Booking Rate',
|
||
portfolioLabel: 'Website / EPK link',
|
||
sectionGenre: 'Genre',
|
||
sectionInstruments: 'Instruments & Role',
|
||
actLabel: 'Act Type',
|
||
actPlaceholder: 'solo / band / dj / producer',
|
||
spotifyLabel: 'Spotify',
|
||
spotifyPlaceholder: 'https://open.spotify.com/…',
|
||
bandcampLabel: 'Bandcamp',
|
||
bandcampPlaceholder: 'https://…bandcamp.com',
|
||
soundcloudLabel: 'SoundCloud',
|
||
soundcloudPlaceholder: 'https://soundcloud.com/…',
|
||
youtubeLabel: 'YouTube',
|
||
youtubePlaceholder: 'https://youtube.com/…',
|
||
setLengthPlaceholder: 'e.g. 30–45 min',
|
||
techRiderPlaceholder: 'e.g. PA, mics, backline',
|
||
},
|
||
judge: {
|
||
seoTitle: 'Judge Skate Events - SkateSpots',
|
||
seoDescription: '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.',
|
||
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',
|
||
rateLabel: 'Day Rate / Fee',
|
||
portfolioLabel: 'Results archive / profile link',
|
||
sectionEventFormats: 'Event Formats',
|
||
sectionSpecialty: 'Specialty',
|
||
sectionLevelCircuit: 'Level / Circuit',
|
||
eventsJudgedLabel: 'Events Judged',
|
||
eventsJudgedPlaceholder: 'e.g. 40+ contests, 3 World Tour stops',
|
||
eventsJudgedHelper: 'Notable events, comps or tours you have officiated.',
|
||
travelPlaceholder: 'e.g. regional / nationwide / international',
|
||
certificationsPlaceholder: 'e.g. national judging course',
|
||
},
|
||
organizer: {
|
||
seoTitle: 'Organize Skate Events - SkateSpots',
|
||
seoDescription: 'List yourself as a skate event organizer — street jams, best trick, contests, meetups, demos and tour stops. Get discovered and booked to run the session.',
|
||
heading: 'Event Organizer',
|
||
tagline: 'Jams, contests, meetups & demos — put on the session and bring the scene together',
|
||
noun: 'organizer',
|
||
rateLabel: 'Event Fee / Budget',
|
||
portfolioLabel: 'Past events / results link',
|
||
sectionEventTypes: 'Event Types',
|
||
sectionWhatYouHandle: 'What You Handle',
|
||
sectionScale: 'Scale',
|
||
eventsHostedLabel: 'Events Organized',
|
||
eventsHostedPlaceholder: 'e.g. 25 jams, 3 city comps',
|
||
eventsHostedHelper: 'Notable events, comps or meetups you have run.',
|
||
insurancePlaceholder: 'e.g. public liability included',
|
||
permitsPlaceholder: 'e.g. council permits handled',
|
||
},
|
||
tattoo: {
|
||
seoTitle: 'Become a Tattoo Artist - SkateSpots',
|
||
seoDescription: 'List your tattoo work for the skate scene — styles, flash, custom and more.',
|
||
heading: 'Tattoo Artist',
|
||
tagline: 'Ink for the scene — flash, custom, fine line & more',
|
||
noun: 'tattoo artist',
|
||
rateLabel: 'Rate / Hourly',
|
||
portfolioLabel: 'Portfolio link (IG, site)',
|
||
sectionStyles: 'Styles',
|
||
sectionMethod: 'Method',
|
||
studioLabel: 'Studio / Shop',
|
||
studioPlaceholder: 'Studio name (optional)',
|
||
booksOpenLabel: 'Books Open',
|
||
booksOpenHelper: 'Are you currently taking bookings?',
|
||
depositPlaceholder: 'e.g. 50 EUR non-refundable',
|
||
minimumPlaceholder: 'e.g. 80 EUR',
|
||
},
|
||
trainer: {
|
||
seoTitle: 'Become a Trainer / Physio - SkateSpots',
|
||
seoDescription: 'Help skaters get strong and stay healthy — strength, mobility, injury prevention and recovery.',
|
||
heading: 'Trainer / Physio',
|
||
tagline: 'Strength, mobility, injury prevention & recovery for skaters',
|
||
noun: 'trainer',
|
||
rateLabel: 'Rate / Session',
|
||
portfolioLabel: 'Profile / booking link',
|
||
sectionFocus: 'Focus',
|
||
sectionInjuries: 'Injuries You Work With',
|
||
sectionCredentialsSetting: 'Credentials & Setting',
|
||
credentialsPlaceholder: 'e.g. BSc Physiotherapy, CSCS…',
|
||
credentialsHelper: 'List real qualifications — skaters trust verifiable credentials.',
|
||
remoteLabel: 'Remote / Online',
|
||
remoteHelper: 'Do you offer online coaching or consultations?',
|
||
modalitiesPlaceholder: 'e.g. hands-on, S&C, dry needling',
|
||
},
|
||
barber: {
|
||
seoTitle: 'Become a Barber / Hairstylist - SkateSpots',
|
||
seoDescription: 'List your barbershop or chair for the skate scene — cuts, fades, beard trims, colour and more. Get booked by skaters.',
|
||
heading: 'Barber / Hairstylist',
|
||
tagline: 'Cuts, fades & beard trims for the scene — shop chair or mobile',
|
||
noun: 'barber',
|
||
rateLabel: 'Price / Cut',
|
||
portfolioLabel: 'Cuts gallery / IG link',
|
||
sectionWhatYouOffer: 'What You Offer',
|
||
sectionSignatureStyles: 'Signature Styles',
|
||
sectionSetting: 'Setting',
|
||
studioLabel: 'Shop / Studio',
|
||
studioPlaceholder: 'Shop or studio name (optional)',
|
||
booksOpenLabel: 'Books Open',
|
||
booksOpenHelper: 'Are you currently taking bookings?',
|
||
durationPlaceholder: 'e.g. 30–45 min',
|
||
},
|
||
clothing: {
|
||
seoTitle: 'Become a Clothing Designer - SkateSpots',
|
||
seoDescription: 'Custom clothes, team kits & apparel for the scene.',
|
||
heading: 'Clothing Designer',
|
||
tagline: 'Custom clothes, team kits & apparel for the scene',
|
||
noun: 'clothing designer',
|
||
rateLabel: 'Rate',
|
||
portfolioLabel: 'Shop / portfolio link',
|
||
sectionWhatYouMake: 'What You Make',
|
||
sectionHowYouMake: 'How You Make It',
|
||
sectionMaterials: 'Materials',
|
||
minimumPlaceholder: 'e.g. 10 pieces',
|
||
turnaroundPlaceholder: 'e.g. 2-3 weeks',
|
||
sizingPlaceholder: 'e.g. XS-3XL / made to measure',
|
||
samplesHelper: 'Do you offer samples or prototypes before a full run?',
|
||
customizationPlaceholder: 'e.g. names, numbers, graphics',
|
||
},
|
||
},
|
||
es: {
|
||
artist: {
|
||
seoTitle: 'Conviértete en diseñador / artista - SkateSpots',
|
||
seoDescription: 'Publica tu diseño y arte de skate: gráficos de tabla, logos, pósters, merch y más.',
|
||
heading: 'Diseñador / Artista',
|
||
tagline: 'Gráficos de tabla, logos, pósters, merch — pon tu arte en la escena',
|
||
noun: 'artista',
|
||
rateLabel: 'Tarifa',
|
||
portfolioLabel: 'Portafolio / enlace de tienda',
|
||
sectionWhatYouMake: 'Qué haces',
|
||
sectionMedium: 'Técnica',
|
||
sectionSoftwareTools: 'Software y herramientas',
|
||
deliverablesPlaceholder: 'p. ej. archivos listos para imprimir, archivos fuente, gráficos de tabla',
|
||
turnaroundPlaceholder: 'p. ej. 3–5 días',
|
||
},
|
||
graffiti: {
|
||
seoTitle: 'Ofrece graffiti / murales - SkateSpots',
|
||
seoDescription: 'Publica tu trabajo de graffiti y murales: piezas, murales, arte para skateparks y más.',
|
||
heading: 'Artista de graffiti / murales',
|
||
tagline: 'Piezas, murales, arte para skateparks — pinta la escena',
|
||
noun: 'artista de graffiti',
|
||
rateLabel: 'Tarifa',
|
||
portfolioLabel: 'Enlace de portafolio (IG, web)',
|
||
sectionStyle: 'Estilo',
|
||
sectionMedium: 'Técnica',
|
||
sectionWorkContext: 'Contexto del trabajo',
|
||
crewLabel: 'Peña de graffiti',
|
||
crewPlaceholder: 'Tu peña de escritura (opcional)',
|
||
crewHelper: 'Aparte de tu peña de skate: los escritores con los que pintas.',
|
||
surfacesPlaceholder: 'p. ej. hormigón, ladrillo, muros permitidos',
|
||
maxSizePlaceholder: 'p. ej. hasta 10 m',
|
||
},
|
||
musician: {
|
||
seoTitle: 'Añade un perfil musical - SkateSpots',
|
||
seoDescription: '¿Patinas y haces música? Publica tu banda o proyecto en solitario: géneros, instrumentos y enlaces.',
|
||
heading: 'Músico / Banda',
|
||
tagline: '¿Patinas y haces música? Consigue bolos para demos, jams y afters',
|
||
noun: 'músico',
|
||
rateLabel: 'Tarifa de bolo',
|
||
portfolioLabel: 'Web / enlace EPK',
|
||
sectionGenre: 'Género',
|
||
sectionInstruments: 'Instrumentos y rol',
|
||
actLabel: 'Tipo de actuación',
|
||
actPlaceholder: 'solo / banda / dj / productor',
|
||
spotifyLabel: 'Spotify',
|
||
spotifyPlaceholder: 'https://open.spotify.com/…',
|
||
bandcampLabel: 'Bandcamp',
|
||
bandcampPlaceholder: 'https://…bandcamp.com',
|
||
soundcloudLabel: 'SoundCloud',
|
||
soundcloudPlaceholder: 'https://soundcloud.com/…',
|
||
youtubeLabel: 'YouTube',
|
||
youtubePlaceholder: 'https://youtube.com/…',
|
||
setLengthPlaceholder: 'p. ej. 30–45 min',
|
||
techRiderPlaceholder: 'p. ej. PA, micros, backline',
|
||
},
|
||
judge: {
|
||
seoTitle: 'Juzga eventos de skate - SkateSpots',
|
||
seoDescription: 'Publícate como juez de eventos de skate: Game of S.K.A.T.E., best trick, concursos, series am y paradas de world tour. Consigue que te contraten para eventos justos y creíbles.',
|
||
heading: 'Juez de eventos de skate',
|
||
tagline: 'Del Game of S.K.A.T.E. en llano al World Destruction Tour — júzgalo con justicia y criterio',
|
||
noun: 'juez',
|
||
rateLabel: 'Tarifa por día / honorarios',
|
||
portfolioLabel: 'Archivo de resultados / enlace de perfil',
|
||
sectionEventFormats: 'Formatos de evento',
|
||
sectionSpecialty: 'Especialidad',
|
||
sectionLevelCircuit: 'Nivel / circuito',
|
||
eventsJudgedLabel: 'Eventos juzgados',
|
||
eventsJudgedPlaceholder: 'p. ej. más de 40 concursos, 3 paradas de World Tour',
|
||
eventsJudgedHelper: 'Eventos, concursos o giras destacadas que hayas arbitrado.',
|
||
travelPlaceholder: 'p. ej. regional / nacional / internacional',
|
||
certificationsPlaceholder: 'p. ej. curso nacional de jueces',
|
||
},
|
||
organizer: {
|
||
seoTitle: 'Organiza eventos de skate - SkateSpots',
|
||
seoDescription: 'Publícate como organizador de eventos de skate: jams de calle, best trick, concursos, quedadas, demos y paradas de gira. Deja que te descubran y te contraten para dirigir la sesión.',
|
||
heading: 'Organizador de eventos',
|
||
tagline: 'Jams, concursos, quedadas y demos — monta la sesión y une a la escena',
|
||
noun: 'organizador',
|
||
rateLabel: 'Tarifa de evento / presupuesto',
|
||
portfolioLabel: 'Enlace a eventos pasados / resultados',
|
||
sectionEventTypes: 'Tipos de evento',
|
||
sectionWhatYouHandle: 'De qué te encargas',
|
||
sectionScale: 'Escala',
|
||
eventsHostedLabel: 'Eventos organizados',
|
||
eventsHostedPlaceholder: 'p. ej. 25 jams, 3 concursos municipales',
|
||
eventsHostedHelper: 'Eventos, concursos o quedadas destacadas que hayas organizado.',
|
||
insurancePlaceholder: 'p. ej. responsabilidad civil incluida',
|
||
permitsPlaceholder: 'p. ej. permisos municipales gestionados',
|
||
},
|
||
tattoo: {
|
||
seoTitle: 'Conviértete en tatuador - SkateSpots',
|
||
seoDescription: 'Publica tu trabajo de tatuaje para la escena del skate: estilos, flash, custom y más.',
|
||
heading: 'Tatuador / Tatuadora',
|
||
tagline: 'Tinta para la escena — flash, custom, línea fina y más',
|
||
noun: 'tatuador',
|
||
rateLabel: 'Tarifa / por hora',
|
||
portfolioLabel: 'Enlace de portafolio (IG, web)',
|
||
sectionStyles: 'Estilos',
|
||
sectionMethod: 'Método',
|
||
studioLabel: 'Estudio / local',
|
||
studioPlaceholder: 'Nombre del estudio (opcional)',
|
||
booksOpenLabel: 'Agenda abierta',
|
||
booksOpenHelper: '¿Estás aceptando reservas ahora mismo?',
|
||
depositPlaceholder: 'p. ej. 50 EUR no reembolsables',
|
||
minimumPlaceholder: 'p. ej. 80 EUR',
|
||
},
|
||
trainer: {
|
||
seoTitle: 'Conviértete en entrenador / fisio - SkateSpots',
|
||
seoDescription: 'Ayuda a los skaters a estar fuertes y saludables: fuerza, movilidad, prevención de lesiones y recuperación.',
|
||
heading: 'Entrenador / Fisio',
|
||
tagline: 'Fuerza, movilidad, prevención de lesiones y recuperación para skaters',
|
||
noun: 'entrenador',
|
||
rateLabel: 'Tarifa / por sesión',
|
||
portfolioLabel: 'Perfil / enlace de reserva',
|
||
sectionFocus: 'Enfoque',
|
||
sectionInjuries: 'Lesiones con las que trabajas',
|
||
sectionCredentialsSetting: 'Credenciales y entorno',
|
||
credentialsPlaceholder: 'p. ej. Grado en Fisioterapia, CSCS…',
|
||
credentialsHelper: 'Indica titulaciones reales: los skaters confían en credenciales verificables.',
|
||
remoteLabel: 'Remoto / online',
|
||
remoteHelper: '¿Ofreces entrenamiento o consultas online?',
|
||
modalitiesPlaceholder: 'p. ej. manual, fuerza y acondicionamiento, punción seca',
|
||
},
|
||
barber: {
|
||
seoTitle: 'Conviértete en barbero / peluquero - SkateSpots',
|
||
seoDescription: 'Publica tu barbería o tu silla para la escena del skate: cortes, fades, arreglo de barba, color y más. Consigue clientes skaters.',
|
||
heading: 'Barbero / Peluquero',
|
||
tagline: 'Cortes, fades y arreglo de barba para la escena — en local o a domicilio',
|
||
noun: 'barbero',
|
||
rateLabel: 'Precio / corte',
|
||
portfolioLabel: 'Galería de cortes / enlace IG',
|
||
sectionWhatYouOffer: 'Qué ofreces',
|
||
sectionSignatureStyles: 'Estilos característicos',
|
||
sectionSetting: 'Entorno',
|
||
studioLabel: 'Local / estudio',
|
||
studioPlaceholder: 'Nombre del local o estudio (opcional)',
|
||
booksOpenLabel: 'Agenda abierta',
|
||
booksOpenHelper: '¿Estás aceptando reservas ahora mismo?',
|
||
durationPlaceholder: 'p. ej. 30–45 min',
|
||
},
|
||
clothing: {
|
||
seoTitle: 'Conviértete en diseñador de ropa - SkateSpots',
|
||
seoDescription: 'Ropa a medida, equipaciones y prendas para la escena.',
|
||
heading: 'Diseñador de ropa',
|
||
tagline: 'Ropa a medida, equipaciones y prendas para la escena',
|
||
noun: 'diseñador de ropa',
|
||
rateLabel: 'Tarifa',
|
||
portfolioLabel: 'Enlace de tienda / portafolio',
|
||
sectionWhatYouMake: 'Qué haces',
|
||
sectionHowYouMake: 'Cómo lo haces',
|
||
sectionMaterials: 'Materiales',
|
||
minimumPlaceholder: 'p. ej. 10 prendas',
|
||
turnaroundPlaceholder: 'p. ej. 2-3 semanas',
|
||
sizingPlaceholder: 'p. ej. XS-3XL / a medida',
|
||
samplesHelper: '¿Ofreces muestras o prototipos antes de una producción completa?',
|
||
customizationPlaceholder: 'p. ej. nombres, números, gráficos',
|
||
},
|
||
},
|
||
};
|
||
|
||
export default becomeRolesUi;
|