@gusto/embedded-react-sdk 0.55.1 → 0.55.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/components/Common/FieldLayout/FieldLayout.js +6 -6
  3. package/dist/components/Common/Fieldset/Fieldset.js +6 -6
  4. package/dist/components/Common/HorizontalFieldLayout/HorizontalFieldLayout.js +6 -6
  5. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
  6. package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
  7. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +58 -49
  8. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
  9. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.module.scss.js +14 -10
  10. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.module.scss.js.map +1 -1
  11. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +4 -0
  12. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  13. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +6 -3
  14. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  15. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +6 -3
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  17. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +8 -5
  18. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  19. package/dist/components/Company/BankAccount/BankAccountForm/context.js +6 -3
  20. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  21. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.d.ts +4 -0
  22. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  23. package/dist/components/Company/DocumentSigner/DocumentList/List.js +11 -8
  24. package/dist/components/Company/DocumentSigner/DocumentList/List.js.map +1 -1
  25. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +6 -3
  26. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  27. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +11 -8
  28. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  29. package/dist/components/Company/Industry/Context.js +9 -6
  30. package/dist/components/Company/Industry/Context.js.map +1 -1
  31. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +6 -3
  32. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  33. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +6 -3
  34. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  35. package/dist/components/Company/OnboardingOverview/context.js +6 -3
  36. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  37. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +6 -3
  38. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  39. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +6 -3
  40. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  41. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +6 -3
  42. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  43. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +116 -116
  44. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  45. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.d.ts +4 -0
  46. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +19 -19
  47. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  48. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js +16 -13
  49. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js.map +1 -1
  50. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +6 -3
  51. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  52. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.d.ts +4 -0
  53. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  54. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
  55. package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
  56. package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
  57. package/dist/components/Flow/Flow.js +1 -1
  58. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +3 -2
  59. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  60. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +75 -71
  61. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  62. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +7 -0
  63. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +202 -165
  64. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  65. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -0
  66. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +88 -82
  67. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  68. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +1 -0
  69. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  70. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +73 -48
  71. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  72. package/dist/components/Payroll/PayrollFlow/PayrollFlow.d.ts +1 -1
  73. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js +22 -20
  74. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
  75. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +3 -0
  76. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +22 -20
  77. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  78. package/dist/components/Payroll/PayrollLanding/PayrollLanding.d.ts +2 -0
  79. package/dist/components/Payroll/PayrollLanding/PayrollLanding.js +34 -26
  80. package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
  81. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.d.ts +4 -0
  82. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +51 -43
  83. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  84. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +2 -0
  85. package/dist/components/Payroll/PayrollList/PayrollList.js +48 -47
  86. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  87. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -1
  88. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +44 -43
  89. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  90. package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +15 -1
  91. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +188 -172
  92. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  93. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +3 -1
  94. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +110 -118
  95. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  96. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +22 -16
  97. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  98. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +58 -49
  99. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  100. package/dist/components/Payroll/PrintChecks/PrintChecks.d.ts +21 -0
  101. package/dist/components/Payroll/PrintChecks/PrintChecks.js +68 -0
  102. package/dist/components/Payroll/PrintChecks/PrintChecks.js.map +1 -0
  103. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.d.ts +9 -0
  104. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js +34 -0
  105. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js.map +1 -0
  106. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/index.d.ts +1 -0
  107. package/dist/components/Payroll/PrintChecks/PrintChecksComponents.d.ts +48 -0
  108. package/dist/components/Payroll/PrintChecks/PrintChecksComponents.js +26 -0
  109. package/dist/components/Payroll/PrintChecks/PrintChecksComponents.js.map +1 -0
  110. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.d.ts +14 -0
  111. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +47 -0
  112. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -0
  113. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/index.d.ts +1 -0
  114. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.d.ts +16 -0
  115. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +144 -0
  116. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -0
  117. package/dist/components/Payroll/PrintChecks/PrintChecksForm/index.d.ts +1 -0
  118. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.d.ts +14 -0
  119. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js +39 -0
  120. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js.map +1 -0
  121. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/index.d.ts +1 -0
  122. package/dist/components/Payroll/PrintChecks/index.d.ts +2 -0
  123. package/dist/components/Payroll/PrintChecks/printChecksStateMachine.d.ts +33 -0
  124. package/dist/components/Payroll/PrintChecks/printChecksStateMachine.js +93 -0
  125. package/dist/components/Payroll/PrintChecks/printChecksStateMachine.js.map +1 -0
  126. package/dist/components/Payroll/PrintChecks/types.d.ts +14 -0
  127. package/dist/components/Payroll/helpers.d.ts +0 -15
  128. package/dist/components/Payroll/helpers.js +13 -18
  129. package/dist/components/Payroll/helpers.js.map +1 -1
  130. package/dist/components/Payroll/index.d.ts +2 -0
  131. package/dist/components/Payroll/index.js +26 -24
  132. package/dist/components/Payroll/index.js.map +1 -1
  133. package/dist/components/Payroll/usePreparedPayrollData.js +15 -12
  134. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  135. package/dist/i18n/I18n.js +4 -0
  136. package/dist/i18n/I18n.js.map +1 -1
  137. package/dist/i18n/en/Company.DocumentList.json.js +34 -32
  138. package/dist/i18n/en/Company.DocumentList.json.js.map +1 -1
  139. package/dist/i18n/en/Employee.DocumentSigner.json.js +24 -22
  140. package/dist/i18n/en/Employee.DocumentSigner.json.js.map +1 -1
  141. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +9 -9
  142. package/dist/i18n/en/Payroll.PayrollOverview.json.js +36 -36
  143. package/dist/i18n/en/Payroll.PayrollReceipts.json.js +2 -2
  144. package/dist/i18n/en/Payroll.PrintChecksBanner.json.js +14 -0
  145. package/dist/i18n/en/Payroll.PrintChecksBanner.json.js.map +1 -0
  146. package/dist/i18n/en/Payroll.PrintChecksFailure.json.js +12 -0
  147. package/dist/i18n/en/Payroll.PrintChecksFailure.json.js.map +1 -0
  148. package/dist/i18n/en/Payroll.PrintChecksForm.json.js +28 -0
  149. package/dist/i18n/en/Payroll.PrintChecksForm.json.js.map +1 -0
  150. package/dist/i18n/en/Payroll.PrintChecksSummary.json.js +14 -0
  151. package/dist/i18n/en/Payroll.PrintChecksSummary.json.js.map +1 -0
  152. package/dist/i18n/types.d.ts +376 -8
  153. package/dist/models/external.d.ts +3 -0
  154. package/dist/partner-hook-utils/form/buildFormSchema.js +60 -54
  155. package/dist/partner-hook-utils/form/buildFormSchema.js.map +1 -1
  156. package/dist/shared/constants.d.ts +28 -0
  157. package/dist/shared/constants.js +61 -50
  158. package/dist/shared/constants.js.map +1 -1
  159. package/dist/style.css +1 -1
  160. package/docs/guides/endpoint-inventory.json +26 -0
  161. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormSchema.js","sources":["../../../src/partner-hook-utils/form/buildFormSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { FieldMetadata } from '../types'\n\n// ── Types ────────────────────────────────────────────────────────────\n\n/**\n * Form lifecycle mode used to vary requiredness and validation rules.\n *\n * @internal\n */\ntype FormMode = 'create' | 'update'\n\n/**\n * Per-field requiredness rule.\n *\n * String values apply requiredness in a fixed mode (`'always'`, `'create'`,\n * `'update'`, or `'never'`). A function form receives the current form data\n * and mode so requiredness can depend on other field values at runtime.\n *\n * @typeParam TData - The shape of the form data passed to predicate rules.\n * @internal\n */\ntype RequiredFieldRule<TData = Record<string, unknown>> =\n 'create' | 'update' | 'always' | 'never' | ((data: TData, mode: FormMode) => boolean)\n\n/**\n * Mapping from each field name in a schema to its {@link RequiredFieldRule}.\n *\n * @typeParam TSchema - The map of field names to their Zod validators.\n * @internal\n */\nexport type RequiredFieldConfig<TSchema extends Record<string, z.ZodType>> = Partial<{\n [K in keyof TSchema & string]: RequiredFieldRule<{\n [F in keyof TSchema]: z.infer<TSchema[F]>\n }>\n}>\n\n/**\n * A predicate (value-conditional) requiredness rule. Matches any function\n * signature so predicate rules are recognized regardless of their parameter or\n * return types. Such fields are never statically required in a given mode, so\n * they're eligible for promotion — see {@link OptionalOnCreate}.\n */\ntype PredicateRule = (...args: never[]) => unknown\n\n/**\n * Union of field names in `TConfig` that are not statically required in create\n * mode and are therefore eligible to be promoted to required in create mode:\n * fields whose base rule is `'update'`, `'never'`, or a predicate. Promoting a\n * predicate field upgrades it from conditionally required to always required.\n *\n * The template-literal wrapper \\`\\` `${...}` \\`\\` is intentional: wrapping a\n * conditional-mapped-type index access in a template literal forces TypeScript\n * to eagerly evaluate and materialize the string union rather than deferring\n * it. Without the wrapper, TypeScript preserves the alias name in hover\n * tooltips and generated docs (`OptionalOnCreate<{ ... }>`), making the type\n * opaque to callers. With it, both IntelliSense and TypeDoc display the\n * resolved concrete union (e.g. `\"stateWcCovered\" | \"twoPercentShareholder\"`).\n */\ntype OptionalOnCreate<TConfig> = `${{\n [K in keyof TConfig & string]: TConfig[K] extends 'update' | 'never' | PredicateRule ? K : never\n}[keyof TConfig & string]}`\n\n/**\n * Union of field names in `TConfig` that are not statically required in update\n * mode and are therefore eligible to be promoted to required in update mode:\n * fields whose base rule is `'create'`, `'never'`, or a predicate.\n *\n * See {@link OptionalOnCreate} for why the template-literal wrapper is here.\n */\ntype OptionalOnUpdate<TConfig> = `${{\n [K in keyof TConfig & string]: TConfig[K] extends 'create' | 'never' | PredicateRule ? K : never\n}[keyof TConfig & string]}`\n\n/**\n * Per-mode list of optional fields a caller can promote to required.\n *\n * Only fields whose base rule allows the override appear in the `create` /\n * `update` arrays — fields that are already required in a given mode are\n * excluded from that mode's list at the type level. Value-conditional\n * (predicate) fields are eligible in both modes; listing one promotes it from\n * conditionally required to always required for that mode.\n *\n * @typeParam TConfig - The {@link RequiredFieldConfig} that constrains which fields are eligible.\n * @internal\n * @interface\n */\nexport type OptionalFieldsToRequire<TConfig> = {\n /** Fields that can be required in create mode */\n create?: Array<OptionalOnCreate<TConfig>>\n /** Fields that can be required in update mode */\n update?: Array<OptionalOnUpdate<TConfig>>\n}\n\n// ── buildFormSchema ──────────────────────────────────────────────────\n\ninterface BuildFormSchemaOptions<\n T extends Record<string, z.ZodType>,\n TConfig extends RequiredFieldConfig<T>,\n> {\n requiredFieldsConfig?: TConfig\n requiredErrorCode?: string\n mode: FormMode\n optionalFieldsToRequire?: OptionalFieldsToRequire<TConfig>\n /**\n * Fields that don't apply and should be dropped from required validation.\n *\n * An **array** removes the fields at build time — they're absent from the\n * schema shape entirely (use when applicability is fixed by a config flag).\n *\n * A **function** is evaluated against the values under validation, so a field\n * can flip in/out of applicability as other values change. The field stays in\n * the schema (validated as optional) but its required check is skipped while\n * the function reports it as excluded.\n */\n excludeFields?:\n | Array<keyof T & string>\n | ((data: { [K in keyof T]: z.infer<T[K]> }, mode: FormMode) => Array<keyof T & string>)\n /** Fields with existing server-side values that are redacted in the API response\n * (e.g. SSN, EIN). These fields remain in the schema for format validation and\n * appear in metadata (with `hasRedactedValue: true`) but are exempt from required\n * validation — an empty submission is valid because a value already exists. */\n fieldsWithRedactedValues?: Array<keyof T & string>\n superRefine?: (data: { [K in keyof T]: z.infer<T[K]> }, ctx: z.RefinementCtx) => void\n}\n\n/**\n * Companion config returned alongside a built schema, used to derive per-field\n * metadata and to identify which form values predicate-based rules depend on.\n *\n * @typeParam T - The map of field names to their Zod validators.\n * @internal\n */\nexport interface FieldsMetadataConfig<T extends Record<string, z.ZodType>> {\n getFieldsMetadata: (data?: Record<string, unknown>) => Record<keyof T, FieldMetadata>\n /** Form field names that predicate-based requiredness rules read at runtime. */\n predicateDeps: string[]\n}\n\ntype FormDataFromValidators<T extends Record<string, z.ZodType>> = {\n [K in keyof T]: z.infer<T[K]>\n}\n\n/**\n * Tuple returned by {@link buildFormSchema}: the composed Zod schema followed\n * by its {@link FieldsMetadataConfig}.\n *\n * @typeParam T - The map of field names to their Zod validators.\n * @internal\n */\nexport type BuildFormSchemaResult<T extends Record<string, z.ZodType>> = [\n schema: z.ZodType<FormDataFromValidators<T>, FormDataFromValidators<T>>,\n metadataConfig: FieldsMetadataConfig<T>,\n]\n\n/**\n * Composes a Zod object schema and matching metadata config from a map of\n * per-field validators, applying mode-aware requiredness rules.\n *\n * @remarks\n * Every field is wrapped to coerce empty strings, `null`, `undefined`, and\n * `NaN` to `undefined` before validation, so blank inputs surface as missing\n * rather than as type-mismatch errors. Required-field checks run in a\n * `superRefine` pass that emits an issue keyed by `requiredErrorCode` (defaults\n * to `REQUIRED`) for each unfilled required field.\n *\n * Fields listed in `fieldsWithRedactedValues` remain in the schema for format\n * validation and appear in metadata with `hasRedactedValue: true`, but are\n * exempt from required-field validation because a server-side value already\n * exists.\n *\n * @typeParam T - The map of field names to their Zod validators.\n * @typeParam TConfig - The shape of the requiredness configuration.\n * @param fieldValidators - Map from field name to the validator that runs when a value is present.\n * @param options - Mode, required-field config, redaction list, and optional `superRefine`.\n * @returns A {@link BuildFormSchemaResult} tuple: the schema and its metadata config.\n * @internal\n */\nexport function buildFormSchema<\n T extends Record<string, z.ZodType>,\n TConfig extends RequiredFieldConfig<T>,\n>(fieldValidators: T, options: BuildFormSchemaOptions<T, TConfig>): BuildFormSchemaResult<T> {\n const {\n mode,\n requiredFieldsConfig = {} as Record<string, RequiredFieldRule>,\n requiredErrorCode = 'REQUIRED',\n excludeFields = [],\n } = options\n // The array form removes fields at build time; the function form is resolved\n // per-validation in the superRefine pass below.\n const excludeFieldsFn = typeof excludeFields === 'function' ? excludeFields : undefined\n const staticExcluded = new Set((Array.isArray(excludeFields) ? excludeFields : []).map(String))\n const redacted = new Set((options.fieldsWithRedactedValues ?? []).map(String))\n const partnerRequired = new Set(\n resolveOptionalFieldsToRequire(options.optionalFieldsToRequire, mode),\n )\n\n const shape: Record<string, z.ZodType> = {}\n const dynamicRequired: Array<{\n name: string\n predicate: (data: Record<string, unknown>, mode: FormMode) => boolean\n }> = []\n const includedFieldNames: string[] = []\n const config = requiredFieldsConfig as Record<string, RequiredFieldRule>\n\n for (const [name, validator] of Object.entries(fieldValidators)) {\n if (staticExcluded.has(name)) continue\n includedFieldNames.push(name)\n\n const effectiveRule = config[name] ?? 'always'\n\n shape[name] = makeOptional(validator)\n\n if (!redacted.has(name)) {\n const isPartnerRequired = partnerRequired.has(name)\n\n if (typeof effectiveRule === 'function') {\n dynamicRequired.push({\n name,\n predicate: isPartnerRequired ? () => true : effectiveRule,\n })\n } else {\n const isRequired = effectiveRule === 'always' || effectiveRule === mode || isPartnerRequired\n if (isRequired) {\n dynamicRequired.push({ name, predicate: () => true })\n }\n }\n }\n }\n\n const hasSuperRefine = dynamicRequired.length > 0 || options.superRefine\n let schema: z.ZodType = z.object(shape)\n\n if (hasSuperRefine) {\n schema = (schema as z.ZodObject).superRefine(\n (data: Record<string, unknown>, ctx: z.RefinementCtx) => {\n const typedData = data as FormDataFromValidators<T>\n const excludedNow = excludeFieldsFn\n ? new Set(excludeFieldsFn(typedData, mode).map(String))\n : undefined\n\n for (const { name, predicate } of dynamicRequired) {\n if (excludedNow?.has(name)) continue\n if (predicate(data, mode) && isEmpty(data[name])) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [name],\n message: requiredErrorCode,\n })\n }\n }\n\n options.superRefine?.(typedData, ctx)\n },\n )\n }\n\n const predicateDeps = detectPredicateDeps(dynamicRequired, mode)\n\n function getFieldsMetadata(data?: Record<string, unknown>) {\n const metadata: Record<string, FieldMetadata> = {}\n\n for (const name of includedFieldNames) {\n const effectiveRule = config[name] ?? 'always'\n\n if (partnerRequired.has(name)) {\n metadata[name] = { name, isRequired: true }\n } else if (typeof effectiveRule === 'function') {\n metadata[name] = { name, isRequired: data ? effectiveRule(data, mode) : false }\n } else {\n metadata[name] = {\n name,\n isRequired: effectiveRule === 'always' || effectiveRule === mode,\n }\n }\n\n if (redacted.has(name)) {\n metadata[name].hasRedactedValue = true\n }\n }\n\n return metadata as Record<keyof T, FieldMetadata>\n }\n\n // makeOptional wraps fields with z.preprocess, which causes z.input to infer\n // `unknown`. Cast the schema to carry the original field types so zodResolver\n // infers correct form data types — consumers don't need per-hook casts.\n return [\n schema as z.ZodType<FormDataFromValidators<T>, FormDataFromValidators<T>>,\n { getFieldsMetadata, predicateDeps },\n ]\n}\n\n// ── Internal helpers ─────────────────────────────────────────────────\n\nfunction resolveOptionalFieldsToRequire<TConfig>(\n value: OptionalFieldsToRequire<TConfig> | undefined,\n mode: FormMode,\n): string[] {\n if (!value) return []\n return ((mode === 'create' ? value.create : value.update) ?? []) as string[]\n}\n\nfunction makeOptional(validator: z.ZodType): z.ZodType {\n return z.preprocess(v => (isEmpty(v) ? undefined : v), validator.optional())\n}\n\nfunction isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string' && value.trim() === '') return true\n if (typeof value === 'number' && Number.isNaN(value)) return true\n return false\n}\n\n/**\n * Determines which form field names are read by predicate-based requiredness\n * rules. This enables `useDeriveFieldsMetadata` to watch only the specific\n * fields that predicates depend on, rather than subscribing to every form\n * value change (which defeats react-hook-form's per-field render optimization).\n *\n * Works by running each predicate against a recording Proxy. The Proxy\n * intercepts property access and logs the keys, giving us the dependency list\n * without requiring manual declaration.\n *\n * Limitation: JavaScript short-circuit evaluation (`a && b`) can prevent the\n * Proxy from seeing later operands when earlier ones are falsy. In practice\n * this is acceptable — our predicate rules read a single form value each\n * (e.g. `data => data.adjustForMinimumWage`). Multi-field predicates with\n * equality guards should be expressed as `superRefine` rules instead.\n */\nfunction detectPredicateDeps(\n dynamicRequired: Array<{\n name: string\n predicate: (data: Record<string, unknown>, mode: FormMode) => boolean\n }>,\n mode: FormMode,\n): string[] {\n const deps = new Set<string>()\n\n for (const { predicate } of dynamicRequired) {\n if (isConstantPredicate(predicate)) continue\n\n const accessed: string[] = []\n const proxy = new Proxy({} as Record<string, unknown>, {\n get(_target, prop) {\n if (typeof prop === 'string') accessed.push(prop)\n return undefined\n },\n })\n\n try {\n predicate(proxy, mode)\n } catch {\n /* Predicate may throw on undefined values — that's fine, we already captured the property accesses */\n }\n\n for (const key of accessed) deps.add(key)\n }\n\n return [...deps]\n}\n\n/**\n * Static predicates (e.g. `() => true` from 'always' / mode rules / partner\n * overrides) don't access form data, so we skip them during dependency\n * detection. We identify them by running against an empty proxy and checking\n * whether any properties were accessed.\n */\nfunction isConstantPredicate(\n predicate: (data: Record<string, unknown>, mode: FormMode) => boolean,\n): boolean {\n const accessed: string[] = []\n const proxy = new Proxy({} as Record<string, unknown>, {\n get(_target, prop) {\n if (typeof prop === 'string') accessed.push(prop)\n return undefined\n },\n })\n try {\n predicate(proxy, 'create')\n } catch {\n /* ignore */\n }\n return accessed.length === 0\n}\n"],"names":["buildFormSchema","fieldValidators","options","mode","requiredFieldsConfig","requiredErrorCode","excludeFields","excludeFieldsFn","staticExcluded","redacted","partnerRequired","resolveOptionalFieldsToRequire","shape","dynamicRequired","includedFieldNames","config","name","validator","effectiveRule","makeOptional","isPartnerRequired","hasSuperRefine","schema","z","data","ctx","typedData","excludedNow","predicate","isEmpty","predicateDeps","detectPredicateDeps","getFieldsMetadata","metadata","value","v","deps","isConstantPredicate","accessed","proxy","_target","prop","key"],"mappings":"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"}
