Merge pull request #111 from trypostit/feat/onboarding-developer-persona

feat(onboarding): expand persona options and make the labels consistent
This commit is contained in:
Paulo Castellano 2026-06-24 09:49:00 -03:00 committed by GitHub
commit f1822ca77c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 25 additions and 7 deletions

View file

@ -8,8 +8,11 @@ enum Persona: string
{
case Creator = 'creator';
case Freelancer = 'freelancer';
case Developer = 'developer';
case Startup = 'startup';
case Agency = 'agency';
case SmallBusiness = 'small_business';
case Marketer = 'marketer';
case OnlineStore = 'online_store';
case Other = 'other';
}

View file

@ -4,14 +4,17 @@
return [
'title' => 'Welcome to TryPost',
'description' => 'Tell us what best describes you so we can tailor your experience.',
'description' => 'Tell us what best describes you or your business so we can tailor your experience.',
'continue' => 'Continue',
'personas' => [
'creator' => 'Creator',
'creator' => 'Content creator',
'freelancer' => 'Freelancer',
'developer' => 'Developer',
'startup' => 'Startup',
'agency' => 'Agency',
'small_business' => 'Small business',
'marketer' => 'Marketer',
'online_store' => 'Online store',
'other' => 'Other',
],
'connect' => [

View file

@ -4,14 +4,17 @@
return [
'title' => 'Bienvenido a TryPost',
'description' => 'Cuéntanos qué te describe mejor para personalizar tu experiencia.',
'description' => 'Cuéntanos qué te describe mejor a ti o a tu negocio para personalizar tu experiencia.',
'continue' => 'Continuar',
'personas' => [
'creator' => 'Creador',
'creator' => 'Creador de contenido',
'freelancer' => 'Freelancer',
'developer' => 'Desarrollador',
'startup' => 'Startup',
'agency' => 'Agencia',
'small_business' => 'Pequeña empresa',
'marketer' => 'Profesional de marketing',
'online_store' => 'Tienda online',
'other' => 'Otro',
],
'connect' => [

View file

@ -4,14 +4,17 @@
return [
'title' => 'Bem-vindo ao TryPost',
'description' => 'Conte o que melhor te descreve para personalizarmos sua experiência.',
'description' => 'Conte o que melhor descreve você ou seu negócio para personalizarmos sua experiência.',
'continue' => 'Continuar',
'personas' => [
'creator' => 'Criador',
'creator' => 'Criador de conteúdo',
'freelancer' => 'Freelancer',
'developer' => 'Desenvolvedor',
'startup' => 'Startup',
'agency' => 'Agência',
'small_business' => 'Pequena empresa',
'marketer' => 'Profissional de marketing',
'online_store' => 'Loja online',
'other' => 'Outro',
],
'connect' => [

View file

@ -6,8 +6,11 @@ import {
IconBuildingSkyscraper,
IconBuildingStore,
IconCheck,
IconCode,
IconDots,
IconRocket,
IconShoppingBag,
IconSpeakerphone,
IconUser,
} from '@tabler/icons-vue';
import { trans } from 'laravel-vue-i18n';
@ -26,9 +29,12 @@ const form = useForm({ persona: props.selected ?? '' });
const personaMeta: Record<string, { icon: FunctionalComponent; color: string }> = {
creator: { icon: IconUser, color: 'text-rose-600' },
freelancer: { icon: IconBriefcase, color: 'text-amber-600' },
developer: { icon: IconCode, color: 'text-cyan-600' },
startup: { icon: IconRocket, color: 'text-violet-700' },
agency: { icon: IconBuildingSkyscraper, color: 'text-blue-700' },
small_business: { icon: IconBuildingStore, color: 'text-emerald-600' },
marketer: { icon: IconSpeakerphone, color: 'text-fuchsia-600' },
online_store: { icon: IconShoppingBag, color: 'text-teal-600' },
other: { icon: IconDots, color: 'text-sky-600' },
};

View file

@ -6,7 +6,7 @@
test('persona values are stable', function () {
expect(array_map(fn (Persona $persona): string => $persona->value, Persona::cases()))
->toBe(['creator', 'freelancer', 'startup', 'agency', 'small_business', 'other']);
->toBe(['creator', 'freelancer', 'developer', 'startup', 'agency', 'small_business', 'marketer', 'online_store', 'other']);
});
test('every persona has an onboarding label in every locale', function (string $locale) {