Skip to content

Commit 4016d55

Browse files
committed
refactor: deduplicate AdminProfile, type-safe form hooks
- Extract shared AdminProfileForm component for Create/Update - Move selfOnboarding into employee details schema - Preserve schema types through HookResult for typed watch - Centralize schema type aliases in each schema file - Add dedicated create/update hooks with self-fetching - Make field components self-translating via i18n - Add field name/metadata exports for react-hook-form - Derive home address state options from schema Made-with: Cursor
1 parent e1611b3 commit 4016d55

30 files changed

Lines changed: 1098 additions & 743 deletions

docs/reference/endpoint-inventory.json

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -747,26 +747,22 @@
747747
{
748748
"method": "GET",
749749
"path": "/v1/employees/:employeeId"
750-
},
751-
{
752-
"method": "GET",
753-
"path": "/v1/employees/:employeeId/home_addresses"
754-
},
755-
{
756-
"method": "GET",
757-
"path": "/v1/employees/:employeeId/work_addresses"
758750
}
759751
],
760752
"variables": [
761753
"employeeId"
762754
]
763755
},
764-
"Employee.useEmployeeDetails": {
756+
"Employee.UNSTABLE_EmployeeDetailsForm": {
765757
"endpoints": [
766758
{
767759
"method": "POST",
768760
"path": "/v1/companies/:companyId/employees"
769761
},
762+
{
763+
"method": "GET",
764+
"path": "/v1/employees/:employeeId"
765+
},
770766
{
771767
"method": "PUT",
772768
"path": "/v1/employees/:employeeId"
@@ -781,12 +777,16 @@
781777
"employeeId"
782778
]
783779
},
784-
"Employee.useEmployeeHomeAddress": {
780+
"Employee.UNSTABLE_EmployeeHomeAddressForm": {
785781
"endpoints": [
786782
{
787783
"method": "POST",
788784
"path": "/v1/employees/:employeeId/home_addresses"
789785
},
786+
{
787+
"method": "GET",
788+
"path": "/v1/employees/:employeeId/home_addresses"
789+
},
790790
{
791791
"method": "PUT",
792792
"path": "/v1/home_addresses/:homeAddressUuid"
@@ -799,14 +799,6 @@
799799
},
800800
"Employee.ExampleEmployeeProfile": {
801801
"endpoints": [
802-
{
803-
"method": "GET",
804-
"path": "/v1/employees/:employeeId"
805-
},
806-
{
807-
"method": "GET",
808-
"path": "/v1/employees/:employeeId/home_addresses"
809-
},
810802
{
811803
"method": "GET",
812804
"path": "/v1/employees/:employeeId/work_addresses"
@@ -816,19 +808,23 @@
816808
"employeeId"
817809
]
818810
},
819-
"Employee.useEmployeeWorkAddress": {
811+
"Employee.UNSTABLE_EmployeeWorkAddressForm": {
820812
"endpoints": [
821813
{
822-
"method": "GET",
823-
"path": "/v1/companies/:companyId/locations"
814+
"method": "POST",
815+
"path": "/v1/employees/:employeeId/work_addresses"
824816
},
825817
{
826-
"method": "POST",
818+
"method": "GET",
827819
"path": "/v1/employees/:employeeId/work_addresses"
828820
},
829821
{
830822
"method": "PUT",
831823
"path": "/v1/work_addresses/:workAddressUuid"
824+
},
825+
{
826+
"method": "GET",
827+
"path": "/v1/companies/:companyId/locations"
832828
}
833829
],
834830
"variables": [

docs/reference/endpoint-reference.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,19 +149,18 @@ import inventory from '@gusto/embedded-react-sdk/endpoint-inventory.json'
149149
| | GET | `/v1/employees/:employeeUuid/state_taxes` |
150150
| | PUT | `/v1/employees/:employeeUuid/state_taxes` |
151151
| **Employee.ExampleAdminProfile** | GET | `/v1/employees/:employeeId` |
152-
| | GET | `/v1/employees/:employeeId/home_addresses` |
153-
| | GET | `/v1/employees/:employeeId/work_addresses` |
154-
| **Employee.useEmployeeDetails** | POST | `/v1/companies/:companyId/employees` |
152+
| **Employee.UNSTABLE_EmployeeDetailsForm** | POST | `/v1/companies/:companyId/employees` |
153+
| | GET | `/v1/employees/:employeeId` |
155154
| | PUT | `/v1/employees/:employeeId` |
156155
| | PUT | `/v1/employees/:employeeId/onboarding_status` |
157-
| **Employee.useEmployeeHomeAddress** | POST | `/v1/employees/:employeeId/home_addresses` |
158-
| | PUT | `/v1/home_addresses/:homeAddressUuid` |
159-
| **Employee.ExampleEmployeeProfile** | GET | `/v1/employees/:employeeId` |
156+
| **Employee.UNSTABLE_EmployeeHomeAddressForm** | POST | `/v1/employees/:employeeId/home_addresses` |
160157
| | GET | `/v1/employees/:employeeId/home_addresses` |
158+
| | PUT | `/v1/home_addresses/:homeAddressUuid` |
159+
| **Employee.ExampleEmployeeProfile** | GET | `/v1/employees/:employeeId/work_addresses` |
160+
| **Employee.UNSTABLE_EmployeeWorkAddressForm** | POST | `/v1/employees/:employeeId/work_addresses` |
161161
| | GET | `/v1/employees/:employeeId/work_addresses` |
162-
| **Employee.useEmployeeWorkAddress** | GET | `/v1/companies/:companyId/locations` |
163-
| | POST | `/v1/employees/:employeeId/work_addresses` |
164162
| | PUT | `/v1/work_addresses/:workAddressUuid` |
163+
| | GET | `/v1/companies/:companyId/locations` |
165164

166165
## InformationRequests components
167166

0 commit comments

Comments
 (0)