1
+ {"version":3,"file":"buildFormSchema.js","sources":["../../../src/partner-hook-utils/form/buildFormSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { FieldMetadata } from '../types'\n\n// ── Types ────────────────────────────────────────────────────────────\n\n/**\n * Form lifecycle mode used to vary requiredness and validation rules.\n *\n * @internal\n */\ntype FormMode = 'create' | 'update'\n\n/**\n * Per-field requiredness rule.\n *\n * String values apply requiredness in a fixed mode (`'always'`, `'create'`,\n * `'update'`, or `'never'`). A function form receives the current form data\n * and mode so requiredness can depend on other field values at runtime.\n *\n * @typeParam TData - The shape of the form data passed to predicate rules.\n * @internal\n */\ntype RequiredFieldRule<TData = Record<string, unknown>> =\n 'create' | 'update' | 'always' | 'never' | ((data: TData, mode: FormMode) => boolean)\n\n/**\n * Mapping from each field name in a schema to its {@link RequiredFieldRule}.\n *\n * @typeParam TSchema - The map of field names to their Zod validators.\n * @internal\n */\nexport type RequiredFieldConfig<TSchema extends Record<string, z.ZodType>> = Partial<{\n [K in keyof TSchema & string]: RequiredFieldRule<{\n [F in keyof TSchema]: z.infer<TSchema[F]>\n }>\n}>\n\n/**\n * A predicate (value-conditional) requiredness rule. Matches any function\n * signature so predicate rules are recognized regardless of their parameter or\n * return types. Such fields are never statically required in a given mode, so\n * they're eligible for promotion — see {@link OptionalOnCreate}.\n */\ntype PredicateRule = (...args: never[]) => unknown\n\n/**\n * Union of field names in `TConfig` that are not statically required in create\n * mode and are therefore eligible to be promoted to required in create mode:\n * fields whose base rule is `'update'`, `'never'`, or a predicate. Promoting a\n * predicate field upgrades it from conditionally required to always required.\n *\n * The template-literal wrapper \\`\\` `${...}` \\`\\` is intentional: wrapping a\n * conditional-mapped-type index access in a template literal forces TypeScript\n * to eagerly evaluate and materialize the string union rather than deferring\n * it. Without the wrapper, TypeScript preserves the alias name in hover\n * tooltips and generated docs (`OptionalOnCreate<{ ... }>`), making the type\n * opaque to callers. With it, both IntelliSense and TypeDoc display the\n * resolved concrete union (e.g. `\"stateWcCovered\" | \"twoPercentShareholder\"`).\n */\ntype OptionalOnCreate<TConfig> = `${{\n [K in keyof TConfig & string]: TConfig[K] extends 'update' | 'never' | PredicateRule ? K : never\n}[keyof TConfig & string]}`\n\n/**\n * Union of field names in `TConfig` that are not statically required in update\n * mode and are therefore eligible to be promoted to required in update mode:\n * fields whose base rule is `'create'`, `'never'`, or a predicate.\n *\n * See {@link OptionalOnCreate} for why the template-literal wrapper is here.\n */\ntype OptionalOnUpdate<TConfig> = `${{\n [K in keyof TConfig & string]: TConfig[K] extends 'create' | 'never' | PredicateRule ? K : never\n}[keyof TConfig & string]}`\n\n/**\n * Per-mode list of optional fields a caller can promote to required.\n *\n * Only fields whose base rule allows the override appear in the `create` /\n * `update` arrays — fields that are already required in a given mode are\n * excluded from that mode's list at the type level. Value-conditional\n * (predicate) fields are eligible in both modes; listing one promotes it from\n * conditionally required to always required for that mode.\n *\n * @typeParam TConfig - The {@link RequiredFieldConfig} that constrains which fields are eligible.\n * @internal\n * @interface\n */\nexport type OptionalFieldsToRequire<TConfig> = {\n /** Fields that can be required in create mode */\n create?: Array<OptionalOnCreate<TConfig>>\n /** Fields that can be required in update mode */\n update?: Array<OptionalOnUpdate<TConfig>>\n}\n\n// ── buildFormSchema ──────────────────────────────────────────────────\n\ninterface BuildFormSchemaOptions<\n T extends Record<string, z.ZodType>,\n TConfig extends RequiredFieldConfig<T>,\n> {\n requiredFieldsConfig?: TConfig\n requiredErrorCode?: string\n mode: FormMode\n optionalFieldsToRequire?: OptionalFieldsToRequire<TConfig>\n /**\n * Fields that don't apply and should be dropped from required validation.\n *\n * An **array** removes the fields at build time — they're absent from the\n * schema shape entirely (use when applicability is fixed by a config flag).\n *\n * A **function** is evaluated against the values under validation, so a field\n * can flip in/out of applicability as other values change. The field stays in\n * the schema (validated as optional) but its required check is skipped while\n * the function reports it as excluded.\n */\n excludeFields?:\n | Array<keyof T & string>\n | ((data: { [K in keyof T]: z.infer<T[K]> }, mode: FormMode) => Array<keyof T & string>)\n /** Fields with existing server-side values that are redacted in the API response\n * (e.g. SSN, EIN). These fields remain in the schema for format validation and\n * appear in metadata (with `hasRedactedValue: true`) but are exempt from required\n * validation — an empty submission is valid because a value already exists. */\n fieldsWithRedactedValues?: Array<keyof T & string>\n superRefine?: (data: { [K in keyof T]: z.infer<T[K]> }, ctx: z.RefinementCtx) => void\n}\n\n/**\n * Companion config returned alongside a built schema, used to derive per-field\n * metadata and to identify which form values predicate-based rules depend on.\n *\n * @typeParam T - The map of field names to their Zod validators.\n * @internal\n */\nexport interface FieldsMetadataConfig<T extends Record<string, z.ZodType>> {\n getFieldsMetadata: (data?: Record<string, unknown>) => Record<keyof T, FieldMetadata>\n /** Form field names that predicate-based requiredness rules read at runtime. */\n predicateDeps: string[]\n}\n\ntype FormDataFromValidators<T extends Record<string, z.ZodType>> = {\n [K in keyof T]: z.infer<T[K]>\n}\n\n/**\n * Tuple returned by {@link buildFormSchema}: the composed Zod schema followed\n * by its {@link FieldsMetadataConfig}.\n *\n * @typeParam T - The map of field names to their Zod validators.\n * @internal\n */\nexport type BuildFormSchemaResult<T extends Record<string, z.ZodType>> = [\n schema: z.ZodType<FormDataFromValidators<T>, FormDataFromValidators<T>>,\n metadataConfig: FieldsMetadataConfig<T>,\n]\n\n/**\n * Composes a Zod object schema and matching metadata config from a map of\n * per-field validators, applying mode-aware requiredness rules.\n *\n * @remarks\n * Every field is wrapped to coerce empty strings, `null`, `undefined`, and\n * `NaN` to `undefined` before validation, so blank inputs surface as missing\n * rather than as type-mismatch errors. Required-field checks run in a\n * `superRefine` pass that emits an issue keyed by `requiredErrorCode` (defaults\n * to `REQUIRED`) for each unfilled required field.\n *\n * Fields listed in `fieldsWithRedactedValues` remain in the schema for format\n * validation and appear in metadata with `hasRedactedValue: true`, but are\n * exempt from required-field validation because a server-side value already\n * exists.\n *\n * @typeParam T - The map of field names to their Zod validators.\n * @typeParam TConfig - The shape of the requiredness configuration.\n * @param fieldValidators - Map from field name to the validator that runs when a value is present.\n * @param options - Mode, required-field config, redaction list, and optional `superRefine`.\n * @returns A {@link BuildFormSchemaResult} tuple: the schema and its metadata config.\n * @internal\n */\nexport function buildFormSchema<\n T extends Record<string, z.ZodType>,\n TConfig extends RequiredFieldConfig<T>,\n>(fieldValidators: T, options: BuildFormSchemaOptions<T, TConfig>): BuildFormSchemaResult<T> {\n const {\n mode,\n requiredFieldsConfig = {} as Record<string, RequiredFieldRule>,\n requiredErrorCode = 'REQUIRED',\n excludeFields = [],\n } = options\n // The array form removes fields at build time; the function form is resolved\n // per-validation in the superRefine pass below.\n const excludeFieldsFn = typeof excludeFields === 'function' ? excludeFields : undefined\n const staticExcluded = new Set((Array.isArray(excludeFields) ? excludeFields : []).map(String))\n const redacted = new Set((options.fieldsWithRedactedValues ?? []).map(String))\n const partnerRequired = new Set(\n resolveOptionalFieldsToRequire(options.optionalFieldsToRequire, mode),\n )\n\n const shape: Record<string, z.ZodType> = {}\n const dynamicRequired: Array<{\n name: string\n predicate: (data: Record<string, unknown>, mode: FormMode) => boolean\n }> = []\n const includedFieldNames: string[] = []\n const config = requiredFieldsConfig as Record<string, RequiredFieldRule>\n\n for (const [name, validator] of Object.entries(fieldValidators)) {\n if (staticExcluded.has(name)) continue\n includedFieldNames.push(name)\n\n const effectiveRule = config[name] ?? 'always'\n\n shape[name] = makeOptional(validator)\n\n if (!redacted.has(name)) {\n const isPartnerRequired = partnerRequired.has(name)\n\n if (typeof effectiveRule === 'function') {\n dynamicRequired.push({\n name,\n predicate: isPartnerRequired ? () => true : effectiveRule,\n })\n } else {\n const isRequired = effectiveRule === 'always' || effectiveRule === mode || isPartnerRequired\n if (isRequired) {\n dynamicRequired.push({ name, predicate: () => true })\n }\n }\n }\n }\n\n const hasSuperRefine = dynamicRequired.length > 0 || options.superRefine\n const objectSchema = z.object(shape)\n\n let schema: z.ZodType = excludeFieldsFn\n ? z.preprocess((val: unknown) => {\n if (typeof val !== 'object' || val === null) return val\n const data = { ...(val as Record<string, unknown>) }\n for (const key of excludeFieldsFn(data as FormDataFromValidators<T>, mode)) {\n data[key as string] = undefined\n }\n return data\n }, objectSchema)\n : objectSchema\n\n if (hasSuperRefine) {\n schema = (schema as z.ZodObject).superRefine(\n (data: Record<string, unknown>, ctx: z.RefinementCtx) => {\n const typedData = data as FormDataFromValidators<T>\n const excludedNow = excludeFieldsFn\n ? new Set(excludeFieldsFn(typedData, mode).map(String))\n : undefined\n\n for (const { name, predicate } of dynamicRequired) {\n if (excludedNow?.has(name)) continue\n if (predicate(data, mode) && isEmpty(data[name])) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [name],\n message: requiredErrorCode,\n })\n }\n }\n\n options.superRefine?.(typedData, ctx)\n },\n )\n }\n\n const predicateDeps = detectPredicateDeps(dynamicRequired, mode)\n\n function getFieldsMetadata(data?: Record<string, unknown>) {\n const metadata: Record<string, FieldMetadata> = {}\n\n for (const name of includedFieldNames) {\n const effectiveRule = config[name] ?? 'always'\n\n if (partnerRequired.has(name)) {\n metadata[name] = { name, isRequired: true }\n } else if (typeof effectiveRule === 'function') {\n metadata[name] = { name, isRequired: data ? effectiveRule(data, mode) : false }\n } else {\n metadata[name] = {\n name,\n isRequired: effectiveRule === 'always' || effectiveRule === mode,\n }\n }\n\n if (redacted.has(name)) {\n metadata[name].hasRedactedValue = true\n }\n }\n\n return metadata as Record<keyof T, FieldMetadata>\n }\n\n // makeOptional wraps fields with z.preprocess, which causes z.input to infer\n // `unknown`. Cast the schema to carry the original field types so zodResolver\n // infers correct form data types — consumers don't need per-hook casts.\n return [\n schema as z.ZodType<FormDataFromValidators<T>, FormDataFromValidators<T>>,\n { getFieldsMetadata, predicateDeps },\n ]\n}\n\n// ── Internal helpers ─────────────────────────────────────────────────\n\nfunction resolveOptionalFieldsToRequire<TConfig>(\n value: OptionalFieldsToRequire<TConfig> | undefined,\n mode: FormMode,\n): string[] {\n if (!value) return []\n return ((mode === 'create' ? value.create : value.update) ?? []) as string[]\n}\n\nfunction makeOptional(validator: z.ZodType): z.ZodType {\n return z.preprocess(v => (isEmpty(v) ? undefined : v), validator.optional())\n}\n\nfunction isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string' && value.trim() === '') return true\n if (typeof value === 'number' && Number.isNaN(value)) return true\n return false\n}\n\n/**\n * Determines which form field names are read by predicate-based requiredness\n * rules. This enables `useDeriveFieldsMetadata` to watch only the specific\n * fields that predicates depend on, rather than subscribing to every form\n * value change (which defeats react-hook-form's per-field render optimization).\n *\n * Works by running each predicate against a recording Proxy. The Proxy\n * intercepts property access and logs the keys, giving us the dependency list\n * without requiring manual declaration.\n *\n * Limitation: JavaScript short-circuit evaluation (`a && b`) can prevent the\n * Proxy from seeing later operands when earlier ones are falsy. In practice\n * this is acceptable — our predicate rules read a single form value each\n * (e.g. `data => data.adjustForMinimumWage`). Multi-field predicates with\n * equality guards should be expressed as `superRefine` rules instead.\n */\nfunction detectPredicateDeps(\n dynamicRequired: Array<{\n name: string\n predicate: (data: Record<string, unknown>, mode: FormMode) => boolean\n }>,\n mode: FormMode,\n): string[] {\n const deps = new Set<string>()\n\n for (const { predicate } of dynamicRequired) {\n if (isConstantPredicate(predicate)) continue\n\n const accessed: string[] = []\n const proxy = new Proxy({} as Record<string, unknown>, {\n get(_target, prop) {\n if (typeof prop === 'string') accessed.push(prop)\n return undefined\n },\n })\n\n try {\n predicate(proxy, mode)\n } catch {\n /* Predicate may throw on undefined values — that's fine, we already captured the property accesses */\n }\n\n for (const key of accessed) deps.add(key)\n }\n\n return [...deps]\n}\n\n/**\n * Static predicates (e.g. `() => true` from 'always' / mode rules / partner\n * overrides) don't access form data, so we skip them during dependency\n * detection. We identify them by running against an empty proxy and checking\n * whether any properties were accessed.\n */\nfunction isConstantPredicate(\n predicate: (data: Record<string, unknown>, mode: FormMode) => boolean,\n): boolean {\n const accessed: string[] = []\n const proxy = new Proxy({} as Record<string, unknown>, {\n get(_target, prop) {\n if (typeof prop === 'string') accessed.push(prop)\n return undefined\n },\n })\n try {\n predicate(proxy, 'create')\n } catch {\n /* ignore */\n }\n return accessed.length === 0\n}\n"],"names":["buildFormSchema","fieldValidators","options","mode","requiredFieldsConfig","requiredErrorCode","excludeFields","excludeFieldsFn","staticExcluded","redacted","partnerRequired","resolveOptionalFieldsToRequire","shape","dynamicRequired","includedFieldNames","config","name","validator","effectiveRule","makeOptional","isPartnerRequired","hasSuperRefine","objectSchema","z","schema","val","data","key","ctx","typedData","excludedNow","predicate","isEmpty","predicateDeps","detectPredicateDeps","getFieldsMetadata","metadata","value","v","deps","isConstantPredicate","accessed","proxy","_target","prop"],"mappings":"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"}
@@ -333,6 +333,7 @@ export declare const payScheduleEvents: {
333
333
  export declare const runPayrollEvents: {
334
334
  readonly RUN_PAYROLL_BACK: "runPayroll/back";
335
335
  readonly RUN_PAYROLL_CALCULATED: "runPayroll/calculated";
336
+ readonly RUN_PAYROLL_ALREADY_PROCESSED: "runPayroll/alreadyProcessed";
336
337
  readonly RUN_PAYROLL_CANCELLED: "runPayroll/cancelled";
337
338
  readonly RUN_PAYROLL_CANCELLED_ALERT_DISMISSED: "runPayroll/cancelled/alertDismissed";
338
339
  readonly RUN_PAYROLL_EDIT: "runPayroll/edit";
@@ -413,6 +414,25 @@ export declare const recoveryCasesEvents: {
413
414
  readonly RECOVERY_CASE_RESUBMIT_CANCEL: "recoveryCase/resubmit/cancel";
414
415
  readonly RECOVERY_CASE_RESUBMIT_DONE: "recoveryCase/resubmit/done";
415
416
  };
417
+ /**
418
+ * Event keys emitted by the print-checks component.
419
+ *
420
+ * @remarks
421
+ * These keys are merged into {@link componentEvents}. Consume them through the
422
+ * `onEvent` handler of the print-checks component and compare against the
423
+ * value of an entry on this object.
424
+ *
425
+ * @public
426
+ */
427
+ export declare const printChecksEvents: {
428
+ readonly PRINT_CHECKS_START: "payroll/printChecks/start";
429
+ readonly PRINT_CHECKS_GENERATE_START: "payroll/printChecks/generate/start";
430
+ readonly PRINT_CHECKS_GENERATE_SUCCEEDED: "payroll/printChecks/generate/succeeded";
431
+ readonly PRINT_CHECKS_GENERATE_FAILED: "payroll/printChecks/generate/failed";
432
+ readonly PRINT_CHECKS_RETRY: "payroll/printChecks/retry";
433
+ readonly PRINT_CHECKS_CANCEL: "payroll/printChecks/cancel";
434
+ readonly PRINT_CHECKS_CLOSE: "payroll/printChecks/close";
435
+ };
416
436
  /**
417
437
  * Event keys emitted by off-cycle payroll and transition components.
418
438
  *
@@ -561,6 +581,13 @@ export declare const componentEvents: {
561
581
  readonly CONTRACTOR_PAYMENT_CANCEL: "contractor/payments/cancel";
562
582
  readonly CONTRACTOR_PAYMENT_EXIT: "contractor/payments/exit";
563
583
  readonly CONTRACTOR_PAYMENT_RFI_RESPOND: "contractor/payments/rfi/respond";
584
+ readonly PRINT_CHECKS_START: "payroll/printChecks/start";
585
+ readonly PRINT_CHECKS_GENERATE_START: "payroll/printChecks/generate/start";
586
+ readonly PRINT_CHECKS_GENERATE_SUCCEEDED: "payroll/printChecks/generate/succeeded";
587
+ readonly PRINT_CHECKS_GENERATE_FAILED: "payroll/printChecks/generate/failed";
588
+ readonly PRINT_CHECKS_RETRY: "payroll/printChecks/retry";
589
+ readonly PRINT_CHECKS_CANCEL: "payroll/printChecks/cancel";
590
+ readonly PRINT_CHECKS_CLOSE: "payroll/printChecks/close";
564
591
  readonly RECOVERY_CASE_RESOLVE: "recoveryCase/resolve";
565
592
  readonly RECOVERY_CASE_RESUBMIT: "recoveryCase/resubmit";
566
593
  readonly RECOVERY_CASE_RESUBMIT_CANCEL: "recoveryCase/resubmit/cancel";
@@ -577,6 +604,7 @@ export declare const componentEvents: {
577
604
  readonly PAYROLL_WIRE_FORM_CANCEL: "payroll/wire/form/cancel";
578
605
  readonly RUN_PAYROLL_BACK: "runPayroll/back";
579
606
  readonly RUN_PAYROLL_CALCULATED: "runPayroll/calculated";
607
+ readonly RUN_PAYROLL_ALREADY_PROCESSED: "runPayroll/alreadyProcessed";
580
608
  readonly RUN_PAYROLL_CANCELLED: "runPayroll/cancelled";
581
609
  readonly RUN_PAYROLL_CANCELLED_ALERT_DISMISSED: "runPayroll/cancelled/alertDismissed";
582
610
  readonly RUN_PAYROLL_EDIT: "runPayroll/edit";
@@ -246,6 +246,7 @@ const t = {
246
246
  }, M = {
247
247
  RUN_PAYROLL_BACK: "runPayroll/back",
248
248
  RUN_PAYROLL_CALCULATED: "runPayroll/calculated",
249
+ RUN_PAYROLL_ALREADY_PROCESSED: "runPayroll/alreadyProcessed",
249
250
  RUN_PAYROLL_CANCELLED: "runPayroll/cancelled",
250
251
  RUN_PAYROLL_CANCELLED_ALERT_DISMISSED: "runPayroll/cancelled/alertDismissed",
251
252
  RUN_PAYROLL_EDIT: "runPayroll/edit",
@@ -293,12 +294,20 @@ const t = {
293
294
  RECOVERY_CASE_RESUBMIT_CANCEL: "recoveryCase/resubmit/cancel",
294
295
  RECOVERY_CASE_RESUBMIT_DONE: "recoveryCase/resubmit/done"
295
296
  }, d = {
297
+ PRINT_CHECKS_START: "payroll/printChecks/start",
298
+ PRINT_CHECKS_GENERATE_START: "payroll/printChecks/generate/start",
299
+ PRINT_CHECKS_GENERATE_SUCCEEDED: "payroll/printChecks/generate/succeeded",
300
+ PRINT_CHECKS_GENERATE_FAILED: "payroll/printChecks/generate/failed",
301
+ PRINT_CHECKS_RETRY: "payroll/printChecks/retry",
302
+ PRINT_CHECKS_CANCEL: "payroll/printChecks/cancel",
303
+ PRINT_CHECKS_CLOSE: "payroll/printChecks/close"
304
+ }, C = {
296
305
  OFF_CYCLE_CREATED: "offCycle/created",
297
306
  DISMISSAL_PAY_PERIOD_SELECTED: "dismissal/payPeriod/selected",
298
307
  TRANSITION_CREATED: "transition/created",
299
308
  RUN_TRANSITION_PAYROLL: "transition/runPayroll",
300
309
  TRANSITION_PAYROLL_SKIPPED: "transition/payrollSkipped"
301
- }, C = {
310
+ }, c = {
302
311
  TIME_OFF_CREATE_POLICY: "timeOff/createPolicy",
303
312
  TIME_OFF_VIEW_POLICY: "timeOff/viewPolicy",
304
313
  TIME_OFF_POLICY_TYPE_SELECTED: "timeOff/policyTypeSelected",
@@ -326,7 +335,7 @@ const t = {
326
335
  TIME_OFF_EDIT_HOLIDAY_POLICY: "timeOff/editHolidayPolicy",
327
336
  TIME_OFF_HOLIDAY_SELECTION_EDIT_DONE: "timeOff/holidaySelection/editDone",
328
337
  TIME_OFF_DELETE_POLICY_DONE: "timeOff/deletePolicy/done"
329
- }, p = {
338
+ }, y = {
330
339
  ROBOT_MACHINE_DONE: "done",
331
340
  //This is internal Robot event thrown when machine transitions to final state
332
341
  ERROR: "ERROR",
@@ -340,11 +349,12 @@ const t = {
340
349
  ...D,
341
350
  ...r,
342
351
  ...m,
352
+ ...d,
343
353
  ...n,
344
354
  ...a,
345
- ...d,
355
+ ...C,
346
356
  ...N,
347
- ...C
357
+ ...c
348
358
  }, A = {
349
359
  ADMIN_ONBOARDING_INCOMPLETE: E.AdminOnboardingIncomplete,
350
360
  SELF_ONBOARDING_PENDING_INVITE: E.SelfOnboardingPendingInvite,
@@ -366,23 +376,23 @@ const t = {
366
376
  SELF_ONBOARDING_STARTED: e.SelfOnboardingStarted,
367
377
  SELF_ONBOARDING_REVIEW: e.SelfOnboardingReview,
368
378
  ONBOARDING_COMPLETED: e.OnboardingCompleted
369
- }, y = /* @__PURE__ */ new Set([
379
+ }, U = /* @__PURE__ */ new Set([
370
380
  _.SELF_ONBOARDING_NOT_INVITED,
371
381
  _.SELF_ONBOARDING_INVITED,
372
382
  _.SELF_ONBOARDING_STARTED,
373
383
  _.SELF_ONBOARDING_REVIEW
374
- ]), U = {
384
+ ]), u = {
375
385
  EXEMPT: "Exempt",
376
386
  SALARIED_NONEXEMPT: "Salaried Nonexempt",
377
387
  NONEXEMPT: "Nonexempt",
378
388
  OWNER: "Owner",
379
389
  COMMISSION_ONLY_EXEMPT: "Commission Only Exempt",
380
390
  COMMISSION_ONLY_NONEXEMPT: "Commission Only Nonexempt"
381
- }, u = {
391
+ }, F = {
382
392
  REGULAR_HOURS_NAME: "regular hours",
383
393
  OVERTIME_NAME: "overtime",
384
394
  DOUBLE_OVERTIME_NAME: "double overtime"
385
- }, F = 35568, g = 40, G = 173.333333, f = 2080, B = "US_I-9", b = [
395
+ }, g = 35568, G = 40, f = 173.333333, B = 2080, b = "US_I-9", H = [
386
396
  "AL",
387
397
  "AK",
388
398
  "AZ",
@@ -434,7 +444,7 @@ const t = {
434
444
  "WV",
435
445
  "WI",
436
446
  "WY"
437
- ], H = {
447
+ ], h = {
438
448
  OWNER: "owner",
439
449
  PRESIDENT: "president",
440
450
  VICE_PRESIDENT: "vice_president",
@@ -442,7 +452,7 @@ const t = {
442
452
  CORPORATE_OFFICER: "corporate_officer",
443
453
  PARTNER: "partner",
444
454
  MEMBER: "member"
445
- }, h = {
455
+ }, v = {
446
456
  HOUR: "Hour",
447
457
  WEEK: "Week",
448
458
  MONTH: "Month",
@@ -453,82 +463,83 @@ const t = {
453
463
  SMALL: "small",
454
464
  MEDIUM: "medium",
455
465
  LARGE: "large"
456
- }, v = {
466
+ }, V = {
457
467
  [O.BASE]: "0rem",
458
468
  [O.SMALL]: "40rem",
459
469
  [O.MEDIUM]: "48rem",
460
470
  [O.LARGE]: "64rem"
461
- }, V = {
471
+ }, W = {
462
472
  check: "Check",
463
473
  directDeposit: "Direct Deposit"
464
- }, W = {
474
+ }, K = {
465
475
  percentage: "Percentage",
466
476
  amount: "Amount"
467
477
  }, w = {
468
478
  BUSINESS: "Business"
469
- }, c = "Regular Hours", I = "Overtime", s = "Double overtime", K = [
470
- c,
479
+ }, s = "Regular Hours", I = "Overtime", P = "Double overtime", k = [
480
+ s,
471
481
  I,
472
- s
473
- ], k = "Bonus", x = "Paycheck Tips", X = "Correction Payment", q = "Commission", Q = "Cash Tips", L = "Reimbursement", P = "Owner's Draw", S = "Minimum Wage Adjustment", J = [
474
- P,
482
+ P
483
+ ], x = "Bonus", X = "Paycheck Tips", q = "Correction Payment", Q = "Commission", J = "Cash Tips", L = "Reimbursement", S = "Owner's Draw", l = "Minimum Wage Adjustment", j = [
475
484
  S,
485
+ l,
476
486
  L
477
- ], j = {
487
+ ], Z = {
478
488
  submitting: "submitting",
479
489
  submit_success: "submit_success",
480
490
  processing_failed: "processing_failed"
481
- }, Z = [
491
+ }, $ = [
482
492
  "fast_ach_threshold_exceeded",
483
493
  "needs_earned_access_for_fast_ach"
484
- ], $ = ["AK", "CA", "MN", "NV", "OR", "WA"];
494
+ ], z = ["AK", "CA", "MN", "NV", "OR", "WA"];
485
495
  export {
486
496
  O as BREAKPOINTS,
487
- v as BREAKPOINTS_VALUES,
488
- k as COMPENSATION_NAME_BONUS,
489
- Q as COMPENSATION_NAME_CASH_TIPS,
490
- q as COMPENSATION_NAME_COMMISSION,
491
- X as COMPENSATION_NAME_CORRECTION_PAYMENT,
492
- s as COMPENSATION_NAME_DOUBLE_OVERTIME,
497
+ V as BREAKPOINTS_VALUES,
498
+ x as COMPENSATION_NAME_BONUS,
499
+ J as COMPENSATION_NAME_CASH_TIPS,
500
+ Q as COMPENSATION_NAME_COMMISSION,
501
+ q as COMPENSATION_NAME_CORRECTION_PAYMENT,
502
+ P as COMPENSATION_NAME_DOUBLE_OVERTIME,
493
503
  I as COMPENSATION_NAME_OVERTIME,
494
- x as COMPENSATION_NAME_PAYCHECK_TIPS,
495
- c as COMPENSATION_NAME_REGULAR_HOURS,
504
+ X as COMPENSATION_NAME_PAYCHECK_TIPS,
505
+ s as COMPENSATION_NAME_REGULAR_HOURS,
496
506
  L as COMPENSATION_NAME_REIMBURSEMENT,
497
507
  w as CONTRACTOR_TYPE,
498
508
  _ as ContractorOnboardingStatus,
499
- y as ContractorSelfOnboardingStatuses,
500
- J as EXCLUDED_ADDITIONAL_EARNINGS,
509
+ U as ContractorSelfOnboardingStatuses,
510
+ j as EXCLUDED_ADDITIONAL_EARNINGS,
501
511
  A as EmployeeOnboardingStatus,
502
512
  Y as EmployeeSelfOnboardingStatuses,
503
- F as FLSA_OVERTIME_SALARY_LIMIT,
504
- U as FlsaStatus,
505
- K as HOURS_COMPENSATION_NAMES,
506
- f as HOURS_PER_PAY_PERIOD_ANNUALLY,
507
- G as HOURS_PER_PAY_PERIOD_MONTHLY,
508
- g as HOURS_PER_PAY_PERIOD_WEEKLY,
509
- B as I9_FORM_NAME,
510
- V as PAYMENT_METHODS,
511
- j as PAYROLL_PROCESSING_STATUS,
512
- Z as PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,
513
- h as PAY_PERIODS,
514
- H as SIGNATORY_TITLES,
515
- W as SPLIT_BY,
516
- b as STATES_ABBR,
517
- $ as TIP_CREDITS_UNSUPPORTED_STATES,
513
+ g as FLSA_OVERTIME_SALARY_LIMIT,
514
+ u as FlsaStatus,
515
+ k as HOURS_COMPENSATION_NAMES,
516
+ B as HOURS_PER_PAY_PERIOD_ANNUALLY,
517
+ f as HOURS_PER_PAY_PERIOD_MONTHLY,
518
+ G as HOURS_PER_PAY_PERIOD_WEEKLY,
519
+ b as I9_FORM_NAME,
520
+ W as PAYMENT_METHODS,
521
+ Z as PAYROLL_PROCESSING_STATUS,
522
+ $ as PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,
523
+ v as PAY_PERIODS,
524
+ h as SIGNATORY_TITLES,
525
+ K as SPLIT_BY,
526
+ H as STATES_ABBR,
527
+ z as TIP_CREDITS_UNSUPPORTED_STATES,
518
528
  o as companyEvents,
519
- u as compensationTypeLabels,
520
- p as componentEvents,
529
+ F as compensationTypeLabels,
530
+ y as componentEvents,
521
531
  T as contractorEvents,
522
532
  a as contractorHistoricalPaymentEvents,
523
533
  n as contractorPaymentEvents,
524
534
  t as employeeEvents,
525
535
  r as informationRequestEvents,
526
- d as offCycleEvents,
536
+ C as offCycleEvents,
527
537
  R as payScheduleEvents,
528
538
  D as payrollWireEvents,
539
+ d as printChecksEvents,
529
540
  m as recoveryCasesEvents,
530
541
  M as runPayrollEvents,
531
542
  N as terminationEvents,
532
- C as timeOffEvents
543
+ c as timeOffEvents
533
544
  };
534
545
  //# sourceMappingURL=constants.js.map