From deea4564e2971181ca8dbf1fc0f6e915e2cd5312 Mon Sep 17 00:00:00 2001 From: Paulo Castellano Date: Tue, 23 Jun 2026 16:19:58 -0300 Subject: [PATCH] feat(onboarding): add Developer persona option Adds a Developer option to the onboarding persona step (after Freelancer), with labels in all three locales (Developer / Desarrollador / Desenvolvedor) and an IconCode glyph in the persona grid. The option flows to the frontend via Persona::cases() and is accepted by the existing enum validation. --- app/Enums/User/Persona.php | 1 + lang/en/onboarding.php | 1 + lang/es/onboarding.php | 1 + lang/pt-BR/onboarding.php | 1 + resources/js/pages/onboarding/Index.vue | 2 ++ tests/Unit/Enums/PersonaTest.php | 2 +- 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Enums/User/Persona.php b/app/Enums/User/Persona.php index 4b1f6cb6..78949d10 100644 --- a/app/Enums/User/Persona.php +++ b/app/Enums/User/Persona.php @@ -8,6 +8,7 @@ enum Persona: string { case Creator = 'creator'; case Freelancer = 'freelancer'; + case Developer = 'developer'; case Startup = 'startup'; case Agency = 'agency'; case SmallBusiness = 'small_business'; diff --git a/lang/en/onboarding.php b/lang/en/onboarding.php index 071288cf..1c1e8a7e 100644 --- a/lang/en/onboarding.php +++ b/lang/en/onboarding.php @@ -9,6 +9,7 @@ 'personas' => [ 'creator' => 'Creator', 'freelancer' => 'Freelancer', + 'developer' => 'Developer', 'startup' => 'Startup', 'agency' => 'Agency', 'small_business' => 'Small business', diff --git a/lang/es/onboarding.php b/lang/es/onboarding.php index eed12c9c..f1189a31 100644 --- a/lang/es/onboarding.php +++ b/lang/es/onboarding.php @@ -9,6 +9,7 @@ 'personas' => [ 'creator' => 'Creador', 'freelancer' => 'Freelancer', + 'developer' => 'Desarrollador', 'startup' => 'Startup', 'agency' => 'Agencia', 'small_business' => 'Pequeña empresa', diff --git a/lang/pt-BR/onboarding.php b/lang/pt-BR/onboarding.php index 408270a8..e1a5f5fc 100644 --- a/lang/pt-BR/onboarding.php +++ b/lang/pt-BR/onboarding.php @@ -9,6 +9,7 @@ 'personas' => [ 'creator' => 'Criador', 'freelancer' => 'Freelancer', + 'developer' => 'Desenvolvedor', 'startup' => 'Startup', 'agency' => 'Agência', 'small_business' => 'Pequena empresa', diff --git a/resources/js/pages/onboarding/Index.vue b/resources/js/pages/onboarding/Index.vue index 1041930c..fdca63d2 100644 --- a/resources/js/pages/onboarding/Index.vue +++ b/resources/js/pages/onboarding/Index.vue @@ -6,6 +6,7 @@ import { IconBuildingSkyscraper, IconBuildingStore, IconCheck, + IconCode, IconDots, IconRocket, IconUser, @@ -26,6 +27,7 @@ const form = useForm({ persona: props.selected ?? '' }); const personaMeta: Record = { 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' }, diff --git a/tests/Unit/Enums/PersonaTest.php b/tests/Unit/Enums/PersonaTest.php index e73e907a..47bafc00 100644 --- a/tests/Unit/Enums/PersonaTest.php +++ b/tests/Unit/Enums/PersonaTest.php @@ -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', 'other']); }); test('every persona has an onboarding label in every locale', function (string $locale) {