@remoteoss/remote-flows 0.4.0-alpha.2 → 0.4.0-alpha.4
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.
- package/dist/chunk-2SDJ4PZ5.js +2 -0
- package/dist/chunk-2SDJ4PZ5.js.map +1 -0
- package/dist/chunk-2URGWNSM.js +2 -0
- package/dist/chunk-2URGWNSM.js.map +1 -0
- package/dist/chunk-2Y22JKVE.js +2 -0
- package/dist/{chunk-QOMUXX6W.js → chunk-3PH5E6CZ.js} +2 -2
- package/dist/chunk-76JJOA3E.js +2 -0
- package/dist/{chunk-I6NVZI7W.js.map → chunk-76JJOA3E.js.map} +1 -1
- package/dist/{chunk-P2COURSU.js → chunk-7CP4PNU4.js} +2 -2
- package/dist/chunk-A36XQBXQ.js +2 -0
- package/dist/chunk-A36XQBXQ.js.map +1 -0
- package/dist/chunk-CXIHR6DZ.js +2 -0
- package/dist/chunk-CXIHR6DZ.js.map +1 -0
- package/dist/{chunk-5CJPGBXJ.js → chunk-FNTHWOZU.js} +2 -2
- package/dist/chunk-G7BISHWK.js +2 -0
- package/dist/chunk-G7BISHWK.js.map +1 -0
- package/dist/{chunk-GR6EY46K.js → chunk-GLCG6IVW.js} +2 -2
- package/dist/chunk-GMU3QGAR.js +2 -0
- package/dist/chunk-GMU3QGAR.js.map +1 -0
- package/dist/{chunk-CRHTUOZT.js → chunk-JT5XHQEY.js} +2 -2
- package/dist/{chunk-U25ZZ3LM.js → chunk-KGUR7YMA.js} +2 -2
- package/dist/{chunk-5OXN2O6C.js → chunk-MI3HDT5D.js} +2 -2
- package/dist/chunk-NNF342EY.js +2 -0
- package/dist/chunk-NNF342EY.js.map +1 -0
- package/dist/{chunk-KQ6TGZJS.js → chunk-NVMRRBRE.js} +2 -2
- package/dist/chunk-NVMRRBRE.js.map +1 -0
- package/dist/{chunk-7OMSCFTM.js → chunk-OXOB35EA.js} +2 -2
- package/dist/{chunk-UIAP5KT2.js → chunk-PBUHBIVK.js} +2 -2
- package/dist/chunk-PBWLAISE.js +2 -0
- package/dist/chunk-PBWLAISE.js.map +1 -0
- package/dist/{chunk-GQD6NNYO.js → chunk-PX72OIDO.js} +2 -2
- package/dist/{chunk-SMHHCUP4.js → chunk-PZ4HXIHQ.js} +2 -2
- package/dist/{chunk-LMDX5IAX.js → chunk-QOXOAPGX.js} +2 -2
- package/dist/{chunk-FZ2HS6G7.js → chunk-S4XU4SE7.js} +1 -1
- package/dist/chunk-S4XU4SE7.js.map +1 -0
- package/dist/{chunk-JFOOILST.js → chunk-T3PTQ4QM.js} +2 -2
- package/dist/{chunk-S4FKLPBB.js → chunk-TICIER55.js} +2 -2
- package/dist/chunk-U3I3TJKB.js +2 -0
- package/dist/chunk-U3I3TJKB.js.map +1 -0
- package/dist/{chunk-EDNELJVE.js → chunk-VT2PJJC7.js} +2 -2
- package/dist/chunk-VT2PJJC7.js.map +1 -0
- package/dist/{chunk-D3SD6MMV.js → chunk-WEIRXEXU.js} +2 -2
- package/dist/chunk-WVJDCDGZ.js +2 -0
- package/dist/chunk-WVJDCDGZ.js.map +1 -0
- package/dist/{chunk-Y477IGTZ.js → chunk-WZ5AXHQT.js} +2 -2
- package/dist/{chunk-TPPGI73P.js → chunk-XOUAD7MS.js} +2 -2
- package/dist/chunk-XZ4CTDOS.js +2 -0
- package/dist/chunk-XZ4CTDOS.js.map +1 -0
- package/dist/{chunk-LM5GAAUB.js → chunk-YIBRPAR3.js} +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
- package/dist/flows/ContractAmendment/context.d.ts +2 -2
- package/dist/flows/ContractAmendment/hooks.d.ts +2 -2
- package/dist/flows/ContractAmendment/hooks.js +1 -1
- package/dist/flows/ContractAmendment/index.d.ts +1 -1
- package/dist/flows/ContractAmendment/index.js +1 -1
- package/dist/flows/ContractAmendment/types.d.ts +1 -1
- package/dist/flows/ContractAmendment/utils.d.ts +2 -2
- package/dist/flows/ContractAmendment/utils.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +1 -1
- package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +1 -1
- package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
- package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
- package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +1 -1
- package/dist/flows/CostCalculator/context.d.ts +1 -1
- package/dist/flows/CostCalculator/hooks.d.ts +1 -1
- package/dist/flows/CostCalculator/hooks.js +1 -1
- package/dist/flows/CostCalculator/index.d.ts +1 -1
- package/dist/flows/CostCalculator/index.js +1 -1
- package/dist/flows/CostCalculator/types.d.ts +1 -1
- package/dist/flows/CostCalculator/utils.d.ts +1 -1
- package/dist/flows/CostCalculator/utils.js +1 -1
- package/dist/flows/Onboarding/BasicInformationStep.d.ts +1 -1
- package/dist/flows/Onboarding/BasicInformationStep.js +1 -1
- package/dist/flows/Onboarding/BenefitsStep.d.ts +3 -2
- package/dist/flows/Onboarding/BenefitsStep.js +1 -1
- package/dist/flows/Onboarding/ContractDetailsStep.d.ts +1 -1
- package/dist/flows/Onboarding/ContractDetailsStep.js +1 -1
- package/dist/flows/Onboarding/OnboardingFlow.d.ts +9 -4
- package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
- package/dist/flows/Onboarding/OnboardingForm.d.ts +3 -2
- package/dist/flows/Onboarding/OnboardingForm.js +1 -1
- package/dist/flows/Onboarding/OnboardingInvite.d.ts +1 -1
- package/dist/flows/Onboarding/OnboardingInvite.js +1 -1
- package/dist/flows/Onboarding/SelectCountryStep.d.ts +15 -0
- package/dist/flows/Onboarding/SelectCountryStep.js +2 -0
- package/dist/flows/Onboarding/SelectCountryStep.js.map +1 -0
- package/dist/flows/Onboarding/api.d.ts +114 -0
- package/dist/flows/Onboarding/api.js +2 -0
- package/dist/flows/Onboarding/api.js.map +1 -0
- package/dist/flows/Onboarding/context.d.ts +17 -5
- package/dist/flows/Onboarding/hooks.d.ts +38 -23
- package/dist/flows/Onboarding/hooks.js +1 -1
- package/dist/flows/Onboarding/index.d.ts +6 -4
- package/dist/flows/Onboarding/index.js +1 -1
- package/dist/flows/Onboarding/json-schemas/selectCountryStep.d.ts +24 -0
- package/dist/flows/Onboarding/json-schemas/selectCountryStep.js +2 -0
- package/dist/flows/Onboarding/json-schemas/selectCountryStep.js.map +1 -0
- package/dist/flows/Onboarding/types.d.ts +9 -3
- package/dist/flows/Onboarding/utils.d.ts +11 -3
- package/dist/flows/Onboarding/utils.js +1 -1
- package/dist/flows/Termination/AdditionalDetailsForm.d.ts +1 -1
- package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
- package/dist/flows/Termination/EmployeeComunicationForm.d.ts +1 -1
- package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
- package/dist/flows/Termination/PaidTimeOffForm.d.ts +1 -1
- package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
- package/dist/flows/Termination/TerminationDetailsForm.d.ts +1 -1
- package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
- package/dist/flows/Termination/TerminationFlow.d.ts +2 -1
- package/dist/flows/Termination/TerminationFlow.js +1 -1
- package/dist/flows/Termination/TerminationForm.d.ts +1 -1
- package/dist/flows/Termination/TerminationForm.js +1 -1
- package/dist/flows/Termination/TimeOff.d.ts +1 -1
- package/dist/flows/Termination/TimeOff.js +1 -1
- package/dist/flows/Termination/context.d.ts +3 -2
- package/dist/flows/Termination/hooks.d.ts +3 -2
- package/dist/flows/Termination/hooks.js +1 -1
- package/dist/flows/Termination/index.d.ts +2 -1
- package/dist/flows/Termination/index.js +1 -1
- package/dist/flows/Termination/json-schemas/schema.js +1 -1
- package/dist/flows/Termination/types.d.ts +1 -1
- package/dist/flows/Termination/utils.d.ts +1 -1
- package/dist/flows/Termination/utils.js +1 -1
- package/dist/flows/types.d.ts +1 -1
- package/dist/flows/useStepState.d.ts +10 -4
- package/dist/flows/useStepState.js +1 -1
- package/dist/flows/utils.d.ts +3 -11
- package/dist/flows/utils.js +1 -1
- package/dist/index.d.ts +9 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{remoteFlows-CswYencu.d.ts → remoteFlows-DN0q7MPW.d.ts} +1 -2
- package/dist/types-pzyQqNc8.d.ts +3 -0
- package/dist/{types.gen-D5alruJJ.d.ts → types.gen-CAOUvsW-.d.ts} +268 -2
- package/package.json +1 -1
- package/dist/chunk-2PXGLWCY.js +0 -2
- package/dist/chunk-2PXGLWCY.js.map +0 -1
- package/dist/chunk-2YWRQJ7P.js +0 -2
- package/dist/chunk-2YWRQJ7P.js.map +0 -1
- package/dist/chunk-36UPHOJS.js +0 -2
- package/dist/chunk-36UPHOJS.js.map +0 -1
- package/dist/chunk-DHRIURRT.js +0 -2
- package/dist/chunk-DHRIURRT.js.map +0 -1
- package/dist/chunk-EDNELJVE.js.map +0 -1
- package/dist/chunk-FZ2HS6G7.js.map +0 -1
- package/dist/chunk-HDQGO453.js +0 -2
- package/dist/chunk-HDQGO453.js.map +0 -1
- package/dist/chunk-HSW5HMHH.js +0 -2
- package/dist/chunk-I6NVZI7W.js +0 -2
- package/dist/chunk-KQ6TGZJS.js.map +0 -1
- package/dist/chunk-LCZQVL4U.js +0 -2
- package/dist/chunk-LCZQVL4U.js.map +0 -1
- package/dist/chunk-PKX5K2UY.js +0 -2
- package/dist/chunk-PKX5K2UY.js.map +0 -1
- package/dist/chunk-S56EWAS4.js +0 -2
- package/dist/chunk-S56EWAS4.js.map +0 -1
- /package/dist/{chunk-HSW5HMHH.js.map → chunk-2Y22JKVE.js.map} +0 -0
- /package/dist/{chunk-QOMUXX6W.js.map → chunk-3PH5E6CZ.js.map} +0 -0
- /package/dist/{chunk-P2COURSU.js.map → chunk-7CP4PNU4.js.map} +0 -0
- /package/dist/{chunk-5CJPGBXJ.js.map → chunk-FNTHWOZU.js.map} +0 -0
- /package/dist/{chunk-GR6EY46K.js.map → chunk-GLCG6IVW.js.map} +0 -0
- /package/dist/{chunk-CRHTUOZT.js.map → chunk-JT5XHQEY.js.map} +0 -0
- /package/dist/{chunk-U25ZZ3LM.js.map → chunk-KGUR7YMA.js.map} +0 -0
- /package/dist/{chunk-5OXN2O6C.js.map → chunk-MI3HDT5D.js.map} +0 -0
- /package/dist/{chunk-7OMSCFTM.js.map → chunk-OXOB35EA.js.map} +0 -0
- /package/dist/{chunk-UIAP5KT2.js.map → chunk-PBUHBIVK.js.map} +0 -0
- /package/dist/{chunk-GQD6NNYO.js.map → chunk-PX72OIDO.js.map} +0 -0
- /package/dist/{chunk-SMHHCUP4.js.map → chunk-PZ4HXIHQ.js.map} +0 -0
- /package/dist/{chunk-LMDX5IAX.js.map → chunk-QOXOAPGX.js.map} +0 -0
- /package/dist/{chunk-JFOOILST.js.map → chunk-T3PTQ4QM.js.map} +0 -0
- /package/dist/{chunk-S4FKLPBB.js.map → chunk-TICIER55.js.map} +0 -0
- /package/dist/{chunk-D3SD6MMV.js.map → chunk-WEIRXEXU.js.map} +0 -0
- /package/dist/{chunk-Y477IGTZ.js.map → chunk-WZ5AXHQT.js.map} +0 -0
- /package/dist/{chunk-TPPGI73P.js.map → chunk-XOUAD7MS.js.map} +0 -0
- /package/dist/{chunk-LM5GAAUB.js.map → chunk-YIBRPAR3.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/JSONSchemaForm.tsx","../src/components/ui/checkbox.tsx","../src/components/form/fields/CheckBoxField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/ui/file-uploader.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/TextField.tsx","../src/components/ui/input.tsx","../src/components/ui/radio-group.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/ui/select.tsx","../src/components/form/fields/CountryField.tsx","../src/components/ui/multi-select.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/ui/textarea.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/fieldsMapping.tsx","../src/components/ui/alert.tsx","../src/components/form/Statement.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Fields } from '@remoteoss/json-schema-form';\nimport React, { Fragment } from 'react';\n\nimport { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport { Statement, StatementProps } from '@/src/components/form/Statement';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype JSONSchemaFormFieldsProps = {\n fields: Fields;\n components?: Components;\n};\n\nfunction checkFieldHasForcedValue(field: any) {\n // A field to be considered \"forced value\" must:\n return (\n field.const !== undefined && // Only accepts a specific value\n field.const === field.default && // It can be prefilled, meaning it's not critical\n field.inputType !== 'checkbox' && // Because checkbox must always be visible\n field.inputType !== 'hidden' // Because hidden inputs shouldn't be visible\n );\n}\n\nexport const JSONSchemaFormFields = ({\n fields,\n components,\n}: JSONSchemaFormFieldsProps) => {\n if (!fields || fields.length === 0) return null;\n\n return (\n <>\n {fields.map((field) => {\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n if (checkFieldHasForcedValue(field)) {\n return (\n <ForcedValueField\n key={field.name as string}\n name={field.name as string}\n description={field.description as string}\n value={field.const as string}\n statement={field.statement as any}\n />\n );\n }\n\n const FieldComponent = fieldsMap[field.inputType as SupportedTypes];\n\n if (field.inputType === 'fieldset') {\n return <FieldComponent {...field} components={components} />;\n }\n\n return FieldComponent ? (\n <Fragment key={field.name as string}>\n <FieldComponent\n {...field}\n component={\n components && components[field.inputType as SupportedTypes]\n }\n />\n {field.statement ? (\n <Statement {...(field.statement as StatementProps)} />\n ) : null}\n </Fragment>\n ) : (\n <p className=\"error\">\n Field type {field.inputType as string} not supported\n </p>\n );\n })}\n </>\n );\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn('flex items-center justify-center text-current')}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Checkbox } from '@/src/components/ui/checkbox';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { CheckedState } from '@radix-ui/react-checkbox';\nimport * as React from 'react';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\n\nexport type CheckBoxFieldProps = JSFField & {\n onChange?: (checked: any, optionId?: string) => void;\n component?: Components['checkbox'];\n};\n\nexport function CheckBoxField({\n name,\n defaultValue,\n description,\n label,\n onChange,\n multiple,\n options,\n component,\n ...rest\n}: CheckBoxFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const handleCheckboxChange = (\n optionId: string,\n checked: boolean,\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const currentValues = field.value ? [...field.value] : [];\n\n if (checked) {\n // Add the value if it's not already in the array\n if (!currentValues.includes(optionId)) {\n field.onChange([...currentValues, optionId]);\n }\n } else {\n // Remove the value from the array\n field.onChange(currentValues.filter((value) => value !== optionId));\n }\n };\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const CustomCheckboxField = component || components?.checkbox;\n if (CustomCheckboxField) {\n const customCheckboxFieldProps = {\n name,\n description,\n label,\n defaultValue,\n multiple,\n options,\n ...rest,\n };\n return (\n <CustomCheckboxField\n field={{\n ...field,\n onChange: (evt: any) => {\n if (multiple) {\n const { checked, value } = evt.target;\n handleCheckboxChange(value, checked, field);\n onChange?.(checked);\n return;\n }\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customCheckboxFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={cn(`RemoteFlows__CheckBoxField__Item__${name}`)}\n >\n <FormControl>\n <>\n {options && multiple ? <FormLabel>{label}</FormLabel> : null}\n\n {options && multiple ? (\n options.map((option) => (\n <div key={option.value} className=\"flex space-x-2\">\n <Checkbox\n id={option.value}\n onCheckedChange={(checked: CheckedState) => {\n handleCheckboxChange(\n option.value,\n checked === true,\n field,\n );\n onChange?.(checked, option.value);\n }}\n checked={field.value?.includes(option.value)}\n className=\"RemoteFlows__CheckBox__Input\"\n />\n <FormLabel\n htmlFor={option.value}\n className=\"mb-0 RemoteFlows__CheckBox__Label\"\n >\n {option.label}\n </FormLabel>\n </div>\n ))\n ) : (\n <div className=\"flex space-x-2\">\n <Checkbox\n id={name}\n onCheckedChange={(event: CheckedState) => {\n field.onChange(event);\n onChange?.(event);\n }}\n checked={field.value}\n className=\"RemoteFlows__CheckBox__Input\"\n />\n <FormLabel\n htmlFor={name}\n className=\"mb-0 RemoteFlows__CheckBox__Label\"\n >\n {label}\n </FormLabel>\n </div>\n )}\n </>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Calendar } from '@/src/components/ui/calendar';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/src/components/ui/popover';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { PopoverClose } from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: any) => void;\n component?: Components['date'];\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n onChange,\n component,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomDatePickerField = component || components?.date;\n\n if (CustomDatePickerField) {\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n minDate,\n onChange,\n ...rest,\n };\n return (\n <CustomDatePickerField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={`flex flex-col RemoteFlows__DatePickerField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__DatePickerField__Label\">\n {label}\n </FormLabel>\n <Popover>\n <PopoverTrigger asChild>\n <FormControl>\n <div>\n <Button\n type=\"button\"\n variant={'outline'}\n className={cn(\n 'w-full pl-3 text-left font-normal',\n !field.value && 'text-muted-foreground',\n )}\n data-testid={`date-picker-button-${name}`}\n >\n {field.value && <>{format(field.value, 'yyyy-MM-dd')}</>}\n <CalendarIcon className=\"ml-auto h-4 w-4 opacity-50\" />\n </Button>\n </div>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent\n className={`w-auto p-0 RemoteFlows__DatepickerField__PopoverContent`}\n align=\"start\"\n >\n <Calendar\n mode=\"single\"\n className=\"RemoteFlows__DatepickerField__Calendar\"\n selected={field.value ? new Date(field.value) : undefined}\n onSelect={(date) => {\n field.onChange(date ? format(date, 'yyyy-MM-dd') : null);\n onChange?.(date);\n }}\n defaultMonth={minDate ? new Date(minDate) : undefined}\n components={{\n DayContent: (props) => {\n return (\n <PopoverClose>{props.date.getDate()}</PopoverClose>\n );\n },\n }}\n {...(minDate && {\n disabled: (date: Date) => date < new Date(minDate),\n })}\n />\n </PopoverContent>\n </Popover>\n {description ? (\n <FormDescription>{description}</FormDescription>\n ) : null}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__DatePickerField__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '@/src/lib/utils';\nimport { buttonVariants } from '@/src/components/ui/button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col sm:flex-row gap-2',\n month: 'flex flex-col gap-4',\n caption: 'flex justify-center pt-1 relative items-center w-full',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center gap-1',\n nav_button: cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n ),\n nav_button_previous: 'absolute left-1',\n nav_button_next: 'absolute right-1',\n table: 'w-full border-collapse space-x-1',\n head_row: 'flex',\n head_cell:\n 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',\n row: 'flex w-full mt-2',\n cell: cn(\n 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n ),\n day: cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-8 p-0 font-normal aria-selected:opacity-100',\n ),\n day_range_start:\n 'day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_range_end:\n 'day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_selected:\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n day_today: 'bg-accent text-accent-foreground',\n day_outside:\n 'day-outside text-muted-foreground aria-selected:text-muted-foreground',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle:\n 'aria-selected:bg-accent aria-selected:text-accent-foreground',\n day_hidden: 'invisible',\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn('size-4', className)} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn('size-4', className)} {...props} />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { cn } from '@/src/lib/utils';\nimport * as React from 'react';\nimport { SupportedTypes } from './types';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n components: Components;\n};\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n components,\n}: FieldSetProps) {\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend className=\"text-sm font-semibold px-2\">{label}</legend>\n {description ? (\n <div\n className=\"mb-5 RemoteFlows__FieldSetField__Description\"\n dangerouslySetInnerHTML={{ __html: description }}\n />\n ) : null}\n <div className=\"grid gap-4\">\n {fields.map((field) => {\n const FieldComponent = fieldsMap[field.type];\n\n // @ts-expect-error - TODO: use types from json-schema-form v1\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n return (\n <FieldComponent\n {...field}\n key={field.name}\n name={`${name}.${field.name}`}\n component={components?.[field.type]}\n />\n );\n })}\n </div>\n </fieldset>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FileUploader } from '../../ui/file-uploader';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\nconst toBase64 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n};\n\nconst convertFilesToBase64 = async (\n event: React.ChangeEvent<HTMLInputElement>,\n) => {\n const files = event.target.files ? Array.from(event.target.files) : [];\n\n const base64Files = await Promise.all(\n files.map(async (file) => {\n const base64 = await toBase64(file);\n return {\n name: file.name,\n content: base64.split(',')[1],\n };\n }),\n );\n return base64Files;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: any) => void;\n multiple?: boolean;\n component?: Components['file'];\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n component,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomFileUploadField = component || components?.file;\n if (CustomFileUploadField) {\n const customFileUploadFieldProps = {\n name,\n description,\n label,\n multiple,\n ...rest,\n };\n return (\n <CustomFileUploadField\n field={{\n ...field,\n value: null,\n onChange: async (value: any) => {\n const files = await convertFilesToBase64(value);\n field.onChange(files);\n onChange?.(files);\n },\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__FileUpload__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__FileUpload__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <FileUploader\n onChange={async (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const files = await convertFilesToBase64(event);\n field.onChange(files);\n onChange?.(files);\n }}\n multiple={multiple}\n className={cn('RemoteFlows__FileUpload__Input')}\n />\n </FormControl>\n {description && (\n <div className=\"flex items-center justify-between\">\n <FormDescription className=\"RemoteFlows__FileUpload__Description\">\n {description}\n </FormDescription>\n </div>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__FileUpload__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import React, { useState, useRef } from 'react';\nimport { Button } from '@/src/components/ui/button';\nimport { Upload, X } from 'lucide-react';\nimport { cn } from '@/src/lib/utils';\n\ntype FileUploaderProps = {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n className?: string;\n multiple?: boolean;\n};\n\nexport function FileUploader({\n onChange,\n className,\n multiple,\n}: FileUploaderProps) {\n const [files, setFiles] = useState<File[]>([]);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const newFiles = Array.from(e.target.files);\n\n setFiles(newFiles);\n onChange(e);\n }\n };\n\n const onRemoveFile = (file: File) => {\n setFiles((prevFiles) => prevFiles.filter((f) => f !== file));\n };\n\n return (\n <div className={cn('flex flex-col items-start gap-4', className)}>\n <input\n type=\"file\"\n ref={inputRef}\n onChange={handleChange}\n className=\"hidden\"\n aria-label=\"File upload\"\n multiple={multiple}\n />\n <Button type=\"button\" onClick={handleClick} className=\"gap-2\">\n <Upload className=\"h-4 w-4\" />\n Choose File\n </Button>\n {files.length === 0 && (\n <div className=\"text-sm\">\n {!multiple ? (\n <span className=\"font-medium\">No file selected.</span>\n ) : (\n <span className=\"font-medium\">\n No files selected. You can select multiple files\n </span>\n )}\n </div>\n )}\n {files.length > 0 &&\n files.map((file, index) => (\n <div key={index} className=\"text-sm flex items-center gap-2\">\n Selected file: <span className=\"font-medium\">{file.name}</span> (\n {Math.round(file.size / 1024)} KB)\n <Button variant=\"ghost\" onClick={() => onRemoveFile(file)}>\n <X />\n </Button>\n </div>\n ))}\n </div>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextField, TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype NumberFieldProps = TextFieldProps & {\n component?: Components['number'];\n};\n\nexport function NumberField(props: NumberFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const CustomNumberField = props.component || components?.number;\n\n if (CustomNumberField) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <CustomNumberField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={props}\n />\n );\n }}\n />\n );\n }\n\n return (\n <TextField {...props} type=\"text\" inputMode=\"decimal\" pattern=\"^[0-9.]*$\" />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { Input } from '../../ui/input';\n\nexport type TextFieldProps = React.ComponentProps<'input'> &\n JSFField & {\n onChange?: (value: any) => void;\n component?: Components['text'];\n };\n\nexport function TextField({\n name,\n description,\n label,\n type,\n onChange,\n component,\n ...rest\n}: TextFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomTextField = component || components?.text;\n if (CustomTextField) {\n const customTextFieldProps = {\n name,\n description,\n label,\n type,\n onChange,\n ...rest,\n };\n return (\n <CustomTextField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__TextField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__TextField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <Input\n {...field}\n value={field.value ?? ''}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => {\n field.onChange(event);\n onChange?.(event);\n }}\n className=\"RemoteFlows__TextField__Input\"\n placeholder={label}\n />\n </FormControl>\n {description && (\n <FormDescription className=\"RemoteFlows__TextField__Description\">\n {description}\n </FormDescription>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__TextField__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'shadow-xs border-input file:text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-xl border bg-transparent px-4 py-7 text-sm transition-[color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-focused',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { CircleIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { RadioGroup, RadioGroupItem } from '@/src/components/ui/radio-group';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport * as React from 'react';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: any) => void;\n component?: Components['radio'];\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n component,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const CustomRadioGroupField = component || components?.radio;\n if (CustomRadioGroupField) {\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n ...rest,\n };\n return (\n <CustomRadioGroupField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n className={cn(\n 'space-y-3',\n `RemoteFlows__RadioGroupField__Item__${name}`,\n )}\n data-field={name}\n >\n <FormLabel>{label}</FormLabel>\n <FormControl>\n <RadioGroup\n aria-label={label || name}\n onValueChange={(value: string) => {\n field.onChange(value);\n onChange?.(value);\n }}\n value={field.value}\n className=\"flex flex-col space-y-3\"\n >\n {options?.map((option) => (\n <>\n <FormItem\n key={option.value}\n data-field={name}\n className=\"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item\"\n >\n <FormControl>\n <RadioGroupItem\n value={option.value}\n className=\"RemoteFlows__RadioField__Input\"\n />\n </FormControl>\n <div>\n <FormLabel className=\"font-normal mb-0 RemoteFlows__RadioField__Label\">\n {option.label}\n </FormLabel>\n {option.description && (\n <FormDescription className=\"mt-2\">\n {option.description}\n </FormDescription>\n )}\n </div>\n </FormItem>\n </>\n ))}\n </RadioGroup>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/src/components/ui/select';\nimport { useFormFields } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: any) => void;\n component?: Components['select'];\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomSelectField = component || components?.select;\n if (CustomSelectField) {\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n ...rest,\n };\n return (\n <CustomSelectField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__SelectField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__SelectField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <div className=\"relative\">\n <Select\n value={field.value || ''}\n onValueChange={(value: string) => {\n field.onChange(value);\n onChange?.(value);\n }}\n >\n <SelectTrigger\n className=\"RemoteFlows__SelectField__Trigger\"\n aria-invalid={Boolean(fieldState.error)}\n aria-label={label}\n >\n <span className=\"absolute\">\n <SelectValue placeholder={label} />\n </span>\n </SelectTrigger>\n <SelectContent className=\"RemoteFlows__SelectField__Content\">\n <SelectGroup className=\"RemoteFlows__SelectField__Group\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className=\"RemoteFlows__SelectField__SelectItem\"\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'focus-visible:border-focused',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild className=\"absolute right-4\">\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('px-2 py-1.5 text-sm font-medium', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useState } from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { MultiSelect } from '../../ui/multi-select';\n\ntype CountryFieldProps = JSFField & {\n options: Array<{ value: string; label: string }>;\n onChange?: (value: any) => void;\n $meta: {\n regions: Record<string, string[]>;\n subregions: Record<string, string[]>;\n };\n component?: Components['countries'];\n};\n\nexport function CountryField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n component,\n ...rest\n}: CountryFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const [selected, setSelected] = useState<any[]>([]);\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomSelectField = component || components?.countries;\n\n if (CustomSelectField) {\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n ...rest,\n };\n return (\n <CustomSelectField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }\n\n const countryOptions = [\n ...Object.entries($meta?.regions || {}).map(([key, value]) => ({\n value,\n label: key,\n category: 'Regions',\n })),\n ...Object.entries($meta?.subregions || {}).map(([key, value]) => ({\n value,\n label: key,\n category: 'Subregions',\n })),\n ...options.map((option) => ({\n ...option,\n value: option.value,\n label: option.label,\n category: 'Countries',\n })),\n ];\n\n const handleChange = (rawValues: any[]) => {\n const values = rawValues.map(({ value }) => value);\n field.onChange(values);\n onChange?.(values);\n setSelected(rawValues);\n };\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__CountryField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__CountryField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <MultiSelect\n options={countryOptions}\n selected={selected}\n onChange={handleChange}\n {...rest}\n />\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","import React, { Fragment, useState } from 'react';\nimport { Check, ChevronDownIcon, X } from 'lucide-react';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Badge } from '@/src/components/ui/badge';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from '@/src/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/src/components/ui/popover';\nimport { cn } from '@/src/lib/utils';\n\nexport type Option = {\n label: string;\n value: string | string[];\n category?: string;\n};\n\ninterface MultiSelectProps {\n options: Option[];\n selected: Option[];\n onChange: (options: Option[]) => void;\n placeholder?: string;\n}\n\nexport function MultiSelect({\n options,\n selected,\n onChange,\n placeholder,\n ...props\n}: MultiSelectProps) {\n const [open, setOpen] = useState(false);\n const handleUnselect = (option: Option) => {\n onChange(selected.filter((item) => item.value !== option.value));\n };\n\n const groupedOptions = options.reduce(\n (groups, option) => {\n const category = option.category || 'Uncategorized';\n if (!groups[category]) {\n groups[category] = [];\n }\n groups[category].push(option);\n return groups;\n },\n {} as Record<string, Option[]>,\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen} {...props}>\n <PopoverTrigger>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between font-normal\"\n type=\"button\"\n >\n <div className=\"flex gap-1 flex-wrap overflow-x-auto max-h-[2.5rem] items-center\">\n {selected.length > 0 ? (\n selected.map((option) => {\n return (\n <Badge\n key={option.label}\n variant=\"secondary\"\n className=\"mr-1 mb-1\"\n >\n {option.label}\n <div\n role=\"button\"\n tabIndex={0}\n aria-label={`remove ${option.label}`}\n className=\"ml-1 ring-offset-background rounded-full outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-pointer\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleUnselect(option);\n }\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleUnselect(option)}\n >\n <X className=\"h-3 w-3 text-muted-foreground hover:text-foreground\" />\n </div>\n </Badge>\n );\n })\n ) : (\n <span className=\"text-foreground\">{placeholder}</span>\n )}\n </div>\n <ChevronDownIcon className=\"size-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-full p-0\">\n <Command>\n <CommandList>\n <CommandEmpty>No item found.</CommandEmpty>\n {Object.entries(groupedOptions).map(\n ([category, categoryOptions], index) => (\n <Fragment key={category}>\n {index > 0 && <CommandSeparator />}\n <CommandGroup heading={category}>\n {categoryOptions.map((option) => {\n const isSelected = selected.some(\n (item) => item.value === option.value,\n );\n return (\n <CommandItem\n key={option.label}\n onSelect={() => {\n onChange(\n isSelected\n ? selected.filter(\n (item) => item.value !== option.value,\n )\n : [...selected, option],\n );\n }}\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n isSelected ? 'opacity-100' : 'opacity-0',\n )}\n />\n {option.label}\n </CommandItem>\n );\n })}\n </CommandGroup>\n </Fragment>\n ),\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/src/components/ui/dialog';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { Textarea } from '../../ui/textarea';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n component?: Components['textarea'];\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n component,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomTextAreaField = component || components?.textarea;\n if (CustomTextAreaField) {\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n ...rest,\n };\n return (\n <CustomTextAreaField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }\n\n const valueLength = field.value?.length ?? 0;\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__TextArea__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__TextArea__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <Textarea\n {...field}\n value={field.value ?? ''}\n onChange={(event: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(event);\n onChange?.(event);\n }}\n className={cn(\n fieldState.error &&\n 'border-red-500 focus-visible:ring-red-500',\n 'RemoteFlows__TextArea__Input',\n )}\n placeholder={label}\n />\n </FormControl>\n {(description || maxLength) && (\n <div className=\"flex items-center justify-between\">\n {description && (\n <FormDescription className=\"RemoteFlows__TextArea__Description\">\n {description}\n </FormDescription>\n )}\n {maxLength && (\n <span className=\"text-sm ml-auto RemoteFlows__TextArea__MaxLength\">\n {valueLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__TextArea__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<'textarea'>\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextField, TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype EmailFieldProps = TextFieldProps & {\n component?: Components['email'];\n};\n\nexport function EmailField(props: EmailFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const CustomEmailField = props.component || components?.email;\n\n if (CustomEmailField) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <CustomEmailField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={props}\n />\n );\n }}\n />\n );\n }\n\n return <TextField {...props} type=\"email\" />;\n}\n","import { CheckBoxField } from '@/src/components/form/fields/CheckBoxField';\nimport { DatePickerField } from '@/src/components/form/fields/DatePickerField';\nimport { FieldSetField } from '@/src/components/form/fields/FieldSetField';\nimport { FileUploadField } from '@/src/components/form/fields/FileUploadField';\nimport { NumberField } from '@/src/components/form/fields/NumberField';\nimport { RadioGroupField } from '@/src/components/form/fields/RadioGroupField';\nimport { SelectField } from '@/src/components/form/fields/SelectField';\nimport { CountryField } from '@/src/components/form/fields/CountryField';\nimport { TextAreaField } from '@/src/components/form/fields/TextAreaField';\nimport { TextField } from '@/src/components/form/fields/TextField';\nimport { EmailField } from '@/src/components/form/fields/EmailField';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const fieldsMap: Record<SupportedTypes, React.ComponentType<any>> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: NumberField,\n select: SelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n fieldset: FieldSetField,\n date: DatePickerField,\n textarea: TextAreaField,\n countries: CountryField,\n};\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n destructive:\n 'text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90',\n warning:\n 'bg-card bg-warning border-warning-border [&>svg]:text-current',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { Alert, AlertDescription, AlertTitle } from '@/src/components/ui/alert';\nimport { useFormFields } from '@/src/context';\nimport { AlertCircle } from 'lucide-react';\nimport React from 'react';\n\nexport type StatementProps = {\n title?: string;\n description: string;\n severity: 'warning' | 'error' | 'success' | 'info' | 'neutral' | 'time';\n};\n\nexport function Statement({ title, description, severity }: StatementProps) {\n const { components } = useFormFields();\n\n if (components?.statement) {\n const CustomStatement = components?.statement;\n return (\n <CustomStatement\n data={{\n title,\n description,\n severity,\n }}\n />\n );\n }\n\n return (\n <Alert variant=\"warning\">\n <AlertCircle className=\"h-4 w-4\" />\n {title && <AlertTitle>{title}</AlertTitle>}\n <AlertDescription>{description}</AlertDescription>\n </Alert>\n );\n}\n","import React, { useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\ntype ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement: {\n title: string;\n description: string;\n };\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n\n useEffect(() => {\n setValue(name, value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div>\n <p\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{ __html: statement.title }}\n />\n <p\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n dangerouslySetInnerHTML={{\n __html: statement.description || description,\n }}\n />\n </div>\n );\n}\n"],"mappings":"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","names":["React","Fragment","React","CheckboxPrimitive","Check","Checkbox","className","props","ref","cn","Check","React","useFormContext","CheckBoxField","name","defaultValue","description","label","onChange","multiple","options","component","rest","components","useFormFields","control","useFormContext","handleCheckboxChange","__name","optionId","checked","field","currentValues","value","FormField","fieldState","CustomCheckboxField","customCheckboxFieldProps","evt","FormItem","cn","FormControl","FormLabel","option","Checkbox","event","FormDescription","FormMessage","CalendarIcon","React","useFormContext","React","ChevronLeft","ChevronRight","DayPicker","Calendar","className","classNames","showOutsideDays","props","DayPicker","cn","buttonVariants","__name","ChevronLeft","ChevronRight","React","PopoverPrimitive","Popover","props","__name","PopoverTrigger","PopoverContent","className","align","sideOffset","cn","PopoverClose","format","DatePickerField","description","label","name","minDate","onChange","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomDatePickerField","customDatePickerFieldProps","__name","value","FormItem","FormLabel","Popover","PopoverTrigger","FormControl","Button","cn","format","CalendarIcon","PopoverContent","Calendar","date","props","PopoverClose","FormDescription","FormMessage","React","FieldSetField","label","name","fields","description","components","cn","field","FieldComponent","fieldsMap","__name","React","useFormContext","React","useState","useRef","Upload","X","FileUploader","onChange","className","multiple","files","setFiles","useState","inputRef","useRef","handleClick","__name","e","handleChange","newFiles","onRemoveFile","file","prevFiles","f","React","cn","Button","Upload","index","X","toBase64","__name","file","resolve","reject","reader","error","convertFilesToBase64","event","files","base64","FileUploadField","name","description","label","multiple","onChange","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomFileUploadField","customFileUploadFieldProps","value","FormItem","FormLabel","FormControl","FileUploader","cn","FormDescription","FormMessage","React","useFormContext","React","useFormContext","React","Input","className","type","props","cn","__name","TextField","name","description","label","type","onChange","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomTextField","customTextFieldProps","__name","value","FormItem","FormLabel","FormControl","Input","event","FormDescription","FormMessage","NumberField","props","components","useFormFields","control","useFormContext","CustomNumberField","React","FormField","field","fieldState","__name","value","TextField","RadioGroupPrimitive","CircleIcon","React","RadioGroup","className","props","cn","__name","RadioGroupItem","CircleIcon","React","useFormContext","RadioGroupField","name","defaultValue","description","label","options","onChange","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomRadioGroupField","customRadioGroupFieldProps","__name","value","FormItem","cn","FormLabel","FormControl","RadioGroup","option","RadioGroupItem","FormDescription","FormMessage","React","React","SelectPrimitive","CheckIcon","ChevronDownIcon","ChevronUpIcon","Select","props","__name","SelectGroup","SelectValue","SelectTrigger","className","children","cn","ChevronDownIcon","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectItem","className","children","props","cn","CheckIcon","__name","SelectScrollUpButton","className","props","cn","ChevronUpIcon","__name","SelectScrollDownButton","ChevronDownIcon","useFormContext","SelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","FormField","field","fieldState","CustomSelectField","customSelectFieldProps","__name","value","FormItem","FormLabel","FormControl","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","option","SelectItem","FormDescription","FormMessage","React","useState","useFormContext","React","Fragment","useState","Check","ChevronDownIcon","X","React","CommandPrimitive","SearchIcon","React","DialogPrimitive","XIcon","Command","className","props","CommandPrimitive","cn","__name","CommandList","className","props","CommandPrimitive","cn","__name","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","MultiSelect","options","selected","onChange","placeholder","props","open","setOpen","useState","handleUnselect","__name","option","item","groupedOptions","groups","category","React","Popover","PopoverTrigger","Button","Badge","e","X","ChevronDownIcon","PopoverContent","Command","CommandList","CommandEmpty","categoryOptions","index","Fragment","CommandSeparator","CommandGroup","isSelected","CommandItem","Check","cn","CountryField","label","name","options","defaultValue","description","onChange","$meta","component","rest","control","useFormContext","components","useFormFields","selected","setSelected","useState","React","FormField","field","fieldState","CustomSelectField","customSelectFieldProps","__name","value","countryOptions","key","option","handleChange","rawValues","values","FormItem","FormLabel","FormControl","MultiSelect","FormDescription","FormMessage","React","useFormContext","React","Textarea","className","props","ref","cn","TextAreaField","name","description","label","onChange","maxLength","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomTextAreaField","customTextAreaFieldProps","__name","value","valueLength","FormItem","FormLabel","FormControl","Textarea","event","cn","FormDescription","FormMessage","React","useFormContext","EmailField","props","components","useFormFields","control","useFormContext","CustomEmailField","React","FormField","field","fieldState","__name","value","TextField","fieldsMap","CheckBoxField","TextField","EmailField","NumberField","SelectField","RadioGroupField","FileUploadField","FieldSetField","DatePickerField","TextAreaField","CountryField","cva","React","alertVariants","cva","Alert","className","variant","props","cn","__name","AlertTitle","AlertDescription","AlertCircle","React","Statement","title","description","severity","components","useFormFields","CustomStatement","React","Alert","AlertCircle","AlertTitle","AlertDescription","__name","React","useEffect","useFormContext","ForcedValueField","name","value","description","statement","setValue","useFormContext","useEffect","React","__name","checkFieldHasForcedValue","field","__name","JSONSchemaFormFields","fields","components","React","ForcedValueField","FieldComponent","fieldsMap","Fragment","Statement"]}
|
package/dist/chunk-HSW5HMHH.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chunk-VX2UC3HG.js";import{a as i}from"./chunk-XSHHMBMT.js";import{a as o}from"./chunk-JODJFARP.js";import{a as m}from"./chunk-W5DG5WWJ.js";var p={employee_communication:o,termination_details:e,paid_time_off:m,additional_information:i};export{p as a};
|
|
2
|
-
//# sourceMappingURL=chunk-HSW5HMHH.js.map
|
package/dist/chunk-I6NVZI7W.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b as d}from"./chunk-WS3C3WIJ.js";import{a}from"./chunk-HDQGO453.js";import{b as t}from"./chunk-A4RX3KRZ.js";import{a as s}from"./chunk-IDSJI7KQ.js";import{a as m}from"./chunk-AYDF3IFZ.js";import e,{useEffect as l}from"react";import{useForm as b}from"react-hook-form";function w({defaultValues:f,onSubmit:c,components:p}){let{formId:F,onboardingBag:o}=d(),u=t(o.handleValidation),r=b({resolver:u,defaultValues:f,shouldUnregister:!1,mode:"onBlur"});return l(()=>{o.employmentId&&o?.checkFieldUpdates(r.getValues())},[]),l(()=>{let y=r?.watch(n=>{Object.keys(n).some(i=>n[i]!==o?.initialValues?.[i])&&o?.checkFieldUpdates(n)});return()=>y?.unsubscribe()},[]),e.createElement(s,{...r},e.createElement("form",{id:F,onSubmit:r.handleSubmit(c),className:"space-y-4 RemoteFlows__OnboardingForm"},e.createElement(a,{components:p,fields:o.fields})))}m(w,"OnboardingForm");export{w as a};
|
|
2
|
-
//# sourceMappingURL=chunk-I6NVZI7W.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/ContractAmendment/utils.ts"],"sourcesContent":["import { EmploymentShowResponse } from '@/src/client';\nimport { convertFromCents } from '@/src/components/form/utils';\nimport { Fields } from '@remoteoss/json-schema-form';\nimport { Step } from '../useStepState';\n\ntype StepKeys = 'form' | 'confirmation_form';\n\nexport const STEPS: Record<StepKeys, Step> = {\n form: { index: 0, name: 'form' },\n confirmation_form: { index: 1, name: 'confirmation_form' },\n} as const;\n\nexport function buildInitialValues(\n employment: EmploymentShowResponse | undefined,\n fields?: Fields | undefined,\n) {\n if (!employment) {\n return {};\n }\n\n if (!fields) {\n return {\n ...employment.data.employment?.contract_details,\n effective_date: '',\n reason_for_change: '',\n job_title: employment.data.employment?.job_title,\n additional_comments: '',\n annual_gross_salary: convertFromCents(\n employment.data.employment?.contract_details\n ?.annual_gross_salary as string,\n ),\n };\n }\n\n const allFields = fields.map((field) => field.name);\n const employmentFields = Object.keys(\n employment?.data?.employment?.contract_details || {},\n );\n const initialValues = allFields.reduce<Record<string, unknown>>(\n (initialValuesAcc, field) => {\n // @ts-expect-error error\n if (employmentFields.includes(field)) {\n const contractDetails = employment?.data?.employment\n ?.contract_details as Record<string, unknown>;\n // @ts-expect-error error\n initialValuesAcc[field] = contractDetails[field];\n }\n return initialValuesAcc;\n },\n {} as Record<string, unknown>,\n );\n\n return {\n ...initialValues,\n effective_date: '',\n reason_for_change: '',\n job_title: employment.data.employment?.job_title,\n additional_comments: '',\n annual_gross_salary: convertFromCents(\n employment.data.employment?.contract_details\n ?.annual_gross_salary as string,\n ),\n additional_comments_toggle: false,\n };\n}\n"],"mappings":"gFAOO,IAAMA,EAAgC,CAC3C,KAAM,CAAE,MAAO,EAAG,KAAM,MAAO,EAC/B,kBAAmB,CAAE,MAAO,EAAG,KAAM,mBAAoB,CAC3D,EAEO,SAASC,EACdC,EACAC,EACA,CACA,GAAI,CAACD,EACH,MAAO,CAAC,EAGV,GAAI,CAACC,EACH,MAAO,CACL,GAAGD,EAAW,KAAK,YAAY,iBAC/B,eAAgB,GAChB,kBAAmB,GACnB,UAAWA,EAAW,KAAK,YAAY,UACvC,oBAAqB,GACrB,oBAAqBE,EACnBF,EAAW,KAAK,YAAY,kBACxB,mBACN,CACF,EAGF,IAAMG,EAAYF,EAAO,IAAKG,GAAUA,EAAM,IAAI,EAC5CC,EAAmB,OAAO,KAC9BL,GAAY,MAAM,YAAY,kBAAoB,CAAC,CACrD,EAeA,MAAO,CACL,GAfoBG,EAAU,OAC9B,CAACG,EAAkBF,IAAU,CAE3B,GAAIC,EAAiB,SAASD,CAAK,EAAG,CACpC,IAAMG,EAAkBP,GAAY,MAAM,YACtC,iBAEJM,EAAiBF,CAAK,EAAIG,EAAgBH,CAAK,CACjD,CACA,OAAOE,CACT,EACA,CAAC,CACH,EAIE,eAAgB,GAChB,kBAAmB,GACnB,UAAWN,EAAW,KAAK,YAAY,UACvC,oBAAqB,GACrB,oBAAqBE,EACnBF,EAAW,KAAK,YAAY,kBACxB,mBACN,EACA,2BAA4B,EAC9B,CACF,CApDgBQ,EAAAT,EAAA","names":["STEPS","buildInitialValues","employment","fields","convertFromCents","allFields","field","employmentFields","initialValuesAcc","contractDetails","__name"]}
|
package/dist/chunk-LCZQVL4U.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as J}from"./chunk-2PXGLWCY.js";import{a as _}from"./chunk-JRQSZHUU.js";import{d as A,f as T,g as B,j as M,l as I,m as L,n as U,r as z}from"./chunk-DHRIURRT.js";import{a as R}from"./chunk-S56EWAS4.js";import{d as c}from"./chunk-WRDKLT4N.js";import{c as g,d as O}from"./chunk-N25EBX6R.js";import{a as t}from"./chunk-AYDF3IFZ.js";import{createHeadlessForm as x,modify as H}from"@remoteoss/json-schema-form";import{useMutation as F,useQuery as E}from"@tanstack/react-query";import{useState as ae}from"react";import oe from"lodash/mergeWith";var re={employment_basic_information:"basic_information",contract_details:"contract_details"},se=t(e=>{let{client:a}=c();return E({queryKey:["employment",e],retry:!1,enabled:!!e,queryFn:t(async()=>{let n=await L({client:a,headers:{Authorization:""},path:{employment_id:e}});if(n.error||!n.data)throw new Error("Failed to fetch employment data");return n},"queryFn")})},"useEmployment"),ie=t(e=>{let{client:a}=c();return E({queryKey:["benefit-offers",e],retry:!1,enabled:!!e,queryFn:t(async()=>T({client:a,headers:{Authorization:""},path:{employment_id:e}}).then(n=>{if(n.error||!n.data)throw new Error("Failed to fetch benefit offers data");return n}),"queryFn"),select:t(({data:n})=>n?.data?.reduce((s,r)=>({...s,[r.benefit_group.slug]:{value:r.benefit_tier?.slug??""}}),{}),"select")})},"useBenefitOffers"),Ce=t(()=>{let{client:e}=c();return F({mutationFn:t(a=>z({client:e,headers:{Authorization:""},path:a}),"mutationFn")})},"useEmploymentInvite"),me=t(({countryCode:e,form:a,fieldValues:n,options:s,employment:r})=>{let{client:i}=c(),m=s?.jsonSchemaVersion?.form_schema?.[a]?{json_schema_version:s.jsonSchemaVersion.form_schema[a]}:{};return E({queryKey:["onboarding-json-schema-form",e,a],retry:!1,queryFn:t(async()=>{let l=await M({client:i,headers:{Authorization:""},path:{country_code:e,form:a},query:{skip_benefits:!0,...m}});if(l.error||!l.data)throw new Error("Failed to fetch onboarding schema");return l},"queryFn"),select:t(({data:l})=>{let p=l?.data||{};if(s&&s.jsfModify){let{schema:V}=H(p,s.jsfModify);p=V}let y=Object.keys(n).length>0,h=re[a],o=r?.[h]||{};return x(p,{initialValues:y?n:o})},"select")})},"useJSONSchemaForm"),le=t((e,a,n)=>{let s=n?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:n.jsonSchemaVersion.benefit_offers_form_schema}:{},{client:r}=c();return E({queryKey:["benefit-offers-schema",e],retry:!1,enabled:!!e,queryFn:t(async()=>{let i=await I({client:r,headers:{Authorization:""},path:{employment_id:e},query:s});if(i.error||!i.data)throw new Error("Failed to fetch benefit offers schema");return i},"queryFn"),select:t(({data:i})=>{let m=i?.data?.schema||{};if(n&&n.jsfModify){let{schema:y}=H(m,n.jsfModify);m=y}let l=Object.keys(a).length>0;return x(m,{initialValues:l?a:{}})},"select")})},"useBenefitOffersSchema"),ce=t(()=>{let{client:e}=c();return F({mutationFn:t(a=>A({client:e,headers:{Authorization:""},body:a}),"mutationFn")})},"useCreateEmployment"),fe=t(()=>{let{client:e}=c();return F({mutationFn:t(({employmentId:a,...n})=>U({client:e,headers:{Authorization:""},body:n,path:{employment_id:a},query:{skip_benefits:!0}}),"mutationFn")})},"useUpdateEmployment"),ue=t(()=>{let{client:e}=c();return F({mutationFn:t(({employmentId:a,...n})=>B({client:e,headers:{Authorization:""},body:n,path:{employment_id:a}}),"mutationFn")})},"useUpdateBenefitsOffers"),qe=t(({employmentId:e,countryCode:a,type:n,options:s})=>{let[r,i]=ae(e),{data:m,isLoading:l}=se(e),{data:p,isLoading:y}=ie(r),{fieldValues:h,stepState:o,setFieldValues:V,previousStep:N,nextStep:K}=R(J),k=ce(),w=fe(),j=ue(),{mutateAsync:D}=_(k),{mutateAsync:C}=_(w),{mutateAsync:Q}=_(j),W={basic_information:"employment_basic_information",contract_details:"contract_details",benefits:null,review:null},{data:f,isLoading:G}=me({countryCode:a,form:W[o.currentStep.name]||"employment_basic_information",fieldValues:{...o.values?.[o.currentStep.name],...h},options:s,employment:m?.data?.data?.employment}),X={...o.values?.[o.currentStep.name],...h},Y=o.currentStep.name==="benefits"?oe({},p,X):{},{data:b,isLoading:Z}=le(r,h,s),P={basic_information:f?.fields||[],contract_details:f?.fields||[],benefits:b?.fields||[],review:[]},$={basic_information:O(P[o.currentStep.name],m?.data?.data.employment?.basic_information||{}),contract_details:O(P[o.currentStep.name],m?.data?.data.employment?.contract_details||{}),benefits:Y||{}};function q(u){return f?g(u,f?.fields,{isPartialValidation:!0}):{}}t(q,"parseFormValues");async function ee(u){let d=q(u);switch(o.currentStep.name){case"basic_information":{if(r)return C({employmentId:r,basic_information:d,pricing_plan_details:{frequency:"monthly"}});{let v={basic_information:d,type:n,country_code:a};try{let S=await D(v);return i(S.data?.data?.employment?.id),S}catch(S){throw console.error("Error creating onboarding:",S),S}}}case"contract_details":return C({employmentId:r,...{contract_details:d}});case"benefits":return Q({employmentId:r,...u})}}t(ee,"onSubmit");function te(){N()}t(te,"back");function ne(){K()}return t(ne,"next"),{employmentId:e,stepState:o,fields:P[o.currentStep.name],isLoading:G||l||Z||y,isSubmitting:k.isPending||w.isPending||j.isPending,initialValues:$,handleValidation:t(u=>{if(o.currentStep.name==="benefits"&&b){let d=g(u,b?.fields);return b?.handleValidation(d)}if(f){let d=g(u,f?.fields);return f?.handleValidation(d)}return null},"handleValidation"),checkFieldUpdates:V,parseFormValues:q,onSubmit:ee,back:te,next:ne}},"useOnboarding");export{Ce as a,qe as b};
|
|
2
|
-
//# sourceMappingURL=chunk-LCZQVL4U.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/hooks.ts"],"sourcesContent":["import {\n Employment,\n EmploymentCreateParams,\n EmploymentFullParams,\n getShowEmployment,\n getShowFormCountry,\n patchUpdateEmployment2,\n postCreateEmployment2,\n postInviteEmploymentInvitation,\n PostInviteEmploymentInvitationData,\n getShowSchema,\n putUpdateBenefitOffer,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n getIndexBenefitOffer,\n} from '@/src/client';\nimport { Client } from '@hey-api/client-fetch';\nimport {\n createHeadlessForm,\n Fields,\n modify,\n} from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\n\nimport { useClient } from '@/src/context';\nimport { useStepState } from '@/src/flows/useStepState';\nimport { STEPS } from '@/src/flows/Onboarding/utils';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { FieldValues } from 'react-hook-form';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { JSONSchemaFormType } from '@/src/flows/types';\nimport { useState } from 'react';\nimport mergeWith from 'lodash/mergeWith';\n\ntype OnboardingHookProps = OnboardingFlowParams;\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n contract_details: 'contract_details',\n};\n\nconst useEmployment = (employmentId: string | undefined) => {\n const { client } = useClient();\n\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n });\n};\n\nconst useBenefitOffers = (employmentId: string | undefined) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n return getIndexBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers data');\n }\n\n return response;\n });\n },\n select: ({ data }) =>\n data?.data?.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.benefit_group.slug]: {\n value: item.benefit_tier?.slug ?? '',\n },\n };\n },\n {} as Record<string, { value: string }>,\n ),\n });\n};\n/**\n * Use this hook to invite an employee to the onboarding flow\n * @returns\n */\nexport const useEmploymentInvite = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: (payload: PostInviteEmploymentInvitationData['path']) => {\n return postInviteEmploymentInvitation({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: payload,\n });\n },\n });\n};\n\n/**\n * Use this hook to get the JSON schema form for the onboarding flow\n * @param param0\n * @returns\n */\nconst useJSONSchemaForm = ({\n countryCode,\n form,\n fieldValues,\n options,\n employment,\n}: {\n countryCode: string;\n form: JSONSchemaFormType;\n fieldValues: FieldValues;\n options?: OnboardingHookProps['options'];\n employment?: Employment;\n}) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema?.[form]\n ? {\n json_schema_version: options.jsonSchemaVersion.form_schema[form],\n }\n : {};\n return useQuery({\n queryKey: ['onboarding-json-schema-form', countryCode, form],\n retry: false,\n queryFn: async () => {\n const response = await getShowFormCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n country_code: countryCode,\n form: form,\n },\n query: {\n skip_benefits: true,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch onboarding schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n let jsfSchema = data?.data || {};\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n const hasFieldValues = Object.keys(fieldValues).length > 0;\n const employmentField = jsonSchemaToEmployment[form] as keyof Employment;\n const employmentFieldData = (employment?.[employmentField] ||\n {}) as Record<string, unknown>;\n return createHeadlessForm(jsfSchema, {\n initialValues: hasFieldValues ? fieldValues : employmentFieldData,\n });\n },\n });\n};\n\nconst useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingHookProps['options'],\n) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowSchema({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n let jsfSchema = data?.data?.schema || {};\n\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n const hasFieldValues = Object.keys(fieldValues).length > 0;\n const result = createHeadlessForm(jsfSchema, {\n initialValues: hasFieldValues ? fieldValues : {},\n });\n return result;\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nconst useCreateEmployment = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postCreateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\nconst useUpdateEmployment = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentFullParams & { employmentId: string }) => {\n return patchUpdateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n skip_benefits: true,\n },\n });\n },\n });\n};\n\nconst useUpdateBenefitsOffers = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: UnifiedEmploymentUpsertBenefitOffersRequest & {\n employmentId: string;\n }) => {\n return putUpdateBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n });\n },\n });\n};\n\nexport const useOnboarding = ({\n employmentId,\n countryCode,\n type,\n options,\n}: OnboardingHookProps) => {\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const { data: employment, isLoading: isLoadingEmployment } =\n useEmployment(employmentId);\n\n const { data: benefitOffers, isLoading: isLoadingBenefitOffers } =\n useBenefitOffers(internalEmploymentId);\n const { fieldValues, stepState, setFieldValues, previousStep, nextStep } =\n useStepState<keyof typeof STEPS>(STEPS);\n\n const createEmploymentMutation = useCreateEmployment();\n const updateEmploymentMutation = useUpdateEmployment();\n const updateBenefitsOffersMutation = useUpdateBenefitsOffers();\n const { mutateAsync: createEmploymentMutationAsync } = mutationToPromise(\n createEmploymentMutation,\n );\n const { mutateAsync: updateEmploymentMutationAsync } = mutationToPromise(\n updateEmploymentMutation,\n );\n const { mutateAsync: updateBenefitsOffersMutationAsync } = mutationToPromise(\n updateBenefitsOffersMutation,\n );\n\n const form: Record<keyof typeof STEPS, JSONSchemaFormType | null> = {\n basic_information: 'employment_basic_information',\n contract_details: 'contract_details',\n benefits: null,\n review: null,\n };\n\n const { data: onboardingForm, isLoading: isLoadingBasicInformation } =\n useJSONSchemaForm({\n countryCode: countryCode,\n form:\n form[stepState.currentStep.name as keyof typeof STEPS] ||\n 'employment_basic_information',\n fieldValues: {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n },\n options: options,\n employment: employment?.data?.data?.employment,\n });\n\n const benefitsFormValues = {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n };\n\n const initialValuesBenefitOffers =\n stepState.currentStep.name === 'benefits'\n ? mergeWith({}, benefitOffers, benefitsFormValues)\n : {};\n\n const {\n data: benefitOffersSchema,\n isLoading: isLoadingBenefitsOffersSchema,\n } = useBenefitOffersSchema(\n internalEmploymentId as string,\n fieldValues,\n options,\n );\n\n const stepFields: Record<keyof typeof STEPS, Fields> = {\n basic_information: onboardingForm?.fields || [],\n contract_details: onboardingForm?.fields || [],\n benefits: benefitOffersSchema?.fields || [],\n review: [],\n };\n\n const initialValues = {\n basic_information: getInitialValues(\n stepFields[stepState.currentStep.name as keyof typeof stepFields],\n employment?.data?.data.employment?.basic_information || {},\n ),\n contract_details: getInitialValues(\n stepFields[stepState.currentStep.name as keyof typeof stepFields],\n employment?.data?.data.employment?.contract_details || {},\n ),\n benefits: initialValuesBenefitOffers || {},\n };\n\n function parseFormValues(values: FieldValues) {\n if (onboardingForm) {\n return parseJSFToValidate(values, onboardingForm?.fields, {\n isPartialValidation: true,\n });\n }\n return {};\n }\n\n async function onSubmit(values: FieldValues) {\n const parsedValues = parseFormValues(values);\n switch (stepState.currentStep.name) {\n case 'basic_information': {\n if (!internalEmploymentId) {\n const payload: EmploymentCreateParams = {\n basic_information: parsedValues,\n type: type,\n country_code: countryCode,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n setInternalEmploymentId(\n // @ts-expect-error the types from the response are not matching\n response.data?.data?.employment?.id,\n );\n return response;\n } catch (error) {\n console.error('Error creating onboarding:', error);\n throw error;\n }\n } else {\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n });\n }\n }\n\n case 'contract_details': {\n const payload: EmploymentFullParams = {\n contract_details: parsedValues,\n };\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId as string,\n ...payload,\n });\n }\n\n case 'benefits': {\n return updateBenefitsOffersMutationAsync({\n employmentId: internalEmploymentId as string,\n ...values,\n });\n }\n }\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name as keyof typeof stepFields],\n /**\n * Loading state indicating if the onboarding schema is being fetched\n */\n isLoading:\n isLoadingBasicInformation ||\n isLoadingEmployment ||\n isLoadingBenefitsOffersSchema ||\n isLoadingBenefitOffers,\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n updateBenefitsOffersMutation.isPending,\n /**\n * Initial form values\n */\n initialValues: initialValues,\n /**\n * Function to validate form values against the onboarding schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: FieldValues) => {\n if (stepState.currentStep.name === 'benefits' && benefitOffersSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n benefitOffersSchema?.fields,\n );\n\n return benefitOffersSchema?.handleValidation(parsedValues);\n }\n if (onboardingForm) {\n const parsedValues = parseJSFToValidate(values, onboardingForm?.fields);\n\n return onboardingForm?.handleValidation(parsedValues);\n }\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n };\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","useState","mergeWith","jsonSchemaToEmployment","useEmployment","__name","employmentId","client","useClient","useQuery","response","getShowEmployment","useBenefitOffers","getIndexBenefitOffer","data","acc","item","useEmploymentInvite","useMutation","payload","postInviteEmploymentInvitation","useJSONSchemaForm","countryCode","form","fieldValues","options","employment","jsonSchemaQueryParam","getShowFormCountry","jsfSchema","schema","modify","hasFieldValues","employmentField","employmentFieldData","createHeadlessForm","useBenefitOffersSchema","getShowSchema","useCreateEmployment","postCreateEmployment2","useUpdateEmployment","patchUpdateEmployment2","useUpdateBenefitsOffers","putUpdateBenefitOffer","useOnboarding","type","internalEmploymentId","setInternalEmploymentId","useState","isLoadingEmployment","benefitOffers","isLoadingBenefitOffers","stepState","setFieldValues","previousStep","nextStep","useStepState","STEPS","createEmploymentMutation","updateEmploymentMutation","updateBenefitsOffersMutation","createEmploymentMutationAsync","mutationToPromise","updateEmploymentMutationAsync","updateBenefitsOffersMutationAsync","onboardingForm","isLoadingBasicInformation","benefitsFormValues","initialValuesBenefitOffers","mergeWith","benefitOffersSchema","isLoadingBenefitsOffersSchema","stepFields","initialValues","getInitialValues","parseFormValues","values","parseJSFToValidate","onSubmit","parsedValues","error","back","next"]}
|
package/dist/chunk-PKX5K2UY.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as p}from"./chunk-2YWRQJ7P.js";import{a as i}from"./chunk-MHKNAQLP.js";import{b as t}from"./chunk-LCZQVL4U.js";import{a as e}from"./chunk-LM5GAAUB.js";import{a as d}from"./chunk-5CJPGBXJ.js";import{a as m}from"./chunk-7OMSCFTM.js";import{a}from"./chunk-M7WCW7WD.js";import{a as r}from"./chunk-WS3C3WIJ.js";import{a as n}from"./chunk-AYDF3IFZ.js";import O,{useId as S}from"react";var R=n(({employmentId:f,countryCode:s,type:b="employee",render:g,options:c})=>{let B=S(),o=t({employmentId:f,countryCode:s,type:b,options:c});return O.createElement(r.Provider,{value:{formId:B,onboardingBag:o}},g({onboardingBag:o,components:{BasicInformationStep:e,ContractDetailsStep:m,BenefitsStep:d,SubmitButton:i,BackButton:a,OnboardingInvite:p}}))},"OnboardingFlow");export{R as a};
|
|
2
|
-
//# sourceMappingURL=chunk-PKX5K2UY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/OnboardingFlow.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport { useOnboarding } from '@/src/flows/Onboarding/hooks';\nimport { BasicInformationStep } from '@/src/flows/Onboarding/BasicInformationStep';\nimport { OnboardingContext } from '@/src/flows/Onboarding/context';\nimport { OnboardingSubmit } from '@/src/flows/Onboarding/OnboardingSubmit';\nimport { OnboardingBack } from '@/src/flows/Onboarding/OnboardingBack';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { OnboardingInvite } from '@/src/flows/Onboarding/OnboardingInvite';\nimport { ContractDetailsStep } from '@/src/flows/Onboarding/ContractDetailsStep';\nimport { BenefitsStep } from '@/src/flows/Onboarding/BenefitsStep';\n\nexport type OnboardingRenderProps = {\n /**\n * The onboarding bag returned by the useOnboarding hook.\n * This bag contains all the methods and properties needed to handle the onboarding flow.\n * @see {@link useOnboarding}\n */\n onboardingBag: ReturnType<typeof useOnboarding>;\n /**\n * The components used in the onboarding flow.\n * This includes different steps, submit button, back button.\n * @see {@link BasicInformationStep}\n * @see {@link ContractDetailsStep}\n * @see {@link OnboardingSubmit}\n * @see {@link OnboardingBack}\n * @see {@link OnboardingInvite}\n * @see {@link BenefitsStep}\n */\n components: {\n SubmitButton: typeof OnboardingSubmit;\n BackButton: typeof OnboardingBack;\n BasicInformationStep: typeof BasicInformationStep;\n OnboardingInvite: typeof OnboardingInvite;\n ContractDetailsStep: typeof ContractDetailsStep;\n BenefitsStep: typeof BenefitsStep;\n };\n};\n\ntype OnboardingFlowProps = OnboardingFlowParams & {\n render: ({\n onboardingBag,\n components,\n }: OnboardingRenderProps) => React.ReactNode;\n};\n\nexport const OnboardingFlow = ({\n employmentId,\n countryCode,\n type = 'employee',\n render,\n options,\n}: OnboardingFlowProps) => {\n const formId = useId();\n const onboardingBag = useOnboarding({\n employmentId,\n countryCode,\n type,\n options,\n });\n\n return (\n <OnboardingContext.Provider\n value={{\n formId: formId,\n onboardingBag,\n }}\n >\n {render({\n onboardingBag,\n components: {\n BasicInformationStep: BasicInformationStep,\n ContractDetailsStep: ContractDetailsStep,\n BenefitsStep: BenefitsStep,\n SubmitButton: OnboardingSubmit,\n BackButton: OnboardingBack,\n OnboardingInvite: OnboardingInvite,\n },\n })}\n </OnboardingContext.Provider>\n );\n};\n"],"mappings":"mWAAA,OAAOA,GAAS,SAAAC,MAAa,QA6CtB,IAAMC,EAAiBC,EAAA,CAAC,CAC7B,aAAAC,EACA,YAAAC,EACA,KAAAC,EAAO,WACP,OAAAC,EACA,QAAAC,CACF,IAA2B,CACzB,IAAMC,EAASC,EAAM,EACfC,EAAgBC,EAAc,CAClC,aAAAR,EACA,YAAAC,EACA,KAAAC,EACA,QAAAE,CACF,CAAC,EAED,OACEK,EAAA,cAACC,EAAkB,SAAlB,CACC,MAAO,CACL,OAAQL,EACR,cAAAE,CACF,GAECJ,EAAO,CACN,cAAAI,EACA,WAAY,CACV,qBAAsBI,EACtB,oBAAqBC,EACrB,aAAcC,EACd,aAAcC,EACd,WAAYC,EACZ,iBAAkBC,CACpB,CACF,CAAC,CACH,CAEJ,EAnC8B","names":["React","useId","OnboardingFlow","__name","employmentId","countryCode","type","render","options","formId","useId","onboardingBag","useOnboarding","React","OnboardingContext","BasicInformationStep","ContractDetailsStep","BenefitsStep","OnboardingSubmit","OnboardingBack","OnboardingInvite"]}
|
package/dist/chunk-S56EWAS4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as n}from"./chunk-AYDF3IFZ.js";import{useState as d}from"react";var f=n(s=>{let l=Object.keys(s);if(l.length===0)throw new Error("No steps provided to useStepState");let[r,a]=d({}),[p,i]=d({currentStep:s[l[0]],totalSteps:l.length,values:null});function c(){let{index:u}=p.currentStep,t=Object.values(s).find(e=>e.index===u+1);t&&(i(e=>({...e,currentStep:t,values:{...e.values,[e.currentStep.name]:{...e.values?.[e.currentStep.name],...r}}})),a({}))}n(c,"nextStep");function S(){let{index:u}=p.currentStep,t=Object.values(s).find(e=>e.index===u-1);t&&(i(e=>({...e,currentStep:t,values:{...e.values,[e.currentStep.name]:{...e.values?.[e.currentStep.name],...r}}})),a({}))}return n(S,"previousStep"),{nextStep:c,previousStep:S,stepState:p,fieldValues:r,setFieldValues:a}},"useStepState");export{f as a};
|
|
2
|
-
//# sourceMappingURL=chunk-S56EWAS4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/useStepState.ts"],"sourcesContent":["import { useState } from 'react';\nimport { FieldValues } from 'react-hook-form';\n\nexport type Step = {\n index: number;\n name: string;\n};\n\ntype StepState<T extends string, Fields = FieldValues> = {\n currentStep: Step;\n totalSteps: number;\n values:\n | {\n [key in T]: Fields;\n }\n | null;\n};\n\nexport const useStepState = <T extends string, Fields = FieldValues>(\n steps: Record<T, Step>,\n) => {\n const stepKeys = Object.keys(steps) as Array<keyof typeof steps>;\n\n if (stepKeys.length === 0) {\n throw new Error('No steps provided to useStepState');\n }\n\n const [fieldValues, setFieldValues] = useState<Fields>({} as Fields);\n const [stepState, setStepState] = useState<StepState<T, Fields>>({\n currentStep: steps[stepKeys[0]],\n totalSteps: stepKeys.length,\n values: null,\n });\n\n function nextStep() {\n const { index } = stepState.currentStep;\n const stepValues = Object.values<Step>(steps);\n const nextStep = stepValues.find((step) => step.index === index + 1);\n\n if (nextStep) {\n setStepState((previousState) => ({\n ...previousState,\n currentStep: nextStep,\n values: {\n ...previousState.values,\n [previousState.currentStep.name]: {\n ...previousState.values?.[previousState.currentStep.name as T],\n ...fieldValues,\n },\n } as { [key in T]: Fields },\n }));\n setFieldValues({} as Fields); // Reset field values for the next step\n }\n }\n\n function previousStep() {\n const { index } = stepState.currentStep;\n const stepValues = Object.values<Step>(steps);\n const previousStep = stepValues.find((step) => step.index === index - 1);\n\n if (previousStep) {\n setStepState((previousState) => ({\n ...previousState,\n currentStep: previousStep,\n values: {\n ...previousState.values,\n [previousState.currentStep.name]: {\n ...previousState.values?.[previousState.currentStep.name as T],\n ...fieldValues,\n },\n } as { [key in T]: Fields },\n }));\n setFieldValues({} as Fields); // Reset field values for the previous step\n }\n }\n\n return {\n /**\n * Moves to the next step in the step state.\n * It updates the current step and resets the field values for the next step.\n * The field values for the current step are stored in the step state.\n * @returns {void}\n */\n nextStep,\n /**\n * Moves to the previous step in the step state.\n * It updates the current step and resets the field values for the previous step.\n * The field values for the current step are stored in the step state.\n * @returns {void}\n */\n previousStep,\n /**\n * The current step state containing the current step, total number of steps and\n * the form values for each step.\n * @returns {StepState<T>} The current step state.\n */\n stepState,\n /**\n * The field values for the current step.\n * @returns {FieldValues} The field values for the current step.\n */\n fieldValues,\n /**\n * Sets the field values for the current step.\n * @param values The field values to set.\n * @returns {void}\n */\n setFieldValues,\n };\n};\n"],"mappings":"wCAAA,OAAS,YAAAA,MAAgB,QAkBlB,IAAMC,EAAeC,EAC1BC,GACG,CACH,IAAMC,EAAW,OAAO,KAAKD,CAAK,EAElC,GAAIC,EAAS,SAAW,EACtB,MAAM,IAAI,MAAM,mCAAmC,EAGrD,GAAM,CAACC,EAAaC,CAAc,EAAIC,EAAiB,CAAC,CAAW,EAC7D,CAACC,EAAWC,CAAY,EAAIF,EAA+B,CAC/D,YAAaJ,EAAMC,EAAS,CAAC,CAAC,EAC9B,WAAYA,EAAS,OACrB,OAAQ,IACV,CAAC,EAED,SAASM,GAAW,CAClB,GAAM,CAAE,MAAAC,CAAM,EAAIH,EAAU,YAEtBE,EADa,OAAO,OAAaP,CAAK,EAChB,KAAMS,GAASA,EAAK,QAAUD,EAAQ,CAAC,EAE/DD,IACFD,EAAcI,IAAmB,CAC/B,GAAGA,EACH,YAAaH,EACb,OAAQ,CACN,GAAGG,EAAc,OACjB,CAACA,EAAc,YAAY,IAAI,EAAG,CAChC,GAAGA,EAAc,SAASA,EAAc,YAAY,IAAS,EAC7D,GAAGR,CACL,CACF,CACF,EAAE,EACFC,EAAe,CAAC,CAAW,EAE/B,CAnBSJ,EAAAQ,EAAA,YAqBT,SAASI,GAAe,CACtB,GAAM,CAAE,MAAAH,CAAM,EAAIH,EAAU,YAEtBM,EADa,OAAO,OAAaX,CAAK,EACZ,KAAMS,GAASA,EAAK,QAAUD,EAAQ,CAAC,EAEnEG,IACFL,EAAcI,IAAmB,CAC/B,GAAGA,EACH,YAAaC,EACb,OAAQ,CACN,GAAGD,EAAc,OACjB,CAACA,EAAc,YAAY,IAAI,EAAG,CAChC,GAAGA,EAAc,SAASA,EAAc,YAAY,IAAS,EAC7D,GAAGR,CACL,CACF,CACF,EAAE,EACFC,EAAe,CAAC,CAAW,EAE/B,CAnBS,OAAAJ,EAAAY,EAAA,gBAqBF,CAOL,SAAAJ,EAOA,aAAAI,EAMA,UAAAN,EAKA,YAAAH,EAMA,eAAAC,CACF,CACF,EA3F4B","names":["useState","useStepState","__name","steps","stepKeys","fieldValues","setFieldValues","useState","stepState","setStepState","nextStep","index","step","previousState","previousStep"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|