@refinedev/antd 5.41.0 → 5.43.0
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/CHANGELOG.md +87 -1
- package/dist/components/fields/date/index.d.cts.map +1 -1
- package/dist/components/fields/date/index.d.ts.map +1 -1
- package/dist/components/pages/auth/components/forgotPassword/index.d.cts.map +1 -1
- package/dist/components/pages/auth/components/forgotPassword/index.d.ts.map +1 -1
- package/dist/components/pages/auth/components/register/index.d.cts.map +1 -1
- package/dist/components/pages/auth/components/register/index.d.ts.map +1 -1
- package/dist/hooks/fields/useCheckboxGroup/index.d.cts +4 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.cts.map +1 -1
- package/dist/hooks/fields/useCheckboxGroup/index.d.mts +4 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.mts.map +4 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.ts +4 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.ts.map +1 -1
- package/dist/hooks/fields/useRadioGroup/index.d.cts +4 -0
- package/dist/hooks/fields/useRadioGroup/index.d.cts.map +1 -1
- package/dist/hooks/fields/useRadioGroup/index.d.mts +4 -0
- package/dist/hooks/fields/useRadioGroup/index.d.mts.map +4 -0
- package/dist/hooks/fields/useRadioGroup/index.d.ts +4 -0
- package/dist/hooks/fields/useRadioGroup/index.d.ts.map +1 -1
- package/dist/hooks/fields/useSelect/index.d.cts +8 -0
- package/dist/hooks/fields/useSelect/index.d.cts.map +1 -1
- package/dist/hooks/fields/useSelect/index.d.mts +8 -0
- package/dist/hooks/fields/useSelect/index.d.mts.map +8 -0
- package/dist/hooks/fields/useSelect/index.d.ts +8 -0
- package/dist/hooks/fields/useSelect/index.d.ts.map +1 -1
- package/dist/hooks/list/useSimpleList/useSimpleList.d.cts +5 -1
- package/dist/hooks/list/useSimpleList/useSimpleList.d.cts.map +1 -1
- package/dist/hooks/list/useSimpleList/useSimpleList.d.mts +5 -1
- package/dist/hooks/list/useSimpleList/useSimpleList.d.mts.map +5 -1
- package/dist/hooks/list/useSimpleList/useSimpleList.d.ts +5 -1
- package/dist/hooks/list/useSimpleList/useSimpleList.d.ts.map +1 -1
- package/dist/hooks/table/useTable/useTable.d.cts.map +1 -1
- package/dist/hooks/table/useTable/useTable.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/components/fields/date/index.tsx +5 -3
- package/src/components/pages/auth/components/forgotPassword/index.tsx +9 -3
- package/src/components/pages/auth/components/register/index.tsx +21 -6
- package/src/hooks/fields/useCheckboxGroup/index.ts +7 -7
- package/src/hooks/fields/useRadioGroup/index.ts +7 -7
- package/src/hooks/fields/useSelect/index.ts +19 -5
- package/src/hooks/form/useForm.ts +4 -4
- package/src/hooks/list/useSimpleList/useSimpleList.ts +7 -1
- package/src/hooks/table/useTable/useTable.ts +2 -0
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/hooks/form/useForm.ts","../src/hooks/form/useModalForm/useModalForm.ts","../src/hooks/modal/useModal/index.tsx","../src/hooks/form/useDrawerForm/useDrawerForm.ts","../src/hooks/form/useStepsForm/useStepsForm.ts","../src/hooks/table/useTable/useTable.ts","../src/definitions/table/index.ts","../src/hooks/table/useTable/paginationLink.tsx","../src/hooks/table/useEditableTable/useEditableTable.ts","../src/hooks/fields/useSelect/index.ts","../src/hooks/fields/useCheckboxGroup/index.ts","../src/hooks/fields/useRadioGroup/index.ts","../src/hooks/import/index.tsx","../src/hooks/list/useSimpleList/useSimpleList.ts","../src/hooks/useFileUploadState/index.ts","../src/hooks/useSiderVisible/index.ts","../src/contexts/themedLayoutContext/index.tsx","../src/hooks/useThemedLayoutContext/index.ts","../src/providers/notificationProvider/index.tsx","../src/components/undoableNotification/index.tsx","../src/components/layout/index.tsx","../src/components/layout/sider/index.tsx","../src/components/layout/sider/styles.ts","../src/components/layout/header/index.tsx","../src/components/layout/title/index.tsx","../src/components/themedLayout/index.tsx","../src/components/themedLayout/sider/index.tsx","../src/components/themedLayout/sider/styles.ts","../src/components/themedLayout/header/index.tsx","../src/components/themedLayout/title/index.tsx","../src/components/themedLayoutV2/index.tsx","../src/components/themedLayoutV2/sider/index.tsx","../src/components/themedLayoutV2/sider/styles.ts","../src/components/themedLayoutV2/header/index.tsx","../src/components/themedLayoutV2/title/index.tsx","../src/components/buttons/create/index.tsx","../src/components/buttons/edit/index.tsx","../src/components/buttons/delete/index.tsx","../src/components/buttons/refresh/index.tsx","../src/components/buttons/show/index.tsx","../src/components/buttons/list/index.tsx","../src/components/buttons/export/index.tsx","../src/components/buttons/save/index.tsx","../src/components/buttons/clone/index.tsx","../src/components/buttons/import/index.tsx","../src/components/crud/list/index.tsx","../src/components/crud/create/index.tsx","../src/components/crud/edit/index.tsx","../src/components/crud/show/index.tsx","../src/components/fields/text/index.tsx","../src/components/fields/tag/index.tsx","../src/components/fields/email/index.tsx","../src/components/fields/image/index.tsx","../src/components/fields/boolean/index.tsx","../src/components/fields/date/index.tsx","../src/components/fields/file/index.tsx","../src/components/fields/url/index.tsx","../src/components/fields/number/index.tsx","../src/components/fields/markdown/index.tsx","../src/components/table/components/filterDropdown/index.tsx","../src/components/pages/error/index.tsx","../src/components/pages/login/index.tsx","../src/components/pages/login/styles.ts","../src/components/pages/ready/index.tsx","../src/components/pages/welcome/index.tsx","../src/components/pages/auth/index.tsx","../src/components/pages/auth/components/login/index.tsx","../src/components/pages/auth/components/styles.ts","../src/components/pages/auth/components/register/index.tsx","../src/components/pages/auth/components/forgotPassword/index.tsx","../src/components/pages/auth/components/updatePassword/index.tsx","../src/components/breadcrumb/index.tsx","../src/components/pageHeader/index.tsx","../src/components/autoSaveIndicator/index.tsx","../src/definitions/filter-mappers/index.ts","../src/definitions/upload/index.ts","../src/definitions/themes/index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./providers/index.js\";\nexport * from \"./components/index.js\";\nexport * from \"./contexts/index.js\";\n\nexport {\n getDefaultSortOrder,\n getDefaultFilter,\n mapAntdSorterToCrudSorting,\n mapAntdFilterToCrudFilter,\n} from \"./definitions/table/index.js\";\nexport { rangePickerFilterMapper } from \"./definitions/filter-mappers/index.js\";\nexport { getValueFromEvent } from \"./definitions/upload/index.js\";\n\nexport * from \"./definitions/themes/index.js\";\n","import React from \"react\";\nimport {\n type FormInstance,\n type FormProps,\n Form,\n type ButtonProps,\n} from \"antd\";\nimport { useForm as useFormSF, type UseFormConfig } from \"sunflower-antd\";\nimport {\n type AutoSaveProps,\n flattenObjectKeys,\n propertyPathToArray,\n} from \"@refinedev/core\";\n\nimport {\n type HttpError,\n type BaseRecord,\n useForm as useFormCore,\n type UseFormReturnType as UseFormReturnTypeCore,\n useWarnAboutChange,\n type UseFormProps as UseFormPropsCore,\n type CreateResponse,\n type UpdateResponse,\n pickNotDeprecated,\n useTranslate,\n useRefineContext,\n} from \"@refinedev/core\";\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n submitOnEnter?: boolean;\n /**\n * Shows notification when unsaved changes exist\n */\n warnWhenUnsavedChanges?: boolean;\n /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & AutoSaveProps<TVariables> &\n Pick<UseFormConfig, \"defaultFormValues\">;\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n form: FormInstance<TVariables>;\n formProps: FormProps<TVariables>;\n saveButtonProps: ButtonProps & {\n onClick: () => void;\n };\n onFinish: (\n values?: TVariables,\n ) => Promise<CreateResponse<TResponse> | UpdateResponse<TResponse> | void>;\n} & Pick<\n ReturnType<typeof useFormSF<TResponse, TVariables>>,\n \"defaultFormValuesLoading\"\n >;\n\n/**\n * `useForm` is used to manage forms. It uses Ant Design {@link https://ant.design/components/form/ Form} data scope management under the hood and returns the required props for managing the form actions.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n * @typeParam TResponse - Result data returned by the mutation function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TData`\n * @typeParam TResponseError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}. Defaults to `TError`\n *\n *\n */\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n action,\n resource,\n onMutationSuccess: onMutationSuccessProp,\n onMutationError: onMutationErrorProp,\n autoSave,\n submitOnEnter = false,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n redirect,\n successNotification,\n errorNotification,\n meta,\n metaData,\n queryMeta,\n mutationMeta,\n liveMode,\n liveParams,\n mutationMode,\n dataProviderName,\n onLiveEvent,\n invalidates,\n undoableTimeout,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n id: idFromProps,\n overtimeOptions,\n optimisticUpdateMap,\n defaultFormValues,\n disableServerSideValidation: disableServerSideValidationProp = false,\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const [formAnt] = Form.useForm();\n const formSF = useFormSF<TResponse, TVariables>({\n form: formAnt,\n defaultFormValues,\n });\n const { form } = formSF;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n onMutationSuccess: onMutationSuccessProp\n ? onMutationSuccessProp\n : undefined,\n onMutationError: async (error, _variables, _context) => {\n if (disableServerSideValidation) {\n onMutationErrorProp?.(error, _variables, _context);\n return;\n }\n\n // antd form expects error object to be in a specific format.\n let parsedErrors: {\n name: string | number | (string | number)[];\n errors?: string[] | undefined;\n }[] = [];\n\n // reset antd errors before setting new errors\n const fieldsValue = form.getFieldsValue() as unknown as object;\n\n const fields = Object.keys(flattenObjectKeys(fieldsValue));\n\n parsedErrors = fields.map((field) => {\n return {\n name: propertyPathToArray(field),\n errors: undefined,\n };\n });\n\n form.setFields(parsedErrors);\n\n const errors = error?.errors;\n // parse errors to antd form errors\n for (const key in errors) {\n const fieldError = errors[key];\n\n let newError: string[] = [];\n\n if (Array.isArray(fieldError)) {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"string\") {\n newError = [fieldError];\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = [\"Field is not valid.\"];\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = [translatedMessage];\n }\n\n parsedErrors.push({\n name: propertyPathToArray(key),\n errors: newError,\n });\n }\n\n form.setFields([...parsedErrors]);\n\n onMutationErrorProp?.(error, _variables, _context);\n },\n redirect,\n action,\n resource,\n successNotification,\n errorNotification,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n queryMeta,\n mutationMeta,\n liveMode,\n liveParams,\n mutationMode,\n dataProviderName,\n onLiveEvent,\n invalidates,\n undoableTimeout,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n id: idFromProps,\n overtimeOptions,\n optimisticUpdateMap,\n autoSave,\n });\n\n const { formLoading, onFinish, queryResult, id, onFinishAutoSave } =\n useFormCoreResult;\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n // populate form with data when queryResult is ready or id changes\n // form populated via initialValues prop\n React.useEffect(() => {\n form.resetFields();\n }, [queryResult?.data?.data, id]);\n\n const onKeyUp = (event: React.KeyboardEvent<HTMLFormElement>) => {\n if (submitOnEnter && event.key === \"Enter\") {\n form.submit();\n }\n };\n\n const onValuesChange = (changeValues: object, allValues: any) => {\n if (changeValues && warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishFromProps = autoSave?.onFinish ?? ((values) => values);\n\n return onFinishAutoSave(onFinishFromProps(allValues)).catch(\n (error) => error,\n );\n }\n\n return changeValues;\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: () => {\n form.submit();\n },\n };\n\n return {\n form: formSF.form,\n formProps: {\n ...formSF.formProps,\n onFinish: (values: TVariables) =>\n onFinish(values).catch((error) => error),\n onKeyUp,\n onValuesChange,\n initialValues: queryResult?.data?.data,\n },\n saveButtonProps,\n defaultFormValuesLoading: formSF.defaultFormValuesLoading,\n ...useFormCoreResult,\n onFinish: async (values?: TVariables) => {\n return await onFinish(values ?? formSF.form.getFieldsValue(true));\n },\n };\n};\n","import React, { useCallback } from \"react\";\nimport type { FormInstance, FormProps, ModalProps } from \"antd\";\n\nimport {\n useTranslate,\n useWarnAboutChange,\n type HttpError,\n type UseFormProps as UseFormPropsCore,\n type BaseRecord,\n type LiveModeProps,\n type BaseKey,\n useUserFriendlyName,\n useResource,\n type FormWithSyncWithLocationParams,\n useParsed,\n useGo,\n useInvalidate,\n} from \"@refinedev/core\";\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport { useModal } from \"@hooks/modal\";\n\nexport type useModalFormFromSFReturnType<TResponse, TVariables> = {\n open: boolean;\n form: FormInstance<TVariables>;\n show: (id?: BaseKey) => void;\n close: () => void;\n modalProps: ModalProps;\n formProps: FormProps<TVariables>;\n formLoading: boolean;\n defaultFormValuesLoading: boolean;\n formValues: {};\n initialValues: {};\n formResult: undefined;\n submit: (values?: TVariables) => Promise<TResponse>;\n /** @deprecated Please use `open` instead. */\n visible: boolean;\n};\n\ntype useModalFormConfig = {\n action: \"show\" | \"edit\" | \"create\" | \"clone\";\n};\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = Omit<\n UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >,\n \"saveButtonProps\" | \"deleteButtonProps\"\n> &\n useModalFormFromSFReturnType<TResponse, TVariables>;\n\nexport type UseModalFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n useModalFormConfig &\n LiveModeProps &\n FormWithSyncWithLocationParams & {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n/**\n * `useModalForm` hook allows you to manage a form within a modal. It returns Ant Design {@link https://ant.design/components/form/ Form} and {@link https://ant.design/components/modal/ Modal} components props.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useModalForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\nexport const useModalForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n syncWithLocation,\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoSave,\n invalidates,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n>): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n const invalidate = useInvalidate();\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(rest.resource);\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = rest.action ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...rest.meta,\n },\n autoSave,\n invalidates,\n ...rest,\n });\n\n const { form, formProps, id, setId, formLoading, onFinish, autoSaveProps } =\n useFormProps;\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const { show, close, modalProps } = useModal({\n modalProps: {\n open: defaultVisible,\n },\n });\n\n const visible = modalProps.open || false;\n const sunflowerUseModal: useModalFormFromSFReturnType<TResponse, TVariables> =\n {\n modalProps,\n form,\n formLoading,\n formProps,\n formResult: undefined,\n formValues: form.getFieldsValue,\n defaultFormValuesLoading: false,\n initialValues: {},\n submit: onFinish as any,\n close,\n open: modalProps.open || false,\n show,\n visible,\n };\n\n React.useEffect(() => {\n if (initiallySynced === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n\n if (typeof openStatus === \"boolean\") {\n if (openStatus) {\n show();\n }\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [id, visible, show, syncWithLocationKey, syncingId]);\n\n const saveButtonPropsSF = {\n disabled: formLoading,\n loading: formLoading,\n onClick: () => {\n form.submit();\n },\n };\n\n const handleClose = useCallback(() => {\n if (autoSaveProps.status === \"success\" && autoSave?.invalidateOnClose) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: rest.dataProviderName,\n resource: identifier,\n });\n }\n\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n sunflowerUseModal.close();\n }, [warnWhen, autoSaveProps.status]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n sunflowerUseModal.show();\n }\n },\n [id],\n );\n\n const { visible: _visible, ...otherModalProps } = modalProps;\n const newModalProps = { open: _visible, ...otherModalProps };\n\n return {\n ...useFormProps,\n ...sunflowerUseModal,\n show: handleShow,\n close: handleClose,\n open: visible,\n formProps: {\n ...formProps,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n onFinish: async (values) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n form.resetFields();\n }\n },\n },\n modalProps: {\n ...newModalProps,\n width: \"1000px\",\n okButtonProps: saveButtonPropsSF,\n title: translate(\n `${identifier}.titles.${rest.action}`,\n `${getUserFriendlyName(\n `${rest.action} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier\n }`,\n \"singular\",\n )}`,\n ),\n okText: translate(\"buttons.save\", \"Save\"),\n cancelText: translate(\"buttons.cancel\", \"Cancel\"),\n onCancel: handleClose,\n forceRender: true,\n },\n formLoading,\n };\n};\n","import type { ModalProps } from \"antd\";\nimport {\n useModal as useCoreModal,\n type useModalReturnType as useCoreModelReturnType,\n} from \"@refinedev/core\";\n\nexport type useModalReturnType = {\n modalProps: ModalProps;\n} & Omit<useCoreModelReturnType, \"visible\">;\n\nexport type useModalProps = {\n /**\n * Default props for Ant Design {@link https://ant.design/components/modal/ `<Modal>`} component.\n */\n modalProps?: ModalProps;\n};\n\n/**\n * By using `useModal` you get props for your records from API in accordance with Ant Design {@link https://ant.design/components/modal/ `<Modal>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/ui/useModal} for more details.\n */\nexport const useModal = ({\n modalProps = {},\n}: useModalProps = {}): useModalReturnType => {\n const { show, close, visible } = useCoreModal({\n defaultVisible: modalProps.open,\n });\n\n return {\n modalProps: {\n ...modalProps,\n onCancel: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n modalProps.onCancel?.(e);\n close();\n },\n open: visible,\n visible,\n },\n show,\n close,\n };\n};\n","import React, { useCallback } from \"react\";\nimport type { FormInstance, FormProps, DrawerProps, ButtonProps } from \"antd\";\nimport {\n useTranslate,\n useWarnAboutChange,\n type UseFormProps as UseFormPropsCore,\n type HttpError,\n type LiveModeProps,\n type BaseRecord,\n type FormWithSyncWithLocationParams,\n type BaseKey,\n useResource,\n useParsed,\n useGo,\n useModal,\n useInvalidate,\n} from \"@refinedev/core\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport type { DeleteButtonProps } from \"../../../components\";\n\nexport interface UseDrawerFormConfig {\n action: \"show\" | \"edit\" | \"create\" | \"clone\";\n}\n\nexport type UseDrawerFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n UseDrawerFormConfig &\n LiveModeProps &\n FormWithSyncWithLocationParams & {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n\nexport type UseDrawerFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n formProps: FormProps<TVariables> & {\n form: FormInstance<TVariables>;\n };\n show: (id?: BaseKey) => void;\n close: () => void;\n drawerProps: DrawerProps;\n saveButtonProps: ButtonProps;\n deleteButtonProps: DeleteButtonProps;\n formLoading: boolean;\n};\n\n/**\n * `useDrawerForm` hook allows you to manage a form within a drawer. It returns Ant Design {@link https://ant.design/components/form/ Form} and {@link https://ant.design/components/drawer/ Drawer} components props.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useDrawerForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\n\nexport const useDrawerForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n syncWithLocation,\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoSave,\n invalidates,\n ...rest\n}: UseDrawerFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n>): UseDrawerFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(rest.resource);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = rest.action ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `drawer-${resource?.identifier ?? resource?.name}-${action}`\n : undefined;\n\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...rest.meta,\n },\n autoSave,\n invalidates,\n ...rest,\n });\n\n const { form, formProps, formLoading, id, setId, onFinish, autoSaveProps } =\n useFormProps;\n\n React.useEffect(() => {\n if (initiallySynced === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n if (typeof openStatus === \"boolean\") {\n openStatus ? show() : close();\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId, initiallySynced]);\n\n React.useEffect(() => {\n if (initiallySynced === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [\n id,\n visible,\n show,\n close,\n syncWithLocationKey,\n syncingId,\n initiallySynced,\n ]);\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: () => {\n form.submit();\n },\n loading: formLoading,\n };\n\n const deleteButtonProps = {\n recordItemId: id,\n onSuccess: () => {\n setId?.(undefined);\n close();\n },\n };\n\n const handleClose = useCallback(() => {\n if (autoSaveProps.status === \"success\" && autoSave?.invalidateOnClose) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: rest.dataProviderName,\n resource: identifier,\n });\n }\n\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n close();\n setId?.(undefined);\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n return {\n ...useFormProps,\n show: handleShow,\n close: handleClose,\n formProps: {\n form,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n onFinish: async (values) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n form.resetFields();\n }\n },\n },\n drawerProps: {\n width: \"500px\",\n onClose: handleClose,\n open: visible,\n forceRender: true,\n },\n saveButtonProps,\n deleteButtonProps,\n formLoading,\n };\n};\n","import {\n useStepsForm as useStepsFormSF,\n type UseStepsFormConfig,\n} from \"sunflower-antd\";\nimport type { FormInstance, FormProps } from \"antd\";\n\nimport type {\n HttpError,\n UseFormProps as UseFormPropsCore,\n BaseRecord,\n} from \"@refinedev/core\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormFromSFReturnType<TResponse, TVariables> = {\n current: number;\n gotoStep: (step: number) => Promise<TVariables> | true;\n stepsProps: {\n current: number;\n onChange: (currentStep: number) => void;\n };\n formProps: FormProps<TVariables>;\n formLoading: boolean;\n defaultFormValuesLoading: boolean;\n formValues: {};\n initialValues: {};\n formResult: undefined;\n form: FormInstance<TVariables>;\n submit: (values?: TVariables) => Promise<TResponse>;\n};\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseStepsFormFromSFReturnType<TResponse, TVariables>;\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n UseStepsFormConfig;\n\n/**\n * `useStepsForm` hook allows you to split your form under an Ant Design based {@link https://ant.design/components/steps/ Steps} component and provides you with a few useful functionalities that will help you manage your form.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useStepsForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\nexport const useStepsForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>(\n props: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > = {},\n): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...props,\n });\n const { form, formProps } = useFormProps;\n\n const stepsPropsSunflower = useStepsFormSF<TResponse, TVariables>({\n isBackValidate: false,\n form: form,\n submit: (values: any) => {\n formProps?.onFinish?.(values);\n },\n ...props,\n });\n\n return {\n ...useFormProps,\n ...stepsPropsSunflower,\n formLoading: useFormProps.formLoading,\n formProps: {\n ...stepsPropsSunflower.formProps,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n },\n saveButtonProps: {\n ...useFormProps.saveButtonProps,\n onClick: () => stepsPropsSunflower.submit(),\n },\n };\n};\n","import React, { Children, createElement, Fragment } from \"react\";\nimport {\n Grid,\n type FormProps,\n Form,\n type TablePaginationConfig,\n type TableProps,\n} from \"antd\";\nimport { useForm as useFormSF } from \"sunflower-antd\";\n\nimport {\n useLiveMode,\n type BaseRecord,\n type CrudFilters,\n type HttpError,\n useTable as useTableCore,\n type useTableProps as useTablePropsCore,\n type useTableReturnType as useTableCoreReturnType,\n pickNotDeprecated,\n useSyncWithLocation,\n} from \"@refinedev/core\";\n\nimport {\n mapAntdSorterToCrudSorting,\n mapAntdFilterToCrudFilter,\n} from \"@definitions/table\";\nimport { PaginationLink } from \"./paginationLink\";\nimport type { FilterValue, SorterResult } from \"../../../definitions/table\";\n\nexport type useTableProps<TQueryFnData, TError, TSearchVariables, TData> =\n useTablePropsCore<TQueryFnData, TError, TData> & {\n onSearch?: (data: TSearchVariables) => CrudFilters | Promise<CrudFilters>;\n };\n\nexport type useTableReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n> = useTableCoreReturnType<TData, TError> & {\n searchFormProps: FormProps<TSearchVariables>;\n tableProps: TableProps<TData>;\n};\n\n/**\n * By using useTable, you are able to get properties that are compatible with\n * Ant Design {@link https://ant.design/components/table/ `<Table>`} component.\n * All features such as sorting, filtering and pagination comes as out of box.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/table/useTable/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TSearchVariables - Values for search params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useTable = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n onSearch,\n initialCurrent,\n initialPageSize,\n hasPagination = true,\n pagination,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n defaultSetFilterBehavior,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n syncWithLocation,\n resource,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: useTableProps<\n TQueryFnData,\n TError,\n TSearchVariables,\n TData\n> = {}): useTableReturnType<TData, TError, TSearchVariables> => {\n const {\n tableQueryResult,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n filters,\n setFilters,\n sorters,\n setSorters,\n sorter,\n setSorter,\n createLinkForSyncWithLocation,\n pageCount,\n overtime,\n } = useTableCore<TQueryFnData, TError, TData>({\n permanentSorter,\n permanentFilter,\n initialCurrent,\n initialPageSize,\n pagination,\n hasPagination,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n initialSorter,\n initialFilter,\n syncWithLocation,\n resource,\n defaultSetFilterBehavior,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n const { syncWithLocation: defaultSyncWithLocation } = useSyncWithLocation();\n const shouldSyncWithLocation = syncWithLocation ?? defaultSyncWithLocation;\n const breakpoint = Grid.useBreakpoint();\n const [form] = Form.useForm<TSearchVariables>();\n const formSF = useFormSF<any, TSearchVariables>({\n form: form,\n });\n const liveMode = useLiveMode(liveModeFromProp);\n\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n\n const preferredInitialFilters = pickNotDeprecated(\n filtersFromProp?.initial,\n initialFilter,\n );\n\n const { data, isFetched, isLoading } = tableQueryResult;\n\n React.useEffect(() => {\n if (shouldSyncWithLocation) {\n // get registered fields of form\n const registeredFields = formSF.form.getFieldsValue() as Record<\n string,\n any\n >;\n // map `filters` for registered fields\n const filterFilterMap = Object.keys(registeredFields).reduce(\n (acc, curr) => {\n // find filter for current field\n const filter = filters.find(\n (filter) => \"field\" in filter && filter.field === curr,\n );\n // if filter exists, set value to filter value\n if (filter) {\n acc[curr] = filter?.value;\n }\n return acc;\n },\n {} as Record<string, any>,\n );\n // set values to form\n formSF.form.setFieldsValue(filterFilterMap as any);\n }\n }, [shouldSyncWithLocation]);\n\n const onChange = (\n paginationState: TablePaginationConfig,\n tableFilters: Record<string, FilterValue | null>,\n sorter: SorterResult | SorterResult[],\n ) => {\n if (tableFilters && Object.keys(tableFilters).length > 0) {\n // Map Antd:Filter -> refine:CrudFilter\n const crudFilters = mapAntdFilterToCrudFilter(\n tableFilters,\n filters,\n preferredInitialFilters,\n );\n setFilters(crudFilters);\n }\n\n if (sorter && Object.keys(sorter).length > 0) {\n // Map Antd:Sorter -> refine:CrudSorting\n const crudSorting = mapAntdSorterToCrudSorting(sorter);\n setSorters(crudSorting);\n }\n\n if (isPaginationEnabled) {\n setCurrent?.(paginationState.current || 1);\n setPageSize?.(paginationState.pageSize || 10);\n }\n };\n\n const onFinish = async (value: TSearchVariables) => {\n if (onSearch) {\n const searchFilters = await onSearch(value);\n setFilters(searchFilters);\n\n if (isPaginationEnabled) {\n setCurrent?.(1);\n }\n }\n };\n\n const antdPagination = (): false | TablePaginationConfig => {\n if (isPaginationEnabled) {\n return {\n itemRender: (page, type, element) => {\n const link = createLinkForSyncWithLocation({\n pagination: {\n pageSize,\n current: page,\n },\n sorters,\n filters,\n });\n\n if (type === \"page\") {\n return createElement(PaginationLink, {\n to: link,\n element: `${page}`,\n });\n }\n if (type === \"next\" || type === \"prev\") {\n return createElement(PaginationLink, {\n to: link,\n element: element,\n });\n }\n\n if (type === \"jump-next\" || type === \"jump-prev\") {\n const elementChildren = (element as React.ReactElement)?.props\n ?.children;\n\n return createElement(PaginationLink, {\n to: link,\n element:\n Children.count(elementChildren) > 1\n ? createElement(Fragment, {}, elementChildren)\n : elementChildren,\n });\n }\n\n return element;\n },\n pageSize,\n current,\n simple: !breakpoint.sm,\n position: !breakpoint.sm ? [\"bottomCenter\"] : [\"bottomRight\"],\n total: data?.total,\n };\n }\n\n return false;\n };\n\n return {\n searchFormProps: {\n ...formSF.formProps,\n onFinish,\n },\n tableProps: {\n dataSource: data?.data,\n loading: liveMode === \"auto\" ? isLoading : !isFetched,\n onChange,\n pagination: antdPagination(),\n scroll: { x: true },\n },\n tableQueryResult,\n sorters,\n sorter,\n filters,\n setSorters,\n setSorter,\n setFilters,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount,\n createLinkForSyncWithLocation,\n overtime,\n };\n};\n","import {\n type CrudFilters,\n type CrudOperators,\n type CrudSorting,\n type CrudFilter,\n getDefaultFilter as getDefaultFilterCore,\n getDefaultSortOrder as getDefaultSortOrderCore,\n type ConditionalFilter,\n type LogicalFilter,\n} from \"@refinedev/core\";\nimport type { TableProps } from \"antd\";\n\nexport type FilterValue = Parameters<\n NonNullable<TableProps[\"onChange\"]>\n>[1][string];\nexport type SortOrder = NonNullable<TableProps[\"sortDirections\"]>[number];\nexport type SorterResult = Exclude<\n Parameters<NonNullable<TableProps[\"onChange\"]>>[2],\n any[]\n>;\n\nexport const getDefaultSortOrder = (\n columnName: string,\n sorter?: CrudSorting,\n): SortOrder | undefined => {\n const sort = getDefaultSortOrderCore(columnName, sorter);\n\n if (sort) {\n return `${sort}end`;\n }\n\n return undefined;\n};\n\n/**\n * @deprecated getDefaultFilter moved to `@refinedev/core`. Use from `@refinedev/core`\n */\nexport const getDefaultFilter = (\n columnName: string,\n filters?: CrudFilters,\n operatorType: CrudOperators = \"eq\",\n): CrudFilter[\"value\"] | undefined => {\n return getDefaultFilterCore(columnName, filters, operatorType);\n};\n\nexport const mapAntdSorterToCrudSorting = (\n sorter: SorterResult | SorterResult[],\n): CrudSorting => {\n const crudSorting: CrudSorting = [];\n if (Array.isArray(sorter)) {\n sorter\n .sort((a, b) => {\n return ((a.column?.sorter as { multiple?: number }).multiple ?? 0) <\n ((b.column?.sorter as { multiple?: number }).multiple ?? 0)\n ? -1\n : 0;\n })\n .map((item) => {\n if (item.field && item.order) {\n const field = Array.isArray(item.field)\n ? item.field.join(\".\")\n : `${item.field}`;\n\n crudSorting.push({\n field: `${item.columnKey ?? field}`,\n order: item.order.replace(\"end\", \"\") as \"asc\" | \"desc\",\n });\n }\n });\n } else {\n if (sorter.field && sorter.order) {\n const field = Array.isArray(sorter.field)\n ? sorter.field.join(\".\")\n : `${sorter.field}`;\n\n crudSorting.push({\n field: `${sorter.columnKey ?? field}`,\n order: sorter.order.replace(\"end\", \"\") as \"asc\" | \"desc\",\n });\n }\n }\n\n return crudSorting;\n};\n\nexport const mapAntdFilterToCrudFilter = (\n tableFilters: Record<\n string,\n | FilterValue\n | (string | number | boolean)\n | (string | number | boolean)[]\n | null\n >,\n prevFilters: CrudFilters,\n initialFilters?: CrudFilters,\n): CrudFilters => {\n const crudFilters: CrudFilters = [];\n const mapInitialFilter: Record<string, CrudFilter> = (\n initialFilters ?? []\n ).reduce((acc, item) => {\n const field =\n (item as ConditionalFilter).key || (item as LogicalFilter).field;\n return { ...acc, [field]: item };\n }, {});\n\n Object.keys(tableFilters).map((field) => {\n const value = tableFilters[field];\n const operator =\n prevFilters\n .filter((i) => i.operator !== \"or\")\n .find((p: any) => p.field === field)?.operator ||\n mapInitialFilter[field]?.operator;\n\n if (operator !== \"or\" && operator !== \"and\") {\n crudFilters.push({\n field,\n operator: operator ?? (Array.isArray(value) ? \"in\" : \"eq\"),\n value,\n });\n }\n });\n\n return crudFilters;\n};\n","import { useLink, useRouterContext, useRouterType } from \"@refinedev/core\";\nimport React, { type ReactNode } from \"react\";\n\ninterface PaginationLinkProps {\n to: string;\n element: ReactNode;\n}\n\nexport const PaginationLink = ({ to, element }: PaginationLinkProps) => {\n const { Link: LegacyLink } = useRouterContext();\n const routerType = useRouterType();\n const Link = useLink();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n e.preventDefault();\n }}\n >\n {element}\n </ActiveLink>\n );\n};\n","import { useTable } from \"@hooks\";\nimport type {\n BaseKey,\n BaseRecord,\n HttpError,\n UseFormProps,\n} from \"@refinedev/core\";\nimport type { ButtonProps } from \"antd\";\n\nimport type { useTableProps, useTableReturnType } from \"../useTable\";\nimport { type UseFormReturnType, useForm } from \"../../form/useForm\";\n\nexport type useEditableTableReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = useTableReturnType<TData, TError, TSearchVariables> &\n UseFormReturnType<TQueryFnData, TError, TVariables> & {\n saveButtonProps: ButtonProps & {\n onClick: () => void;\n };\n cancelButtonProps: ButtonProps & {\n onClick: () => void;\n };\n editButtonProps: (id: BaseKey) => ButtonProps & {\n onClick: () => void;\n };\n isEditing: (id: BaseKey) => boolean;\n };\n\ntype useEditableTableProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = Omit<\n useTableProps<TQueryFnData, TError, TSearchVariables, TData>,\n \"successNotification\" | \"errorNotification\"\n> &\n UseFormProps<TQueryFnData, TError, TVariables> & {\n /**\n * When true, row will be closed after successful submit.\n */\n autoSubmitClose?: boolean;\n };\n\n/**\n * `useEditeableTable` allows you to implement edit feature on the table with ease,\n * on top of all the features that {@link https://refine.dev/docs/api-reference/core/hooks/useTable/ `useTable`} provides.\n * `useEditableTable` return properties that can be used on Ant Design's {@link https://ant.design/components/table/ `<Table>`}\n * and {@link https://ant.design/components/form/ `<Form>`} components.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/table/useTable/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params\n * @typeParam TSearchVariables - Values for search params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\nexport const useEditableTable = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n autoSubmitClose = true,\n ...props\n}: useEditableTableProps<\n TQueryFnData,\n TError,\n TVariables,\n TSearchVariables,\n TData\n> = {}): useEditableTableReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TSearchVariables,\n TData\n> => {\n const table = useTable<TQueryFnData, TError, TSearchVariables, TData>({\n ...props,\n successNotification: undefined,\n errorNotification: undefined,\n });\n const edit = useForm<TQueryFnData, TError, TVariables>({\n ...props,\n action: \"edit\",\n redirect: false,\n });\n\n const { id: editId, setId, saveButtonProps } = edit;\n\n const cancelButtonProps = {\n onClick: () => {\n setId(undefined);\n },\n };\n\n const editButtonProps = (id: BaseKey) => {\n return {\n onClick: () => setId(id),\n };\n };\n\n const isEditing = (id: BaseKey) => id === editId;\n\n return {\n ...table,\n ...edit,\n formProps: {\n ...edit.formProps,\n onFinish: async (values) => {\n const result = await edit.onFinish(values);\n if (autoSubmitClose) {\n setId(undefined);\n }\n return result;\n },\n },\n saveButtonProps,\n cancelButtonProps,\n editButtonProps,\n isEditing,\n };\n};\n","import type { SelectProps } from \"antd/lib/select\";\nimport type { QueryObserverResult } from \"@tanstack/react-query\";\n\nimport {\n useSelect as useSelectCore,\n type BaseRecord,\n type GetManyResponse,\n type GetListResponse,\n type HttpError,\n type UseSelectProps,\n type BaseOption,\n} from \"@refinedev/core\";\n\nexport type UseSelectReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n selectProps: SelectProps<TOption>;\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n defaultValueQueryResult: QueryObserverResult<GetManyResponse<TData>>;\n};\n\n/**\n * `useSelect` hook allows you to manage an Ant Design {@link https://ant.design/components/select/ Select} component when records in a resource needs to be used as select options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useSelect/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSelect = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>(\n props: UseSelectProps<TQueryFnData, TError, TData>,\n): UseSelectReturnType<TData, TOption> => {\n const { queryResult, defaultValueQueryResult, onSearch, options } =\n useSelectCore<TQueryFnData, TError, TData, TOption>(props);\n\n return {\n selectProps: {\n options,\n onSearch,\n loading: defaultValueQueryResult.isFetching,\n showSearch: true,\n filterOption: false,\n },\n queryResult,\n defaultValueQueryResult,\n };\n};\n","import type { QueryObserverResult } from \"@tanstack/react-query\";\nimport type { Checkbox } from \"antd\";\n\nimport {\n type BaseRecord,\n type GetListResponse,\n type HttpError,\n type UseSelectProps,\n useSelect,\n type BaseKey,\n pickNotDeprecated,\n type BaseOption,\n} from \"@refinedev/core\";\n\nexport type UseCheckboxGroupReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n checkboxGroupProps: Omit<\n React.ComponentProps<typeof Checkbox.Group>,\n \"options\"\n > & {\n options: TOption[];\n };\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n};\n\ntype UseCheckboxGroupProps<TQueryFnData, TError, TData> = Omit<\n UseSelectProps<TQueryFnData, TError, TData>,\n \"defaultValue\"\n> & {\n /**\n * Sets the default value\n */\n defaultValue?: BaseKey[];\n};\n\n/**\n * `useCheckboxGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/checkbox/#components-checkbox-demo-group Checkbox.Group} component when records in a resource needs to be used as checkbox options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useCheckboxGroup/} for more details\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useCheckboxGroup = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: UseCheckboxGroupProps<\n TQueryFnData,\n TError,\n TData\n>): UseCheckboxGroupReturnType<TData, TOption> => {\n const { queryResult, options } = useSelect<\n TQueryFnData,\n TError,\n TData,\n TOption\n >({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n return {\n checkboxGroupProps: {\n options,\n defaultValue,\n },\n queryResult,\n };\n};\n","import type { QueryObserverResult } from \"@tanstack/react-query\";\nimport type { Radio } from \"antd\";\n\nimport {\n type BaseKey,\n type BaseOption,\n type BaseRecord,\n type GetListResponse,\n type HttpError,\n pickNotDeprecated,\n useSelect,\n type UseSelectProps,\n} from \"@refinedev/core\";\n\nexport type UseRadioGroupReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n radioGroupProps: Omit<React.ComponentProps<typeof Radio.Group>, \"options\"> & {\n options: TOption[];\n };\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n};\n\ntype UseRadioGroupProps<TQueryFnData, TError, TData> = Omit<\n UseSelectProps<TQueryFnData, TError, TData>,\n \"defaultValue\"\n> & {\n /**\n * Sets the default value\n */\n defaultValue?: BaseKey;\n};\n\n/**\n * `useRadioGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/radio/#components-radio-demo-radiogroup-with-name Radio.Group} component when records in a resource needs to be used as radio options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useRadioGroup/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useRadioGroup = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: UseRadioGroupProps<TQueryFnData, TError, TData>): UseRadioGroupReturnType<\n TData,\n TOption\n> => {\n const { queryResult, options } = useSelect<\n TQueryFnData,\n TError,\n TData,\n TOption\n >({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n\n return {\n radioGroupProps: {\n options,\n defaultValue,\n },\n queryResult,\n };\n};\n","import React from \"react\";\nimport {\n type ButtonProps,\n notification,\n type UploadProps,\n Progress,\n} from \"antd\";\nimport {\n useTranslate,\n useResource,\n type BaseRecord,\n type HttpError,\n useImport as useImportCore,\n type UseImportReturnType,\n type ImportOptions,\n pickNotDeprecated,\n} from \"@refinedev/core\";\n\n/**\n * `useImport` hook allows you to handle your csv import logic easily.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/import/useImport} for more details.\n *\n * @typeParam TItem - Interface of parsed csv data\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useImport = <\n TItem = any,\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = any,\n>({\n resource: resourceFromProp,\n resourceName,\n mapData = (item) => item as unknown as TVariables,\n paparseOptions,\n batchSize = Number.MAX_SAFE_INTEGER,\n onFinish,\n meta,\n metaData,\n dataProviderName,\n onProgress: onProgressFromProp,\n}: ImportOptions<TItem, TVariables, TData> = {}): Omit<\n UseImportReturnType<TData, TVariables, TError>,\n \"handleChange\" | \"inputProps\"\n> & {\n uploadProps: UploadProps;\n buttonProps: ButtonProps;\n} => {\n const t = useTranslate();\n\n const { resource } = useResource(resourceFromProp ?? resourceName);\n\n const { mutationResult, isLoading, handleChange } = useImportCore<\n TItem,\n TData,\n TError,\n TVariables\n >({\n resource: resource?.identifier ?? resource?.name,\n mapData,\n paparseOptions,\n batchSize,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n onFinish,\n onProgress:\n onProgressFromProp ??\n (({ totalAmount, processedAmount }) => {\n if (totalAmount > 0 && processedAmount > 0) {\n const description = (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"-7px\",\n }}\n >\n <Progress\n type=\"circle\"\n percent={Math.floor((processedAmount / totalAmount) * 100)}\n size={50}\n strokeColor=\"#1890ff\"\n status=\"normal\"\n />\n <span style={{ marginLeft: 8, width: \"100%\" }}>\n {t(\n \"notifications.importProgress\",\n {\n processed: processedAmount,\n total: totalAmount,\n },\n `Importing: ${processedAmount}/${totalAmount}`,\n )}\n </span>\n </div>\n );\n\n notification.open({\n description,\n message: null,\n key: `${resource}-import`,\n duration: 0,\n });\n\n if (processedAmount >= totalAmount) {\n }\n\n if (processedAmount === totalAmount) {\n setTimeout(() => {\n notification.destroy(`${resource}-import`);\n }, 4500);\n }\n }\n }),\n });\n\n return {\n uploadProps: {\n onChange: handleChange,\n beforeUpload: () => false,\n showUploadList: false,\n accept: \".csv\",\n },\n buttonProps: {\n type: \"default\",\n loading: isLoading,\n },\n mutationResult,\n isLoading,\n };\n};\n","import { Children, createElement, Fragment } from \"react\";\nimport { type ListProps, type FormProps, Form, Grid } from \"antd\";\n\nimport {\n type BaseRecord,\n type CrudFilters,\n type HttpError,\n useTable as useTableCore,\n type useTableProps as useTablePropsCore,\n type useTableReturnType,\n pickNotDeprecated,\n} from \"@refinedev/core\";\nimport { useLiveMode } from \"@refinedev/core\";\nimport { PaginationLink } from \"@hooks/table/useTable/paginationLink\";\nimport type { PaginationConfig } from \"antd/lib/pagination\";\n\nexport type useSimpleListProps<TQueryFnData, TError, TSearchVariables, TData> =\n useTablePropsCore<TQueryFnData, TError, TData> & {\n onSearch?: (data: TSearchVariables) => CrudFilters | Promise<CrudFilters>;\n };\n\nexport type useSimpleListReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = Omit<useTableReturnType<TData>, \"tableQueryResult\"> & {\n listProps: ListProps<TData>;\n queryResult: useTableReturnType[\"tableQueryResult\"];\n searchFormProps: FormProps<TSearchVariables>;\n};\n\n/**\n * By using `useSimpleList` you get props for your records from API in accordance with Ant Design {@link https://ant.design/components/list/ `<List>`} component.\n * All features such as pagination, sorting come out of the box.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/list/useSimpleList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TSearchVariables - Antd form values\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSimpleList = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource,\n initialCurrent,\n initialPageSize,\n pagination,\n hasPagination = true,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n defaultSetFilterBehavior,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n onSearch,\n queryOptions,\n syncWithLocation,\n successNotification,\n errorNotification,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: useSimpleListProps<\n TQueryFnData,\n TError,\n TSearchVariables,\n TData\n> = {}): useSimpleListReturnType<TData, TSearchVariables> => {\n const {\n sorters,\n sorter,\n filters,\n current,\n pageSize,\n pageCount,\n setFilters,\n setCurrent,\n setPageSize,\n setSorter,\n setSorters,\n createLinkForSyncWithLocation,\n tableQueryResult: queryResult,\n overtime,\n } = useTableCore({\n resource,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n defaultSetFilterBehavior,\n initialCurrent,\n initialPageSize,\n queryOptions,\n successNotification,\n errorNotification,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n syncWithLocation,\n dataProviderName,\n pagination,\n hasPagination,\n });\n\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n\n const breakpoint = Grid.useBreakpoint();\n\n const liveMode = useLiveMode(liveModeFromProp);\n\n const [form] = Form.useForm<TSearchVariables>();\n\n const { data, isFetched, isLoading } = queryResult;\n\n const onChange = (page: number, pageSize?: number): void => {\n if (isPaginationEnabled) {\n setCurrent(page);\n setPageSize(pageSize || 10);\n }\n };\n\n const onFinish = async (values: TSearchVariables) => {\n if (onSearch) {\n const searchFilters = await onSearch(values);\n if (isPaginationEnabled) {\n setCurrent?.(1);\n }\n return setFilters(searchFilters);\n }\n };\n\n const antdPagination = (): false | PaginationConfig => {\n if (isPaginationEnabled) {\n return {\n itemRender: (page, type, element) => {\n const link = createLinkForSyncWithLocation({\n pagination: {\n pageSize,\n current: page,\n },\n sorters,\n filters,\n });\n\n if (type === \"page\") {\n return createElement(PaginationLink, {\n to: link,\n element: `${page}`,\n });\n }\n if (type === \"next\" || type === \"prev\") {\n return createElement(PaginationLink, {\n to: link,\n element: element,\n });\n }\n\n if (type === \"jump-next\" || type === \"jump-prev\") {\n const elementChildren = (element as React.ReactElement)?.props\n ?.children;\n\n return createElement(PaginationLink, {\n to: link,\n element:\n Children.count(elementChildren) > 1\n ? createElement(Fragment, {}, elementChildren)\n : elementChildren,\n });\n }\n\n return element;\n },\n pageSize,\n current,\n simple: !breakpoint.sm,\n total: data?.total,\n onChange,\n };\n }\n\n return false;\n };\n\n return {\n searchFormProps: {\n form,\n onFinish,\n },\n listProps: {\n dataSource: data?.data,\n loading: liveMode === \"auto\" ? isLoading : !isFetched,\n pagination: antdPagination(),\n },\n queryResult,\n filters,\n setFilters,\n sorter,\n setSorter,\n sorters,\n setSorters,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount,\n createLinkForSyncWithLocation,\n overtime,\n };\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport type { UploadChangeParam } from \"antd/lib/upload\";\n\nexport type UseFileUploadStateType = () => {\n isLoading: boolean;\n onChange: (info: UploadChangeParam) => void;\n};\n\nexport const useFileUploadState: UseFileUploadStateType = () => {\n const [isLoading, setIsloading] = useState(false);\n\n const onChange = useCallback((info: UploadChangeParam) => {\n const fileListLoadings = mapStatusToLoading(info.fileList);\n\n if (fileListLoadings.includes(true)) {\n setIsloading(true);\n } else {\n setIsloading(false);\n }\n }, []);\n\n return useMemo(() => ({ isLoading, onChange }), [isLoading]);\n};\n\nconst mapStatusToLoading = (files: UploadChangeParam[\"fileList\"]) => {\n return files.map((file) => {\n switch (file.status) {\n case \"uploading\":\n return true;\n default:\n return false;\n }\n });\n};\n","import { useContext } from \"react\";\n\nimport { ThemedLayoutContext } from \"@contexts\";\n\nexport type UseSiderVisibleType = {\n siderVisible: boolean;\n drawerSiderVisible: boolean;\n setSiderVisible: (visible: boolean) => void;\n setDrawerSiderVisible: (visible: boolean) => void;\n};\n\n/**\n * @deprecated Please use `useThemedLayoutContext` instead.\n */\nexport const useSiderVisible = (): UseSiderVisibleType => {\n const {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n } = useContext(ThemedLayoutContext);\n\n return {\n siderVisible: mobileSiderOpen,\n setSiderVisible: setMobileSiderOpen,\n drawerSiderVisible: siderCollapsed,\n setDrawerSiderVisible: setSiderCollapsed,\n };\n};\n","import React, { type ReactNode, useState } from \"react\";\n\nimport type { IThemedLayoutContext } from \"./IThemedLayoutContext\";\n\nexport const ThemedLayoutContext = React.createContext<IThemedLayoutContext>({\n siderCollapsed: false,\n mobileSiderOpen: false,\n setSiderCollapsed: () => undefined,\n setMobileSiderOpen: () => undefined,\n});\n\nexport const ThemedLayoutContextProvider: React.FC<{\n children: ReactNode;\n initialSiderCollapsed?: boolean;\n}> = ({ children, initialSiderCollapsed }) => {\n const [siderCollapsed, setSiderCollapsed] = useState(\n initialSiderCollapsed ?? false,\n );\n const [mobileSiderOpen, setMobileSiderOpen] = useState(false);\n\n return (\n <ThemedLayoutContext.Provider\n value={{\n siderCollapsed,\n mobileSiderOpen,\n setSiderCollapsed,\n setMobileSiderOpen,\n }}\n >\n {children}\n </ThemedLayoutContext.Provider>\n );\n};\n","import { useContext } from \"react\";\n\nimport { ThemedLayoutContext } from \"@contexts\";\nimport type { IThemedLayoutContext } from \"@contexts/themedLayoutContext/IThemedLayoutContext\";\n\nexport type UseThemedLayoutContextType = IThemedLayoutContext;\n\nexport const useThemedLayoutContext = (): UseThemedLayoutContextType => {\n const {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n } = useContext(ThemedLayoutContext);\n\n return {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n };\n};\n","import type { NotificationProvider } from \"@refinedev/core\";\nimport { App, notification as staticNotification } from \"antd\";\nimport React from \"react\";\n\nimport { UndoableNotification } from \"@components/undoableNotification\";\n\n/**\n * @deprecated `notificationProvider` is deprecated due to not being compatible with theme changes in Ant Design. Please use `useNotificationProvider` export as your notification provider.\n * @see https://refine.dev/docs/api-reference/antd/theming/#usenotificationprovider-compatible-with-theme\n */\n\nexport const notificationProvider: NotificationProvider = {\n open: ({\n key,\n message,\n description,\n type,\n cancelMutation,\n undoableTimeout,\n }) => {\n if (type === \"progress\") {\n staticNotification.open({\n key,\n description: (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={() => {\n cancelMutation?.();\n staticNotification.destroy(key ?? \"\");\n }}\n undoableTimeout={undoableTimeout}\n />\n ),\n message: null,\n duration: 0,\n closeIcon: <></>,\n });\n } else {\n staticNotification.open({\n key,\n description: message,\n message: description ?? null,\n type,\n });\n }\n },\n close: (key) => staticNotification.destroy(key),\n};\n\nexport const useNotificationProvider = (): NotificationProvider => {\n const { notification: notificationFromContext } = App.useApp();\n const notification =\n \"open\" in notificationFromContext\n ? notificationFromContext\n : staticNotification;\n\n const notificationProvider: NotificationProvider = {\n open: ({\n key,\n message,\n description,\n type,\n cancelMutation,\n undoableTimeout,\n }) => {\n if (type === \"progress\") {\n notification.open({\n key,\n description: (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={() => {\n cancelMutation?.();\n notification.destroy(key ?? \"\");\n }}\n undoableTimeout={undoableTimeout}\n />\n ),\n message: null,\n duration: 0,\n closeIcon: <></>,\n });\n } else {\n notification.open({\n key,\n description: message,\n message: description ?? null,\n type,\n });\n }\n },\n close: (key) => notification.destroy(key),\n };\n\n return notificationProvider;\n};\n","import React from \"react\";\nimport { Button, Progress } from \"antd\";\nimport type { OpenNotificationParams } from \"@refinedev/core\";\nimport { UndoOutlined } from \"@ant-design/icons\";\n\nexport type UndoableNotificationProps = {\n notificationKey: OpenNotificationParams[\"key\"];\n message: OpenNotificationParams[\"message\"];\n cancelMutation: OpenNotificationParams[\"cancelMutation\"];\n undoableTimeout: OpenNotificationParams[\"undoableTimeout\"];\n};\n\nexport const UndoableNotification: React.FC<UndoableNotificationProps> = ({\n message,\n cancelMutation,\n undoableTimeout,\n}) => (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"-7px\",\n }}\n >\n <Progress\n type=\"circle\"\n percent={(undoableTimeout ?? 0) * 20}\n format={(time) => time && time / 20}\n size={50}\n strokeColor=\"#1890ff\"\n status=\"normal\"\n />\n <span style={{ marginLeft: 8, width: \"100%\" }}>{message}</span>\n <Button\n style={{ flexShrink: 0 }}\n onClick={cancelMutation}\n disabled={undoableTimeout === 0}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<UndoOutlined />}\n />\n </div>\n);\n","import React from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { Sider as DefaultSider } from \"./sider\";\nimport { Header as DefaultHeader } from \"./header\";\nimport type { RefineLayoutLayoutProps } from \"./types\";\n\n/**\n * @deprecated use `<ThemedLayout>` instead with 100% backward compatibility.\n * @see https://refine.dev/docs/api-reference/antd/components/antd-themed-layout\n **/\nexport const Layout: React.FC<RefineLayoutLayoutProps> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n\n return (\n <AntdLayout style={{ minHeight: \"100vh\" }}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n );\n};\n","import React, { useState } from \"react\";\nimport { Layout, Menu, Grid, ConfigProvider, Drawer, Button } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n type ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { Title as DefaultTitle } from \"@components\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport type { RefineLayoutSiderProps } from \"../types\";\n\nexport const Sider: React.FC<RefineLayoutSiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n}) => {\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const [drawerOpen, setDrawerOpen] = useState<boolean>(false);\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? DefaultTitle;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n style={{\n fontWeight: isSelected ? \"bold\" : \"normal\",\n }}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n >\n <Link to={route ?? \"\"}>{label}</Link>\n {!collapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <Menu.Item key=\"logout\" onClick={handleLogout} icon={<LogoutOutlined />}>\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n <Menu.Item\n key=\"dashboard\"\n style={{\n fontWeight: selectedKey === \"/\" ? \"bold\" : \"normal\",\n }}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<DashboardOutlined />}\n >\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!collapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <>\n <Menu\n theme=\"dark\"\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n onClick={() => {\n setDrawerOpen(false);\n if (!breakpoint.lg) {\n setCollapsed(true);\n }\n }}\n >\n {renderSider()}\n </Menu>\n </>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <RenderToTitle collapsed={false} />\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setDrawerOpen(true)}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n const renderContent = () => {\n if (isMobile) {\n return renderDrawerSider();\n }\n\n return (\n <Layout.Sider\n collapsible\n collapsed={collapsed}\n onCollapse={(collapsed: boolean): void => setCollapsed(collapsed)}\n collapsedWidth={80}\n breakpoint=\"lg\"\n >\n <RenderToTitle collapsed={collapsed} />\n {renderMenu()}\n </Layout.Sider>\n );\n };\n\n return (\n <ConfigProvider\n theme={{\n components: {\n Menu: {\n colorItemBg: \"transparent\",\n colorItemText: \"#fff\",\n colorItemTextSelected: \"#fff\",\n colorItemBgSelected: \"transparent\",\n colorItemTextHover: \"#fff\",\n },\n },\n }}\n >\n {renderContent()}\n </ConfigProvider>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import { useActiveAuthProvider, useGetIdentity } from \"@refinedev/core\";\nimport { Avatar, Layout as AntdLayout, Space, Typography } from \"antd\";\nimport React from \"react\";\nimport type { RefineLayoutHeaderProps } from \"../types\";\n\nexport const Header: React.FC<RefineLayoutHeaderProps> = () => {\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n return shouldRenderHeader ? (\n <AntdLayout.Header\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n }}\n >\n <Space style={{ marginLeft: \"8px\" }}>\n {user?.name && (\n <Typography.Text style={{ color: \"white\" }} strong>\n {user.name}\n </Typography.Text>\n )}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </AntdLayout.Header>\n ) : null;\n};\n","import React from \"react\";\nimport {\n type TitleProps,\n useRouterContext,\n useRouterType,\n useLink,\n} from \"@refinedev/core\";\n\nexport const Title: React.FC<TitleProps> = ({ collapsed }) => {\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink to=\"/\">\n {collapsed ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine-mini.svg\"\n alt=\"Refine\"\n style={{\n margin: \"0 auto\",\n padding: \"12px 0\",\n maxHeight: \"65.5px\",\n }}\n />\n </div>\n ) : (\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine\"\n style={{\n width: \"200px\",\n padding: \"12px 24px\",\n }}\n />\n )}\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { ThemedSider as DefaultSider } from \"./sider\";\nimport { ThemedHeader as DefaultHeader } from \"./header\";\nimport type { RefineThemedLayoutProps } from \"./types\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedLayout: React.FC<RefineThemedLayoutProps> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n\n return (\n <AntdLayout style={{ minHeight: \"100vh\" }}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n );\n};\n","import React, { useState } from \"react\";\nimport { Layout, Menu, Grid, Drawer, Button, theme } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n LeftOutlined,\n RightOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n type ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport type { RefineThemedLayoutSiderProps } from \"../types\";\nimport { ThemedTitle } from \"@components\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedSider: React.FC<RefineThemedLayoutSiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n}) => {\n const { token } = theme.useToken();\n\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const [drawerOpen, setDrawerOpen] = useState<boolean>(false);\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? ThemedTitle;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n >\n <Link to={route ?? \"\"}>{label}</Link>\n {!collapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item\n key=\"logout\"\n onClick={() => handleLogout()}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<LogoutOutlined />}\n >\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <Menu.Item key=\"dashboard\" icon={<DashboardOutlined />}>\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!collapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <>\n <Menu\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n style={{\n marginTop: \"8px\",\n border: \"none\",\n }}\n onClick={() => {\n setDrawerOpen(false);\n if (!breakpoint.lg) {\n setCollapsed(true);\n }\n }}\n >\n {renderSider()}\n </Menu>\n </>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider\n style={{\n height: \"100vh\",\n overflow: \"hidden\",\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n >\n <div\n style={{\n width: \"200px\",\n padding: \"0 16px\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n <RenderToTitle collapsed={false} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setDrawerOpen(true)}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n if (isMobile) {\n return renderDrawerSider();\n }\n\n return (\n <Layout.Sider\n style={{\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n collapsible\n collapsed={collapsed}\n onCollapse={(collapsed) => setCollapsed(collapsed)}\n collapsedWidth={80}\n breakpoint=\"lg\"\n trigger={\n <Button\n type=\"text\"\n style={{\n borderRadius: 0,\n height: \"100%\",\n width: \"100%\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n {collapsed ? (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <RightOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n ) : (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <LeftOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n )}\n </Button>\n }\n >\n <div\n style={{\n width: collapsed ? \"80px\" : \"200px\",\n padding: collapsed ? \"0\" : \"0 16px\",\n display: \"flex\",\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n fontSize: \"14px\",\n }}\n >\n <RenderToTitle collapsed={collapsed} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import React from \"react\";\nimport { Layout as AntdLayout, Typography, Avatar, Space, theme } from \"antd\";\nimport { useActiveAuthProvider, useGetIdentity } from \"@refinedev/core\";\nimport type { RefineThemedLayoutHeaderProps } from \"../types\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedHeader: React.FC<RefineThemedLayoutHeaderProps> = () => {\n const { token } = theme.useToken();\n\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n if (!shouldRenderHeader) {\n return null;\n }\n\n return (\n <AntdLayout.Header\n style={{\n backgroundColor: token.colorBgElevated,\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n }}\n >\n <Space>\n <Space size=\"middle\">\n {user?.name && <Typography.Text strong>{user.name}</Typography.Text>}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </Space>\n </AntdLayout.Header>\n );\n};\n","import React from \"react\";\nimport { useRouterContext, useRouterType, useLink } from \"@refinedev/core\";\nimport { Typography, theme, Space } from \"antd\";\nimport type { RefineLayoutThemedTitleProps } from \"../types\";\n\nconst defaultText = \"Refine Project\";\n\nconst defaultIcon = (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"refine-logo\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.7889 0.422291C12.6627 -0.140764 11.3373 -0.140764 10.2111 0.422291L2.21115 4.42229C0.85601 5.09986 0 6.48491 0 8V16C0 17.5151 0.85601 18.9001 2.21115 19.5777L10.2111 23.5777C11.3373 24.1408 12.6627 24.1408 13.7889 23.5777L21.7889 19.5777C23.144 18.9001 24 17.5151 24 16V8C24 6.48491 23.144 5.09986 21.7889 4.42229L13.7889 0.422291ZM8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8V16C16 18.2091 14.2091 20 12 20C9.79086 20 8 18.2091 8 16V8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M14 8C14 9.10457 13.1046 10 12 10C10.8954 10 10 9.10457 10 8C10 6.89543 10.8954 6 12 6C13.1046 6 14 6.89543 14 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedTitle: React.FC<RefineLayoutThemedTitleProps> = ({\n collapsed,\n icon = defaultIcon,\n text = defaultText,\n wrapperStyles,\n}) => {\n const { token } = theme.useToken();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to=\"/\"\n style={{\n display: \"inline-block\",\n textDecoration: \"none\",\n }}\n >\n <Space\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"inherit\",\n ...wrapperStyles,\n }}\n >\n <div\n style={{\n height: \"24px\",\n width: \"24px\",\n color: token.colorPrimary,\n }}\n >\n {icon}\n </div>\n\n {!collapsed && (\n <Typography.Title\n style={{\n fontSize: \"inherit\",\n marginBottom: 0,\n fontWeight: 700,\n }}\n >\n {text}\n </Typography.Title>\n )}\n </Space>\n </ActiveLink>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { ThemedSiderV2 as DefaultSider } from \"./sider\";\nimport { ThemedHeaderV2 as DefaultHeader } from \"./header\";\nimport type { RefineThemedLayoutV2Props } from \"./types\";\nimport { ThemedLayoutContextProvider } from \"@contexts\";\n\nexport const ThemedLayoutV2: React.FC<RefineThemedLayoutV2Props> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n initialSiderCollapsed,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n const hasSider = !!SiderToRender({ Title });\n\n return (\n <ThemedLayoutContextProvider initialSiderCollapsed={initialSiderCollapsed}>\n <AntdLayout style={{ minHeight: \"100vh\" }} hasSider={hasSider}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n </ThemedLayoutContextProvider>\n );\n};\n","import React, { useContext } from \"react\";\nimport {\n Layout,\n Menu,\n Grid,\n Drawer,\n Button,\n theme,\n ConfigProvider,\n} from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n LeftOutlined,\n RightOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n type ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport type { RefineThemedLayoutV2SiderProps } from \"../types\";\nimport { ThemedTitleV2 } from \"@components\";\nimport { useThemedLayoutContext } from \"@hooks\";\n\nexport const ThemedSiderV2: React.FC<RefineThemedLayoutV2SiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n fixed,\n activeItemDisabled = false,\n}) => {\n const { token } = theme.useToken();\n const {\n siderCollapsed,\n setSiderCollapsed,\n mobileSiderOpen,\n setMobileSiderOpen,\n } = useThemedLayoutContext();\n\n const isExistAuthentication = useIsExistAuthentication();\n const direction = useContext(ConfigProvider.ConfigContext)?.direction;\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? ThemedTitleV2;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n\n const linkStyle: React.CSSProperties =\n activeItemDisabled && isSelected ? { pointerEvents: \"none\" } : {};\n\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n style={linkStyle}\n >\n <Link to={route ?? \"\"} style={linkStyle}>\n {label}\n </Link>\n {!siderCollapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item\n key=\"logout\"\n onClick={() => handleLogout()}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<LogoutOutlined />}\n >\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <Menu.Item key=\"dashboard\" icon={<DashboardOutlined />}>\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!siderCollapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed: siderCollapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <Menu\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n style={{\n paddingTop: \"8px\",\n border: \"none\",\n overflow: \"auto\",\n height: \"calc(100% - 72px)\",\n }}\n onClick={() => {\n setMobileSiderOpen(false);\n }}\n >\n {renderSider()}\n </Menu>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={mobileSiderOpen}\n onClose={() => setMobileSiderOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider\n style={{\n height: \"100vh\",\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n >\n <div\n style={{\n width: \"200px\",\n padding: \"0 16px\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n <RenderToTitle collapsed={false} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setMobileSiderOpen(true)}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n if (isMobile) {\n return renderDrawerSider();\n }\n\n const siderStyles: React.CSSProperties = {\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n };\n\n if (fixed) {\n siderStyles.position = \"fixed\";\n siderStyles.top = 0;\n siderStyles.height = \"100vh\";\n siderStyles.zIndex = 999;\n }\n const renderClosingIcons = () => {\n const iconProps = { style: { color: token.colorPrimary } };\n const OpenIcon = direction === \"rtl\" ? RightOutlined : LeftOutlined;\n const CollapsedIcon = direction === \"rtl\" ? LeftOutlined : RightOutlined;\n const IconComponent = siderCollapsed ? CollapsedIcon : OpenIcon;\n\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n return <IconComponent {...iconProps} />;\n };\n\n return (\n <>\n {fixed && (\n <div\n style={{\n width: siderCollapsed ? \"80px\" : \"200px\",\n transition: \"all 0.2s\",\n }}\n />\n )}\n <Layout.Sider\n style={siderStyles}\n collapsible\n collapsed={siderCollapsed}\n onCollapse={(collapsed, type) => {\n if (type === \"clickTrigger\") {\n setSiderCollapsed(collapsed);\n }\n }}\n collapsedWidth={80}\n breakpoint=\"lg\"\n trigger={\n <Button\n type=\"text\"\n style={{\n borderRadius: 0,\n height: \"100%\",\n width: \"100%\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n {renderClosingIcons()}\n </Button>\n }\n >\n <div\n style={{\n width: siderCollapsed ? \"80px\" : \"200px\",\n padding: siderCollapsed ? \"0\" : \"0 16px\",\n display: \"flex\",\n justifyContent: siderCollapsed ? \"center\" : \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n fontSize: \"14px\",\n }}\n >\n <RenderToTitle collapsed={siderCollapsed} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import React from \"react\";\nimport { Layout as AntdLayout, Typography, Avatar, Space, theme } from \"antd\";\nimport {\n pickNotDeprecated,\n useActiveAuthProvider,\n useGetIdentity,\n} from \"@refinedev/core\";\nimport type { RefineThemedLayoutV2HeaderProps } from \"../types\";\n\nexport const ThemedHeaderV2: React.FC<RefineThemedLayoutV2HeaderProps> = ({\n isSticky,\n sticky,\n}) => {\n const { token } = theme.useToken();\n\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n if (!shouldRenderHeader) {\n return null;\n }\n\n const headerStyles: React.CSSProperties = {\n backgroundColor: token.colorBgElevated,\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n };\n\n if (pickNotDeprecated(sticky, isSticky)) {\n headerStyles.position = \"sticky\";\n headerStyles.top = 0;\n headerStyles.zIndex = 1;\n }\n\n return (\n <AntdLayout.Header style={headerStyles}>\n <Space>\n <Space size=\"middle\">\n {user?.name && <Typography.Text strong>{user.name}</Typography.Text>}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </Space>\n </AntdLayout.Header>\n );\n};\n","import React from \"react\";\nimport {\n useRouterContext,\n useRouterType,\n useLink,\n useRefineOptions,\n} from \"@refinedev/core\";\nimport { Typography, theme, Space } from \"antd\";\nimport type { RefineLayoutThemedTitleProps } from \"../types\";\n\nexport const ThemedTitleV2: React.FC<RefineLayoutThemedTitleProps> = ({\n collapsed,\n icon: iconFromProps,\n text: textFromProps,\n wrapperStyles,\n}) => {\n const {\n title: { icon: defaultIcon, text: defaultText } = {},\n } = useRefineOptions();\n const icon =\n typeof iconFromProps === \"undefined\" ? defaultIcon : iconFromProps;\n const text =\n typeof textFromProps === \"undefined\" ? defaultText : textFromProps;\n const { token } = theme.useToken();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to=\"/\"\n style={{\n display: \"inline-block\",\n textDecoration: \"none\",\n }}\n >\n <Space\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"inherit\",\n ...wrapperStyles,\n }}\n >\n <div\n style={{\n height: \"24px\",\n width: \"24px\",\n color: token.colorPrimary,\n }}\n >\n {icon}\n </div>\n\n {!collapsed && (\n <Typography.Title\n style={{\n fontSize: \"inherit\",\n marginBottom: 0,\n fontWeight: 700,\n }}\n >\n {text}\n </Typography.Title>\n )}\n </Space>\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { PlusSquareOutlined } from \"@ant-design/icons\";\nimport { useCreateButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { CreateButtonProps } from \"../types\";\n\n/**\n * <CreateButton> uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#create `create`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful to redirect the app to the create page route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/create-button} for more details.\n */\nexport const CreateButton: React.FC<CreateButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useCreateButton(\n {\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n accessControl,\n meta,\n },\n );\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<PlusSquareOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.CreateButton}\n className={RefineButtonClassNames.CreateButton}\n type=\"primary\"\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { EditOutlined } from \"@ant-design/icons\";\nimport { useEditButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { EditButtonProps } from \"../types\";\n\n/**\n * `<EditButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#edit `edit`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the edit page with the record id route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/edit-button} for more details.\n */\nexport const EditButton: React.FC<EditButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, label, title, hidden, disabled, LinkComponent } = useEditButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n meta,\n accessControl,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<EditOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.EditButton}\n className={RefineButtonClassNames.EditButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button, Popconfirm } from \"antd\";\nimport { DeleteOutlined } from \"@ant-design/icons\";\nimport { useDeleteButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { DeleteButtonProps } from \"../types\";\n\n/**\n * `<DeleteButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/button/ `<Popconfirm>`} components.\n * When you try to delete something, a pop-up shows up and asks for confirmation. When confirmed it executes the `useDelete` method provided by your `dataProvider`.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/delete-button} for more details.\n */\nexport const DeleteButton: React.FC<DeleteButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n children,\n successNotification,\n errorNotification,\n hideText = false,\n accessControl,\n metaData,\n meta,\n dataProviderName,\n confirmTitle,\n confirmOkText,\n confirmCancelText,\n invalidates,\n ...rest\n}) => {\n const {\n title,\n label,\n hidden,\n disabled,\n loading,\n confirmTitle: defaultConfirmTitle,\n confirmOkLabel: defaultConfirmOkLabel,\n cancelLabel: defaultCancelLabel,\n onConfirm,\n } = useDeleteButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n dataProviderName,\n invalidates,\n meta,\n onSuccess,\n mutationMode: mutationModeProp,\n errorNotification,\n successNotification,\n accessControl,\n });\n\n if (hidden) return null;\n\n return (\n <Popconfirm\n key=\"delete\"\n okText={confirmOkText ?? defaultConfirmOkLabel}\n cancelText={confirmCancelText ?? defaultCancelLabel}\n okType=\"danger\"\n title={confirmTitle ?? defaultConfirmTitle}\n okButtonProps={{ disabled: loading }}\n onConfirm={onConfirm}\n disabled={\n typeof rest?.disabled !== \"undefined\" ? rest.disabled : disabled\n }\n >\n <Button\n danger\n loading={loading}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<DeleteOutlined />}\n title={title}\n disabled={disabled}\n data-testid={RefineButtonTestIds.DeleteButton}\n className={RefineButtonClassNames.DeleteButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </Popconfirm>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { RedoOutlined } from \"@ant-design/icons\";\nimport { useRefreshButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { RefreshButtonProps } from \"../types\";\n\n/**\n * `<RefreshButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component\n * to update the data shown on the page via the {@link https://refine.dev/docs/api-reference/core/hooks/invalidate/useInvalidate `useInvalidate`} hook.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/refresh-button} for more details.\n */\nexport const RefreshButton: React.FC<RefreshButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n dataProviderName,\n children,\n meta: _meta,\n metaData: _metaData,\n ...rest\n}) => {\n const { onClick, label, loading } = useRefreshButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n dataProviderName,\n });\n\n return (\n <Button\n onClick={onClick}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<RedoOutlined spin={loading} />}\n data-testid={RefineButtonTestIds.RefreshButton}\n className={RefineButtonClassNames.RefreshButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { EyeOutlined } from \"@ant-design/icons\";\nimport { useShowButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ShowButtonProps } from \"../types\";\n\n/**\n * `<ShowButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#show `show`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the show page with the record id route of resource.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/show-button} for more details.\n */\nexport const ShowButton: React.FC<ShowButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, label, title, hidden, disabled, LinkComponent } = useShowButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n accessControl,\n meta,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<EyeOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.ShowButton}\n className={RefineButtonClassNames.ShowButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { BarsOutlined } from \"@ant-design/icons\";\nimport { useListButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ListButtonProps } from \"../types\";\n\n/**\n * `<ListButton>` is using Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#list `list`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the list page route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/list-button} for more details.\n */\nexport const ListButton: React.FC<ListButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, label, title, hidden, disabled, LinkComponent } = useListButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n accessControl,\n meta,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.ListButton}\n className={RefineButtonClassNames.ListButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { ExportOutlined } from \"@ant-design/icons\";\nimport { useExportButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ExportButtonProps } from \"../types\";\n\n/**\n * `<ExportButton>` is an Ant Design {@link https://ant.design/components/button/ `<Button>`} with a default export icon and a default text with \"Export\".\n * It only has presentational value.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/export-button} for more details.\n */\nexport const ExportButton: React.FC<ExportButtonProps> = ({\n hideText = false,\n children,\n ...rest\n}) => {\n const { label } = useExportButton();\n\n return (\n <Button\n type=\"default\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<ExportOutlined />}\n data-testid={RefineButtonTestIds.ExportButton}\n className={RefineButtonClassNames.ExportButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { SaveOutlined } from \"@ant-design/icons\";\nimport { useSaveButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { SaveButtonProps } from \"../types\";\n\n/**\n * `<SaveButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses it for presantation purposes only. Some of the hooks that refine has adds features to this button.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/save-button} for more details.\n */\nexport const SaveButton: React.FC<SaveButtonProps> = ({\n hideText = false,\n children,\n ...rest\n}) => {\n const { label } = useSaveButton();\n\n return (\n <Button\n type=\"primary\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<SaveOutlined />}\n data-testid={RefineButtonTestIds.SaveButton}\n className={RefineButtonClassNames.SaveButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { PlusSquareOutlined } from \"@ant-design/icons\";\nimport { useCloneButton } from \"@refinedev/core\";\nimport {\n RefineButtonTestIds,\n RefineButtonClassNames,\n} from \"@refinedev/ui-types\";\n\nimport type { CloneButtonProps } from \"../types\";\n\n/**\n * `<CloneButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#clone `clone`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation useNavigation} under the hood.\n * It can be useful when redirecting the app to the create page with the record id route of resource.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/clone-button} for more details.\n */\nexport const CloneButton: React.FC<CloneButtonProps> = ({\n resourceNameOrRouteName: propResourceNameOrRouteName,\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, LinkComponent, label, disabled, hidden, title } = useCloneButton({\n id: recordItemId,\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n accessControl,\n meta,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<PlusSquareOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.CloneButton}\n className={RefineButtonClassNames.CloneButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button, Upload } from \"antd\";\nimport { ImportOutlined } from \"@ant-design/icons\";\nimport { useImportButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ImportButtonProps } from \"../types\";\n\n/**\n * `<ImportButton>` is compatible with the {@link https://refine.dev/docs/api-reference/antd/hooks/import/useImport `useImport`} hook and is meant to be used as it's upload button.\n * It uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/upload/ `<Upload>`} components.\n * It wraps a `<Button>` component with an `<Upload>` component and accepts properties for `<Button>` and `<Upload>` components separately.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/import-button} for more details.\n */\nexport const ImportButton: React.FC<ImportButtonProps> = ({\n uploadProps,\n buttonProps,\n hideText = false,\n children,\n loading,\n}) => {\n const { label } = useImportButton();\n\n return (\n <Upload {...uploadProps}>\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<ImportOutlined />}\n data-testid={RefineButtonTestIds.ImportButton}\n className={RefineButtonClassNames.ImportButton}\n loading={loading}\n {...buttonProps}\n >\n {!hideText && (children ?? label)}\n </Button>\n </Upload>\n );\n};\n","import React from \"react\";\nimport { Space } from \"antd\";\nimport {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useResource,\n} from \"@refinedev/core\";\n\nimport {\n Breadcrumb,\n CreateButton,\n type CreateButtonProps,\n PageHeader,\n} from \"@components\";\nimport type { ListProps } from \"../types\";\n\n/**\n * `<List>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/list} for more details.\n */\nexport const List: React.FC<ListProps> = ({\n canCreate,\n title,\n children,\n createButtonProps: createButtonPropsFromProps,\n resource: resourceFromProps,\n wrapperProps,\n contentProps,\n headerProps,\n breadcrumb: breadcrumbFromProps,\n headerButtonProps,\n headerButtons,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const getUserFriendlyName = useUserFriendlyName();\n\n const { resource, identifier } = useResource(resourceFromProps);\n\n const isCreateButtonVisible =\n canCreate ??\n ((resource?.canCreate ?? !!resource?.create) || createButtonPropsFromProps);\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const createButtonProps: CreateButtonProps | undefined = isCreateButtonVisible\n ? {\n size: \"middle\",\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n ...createButtonPropsFromProps,\n }\n : undefined;\n\n const defaultExtra = isCreateButtonVisible ? (\n <CreateButton {...createButtonProps} />\n ) : null;\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n title={\n title ??\n translate(\n `${identifier}.titles.list`,\n getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"plural\",\n ),\n )\n }\n extra={\n headerButtons ? (\n <Space wrap {...headerButtonProps}>\n {typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultExtra,\n createButtonProps,\n })\n : headerButtons}\n </Space>\n ) : (\n defaultExtra\n )\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <div {...(contentProps ?? {})}>{children}</div>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useResource,\n useBack,\n} from \"@refinedev/core\";\n\nimport {\n Breadcrumb,\n SaveButton,\n PageHeader,\n type SaveButtonProps,\n} from \"@components\";\nimport type { CreateProps } from \"../types\";\n\n/**\n * `<Create>` provides us a layout to display the page.\n * It does not contain any logic but adds extra functionalities like action buttons and giving titles to the page.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/create} for more details.\n */\nexport const Create: React.FC<CreateProps> = ({\n title,\n saveButtonProps: saveButtonPropsFromProps,\n children,\n resource: resourceFromProps,\n isLoading = false,\n breadcrumb: breadcrumbFromProps,\n wrapperProps,\n headerProps,\n contentProps,\n headerButtonProps,\n headerButtons,\n footerButtonProps,\n footerButtons,\n goBack: goBackFromProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const back = useBack();\n const { goBack } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const { resource, action, identifier } = useResource(resourceFromProps);\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n htmlType: \"submit\",\n };\n\n const defaultFooterButtons = (\n <>\n <SaveButton {...saveButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" || typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.create`,\n `Create ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n extra={\n <Space wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: null,\n })\n : headerButtons\n : null}\n </Space>\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={[\n <Space\n key=\"action-buttons\"\n style={{ float: \"right\", marginRight: 24 }}\n {...(footerButtonProps ?? {})}\n >\n {footerButtons\n ? typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: defaultFooterButtons,\n saveButtonProps: saveButtonProps,\n })\n : footerButtons\n : defaultFooterButtons}\n </Space>,\n ]}\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useMutationMode,\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useBack,\n useResource,\n useGo,\n useToPath,\n} from \"@refinedev/core\";\n\nimport {\n DeleteButton,\n RefreshButton,\n ListButton,\n SaveButton,\n Breadcrumb,\n PageHeader,\n type ListButtonProps,\n type RefreshButtonProps,\n type DeleteButtonProps,\n type SaveButtonProps,\n AutoSaveIndicator,\n} from \"@components\";\nimport type { EditProps } from \"../types\";\n\n/**\n * `<Edit>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/edit} for more details.\n */\nexport const Edit: React.FC<EditProps> = ({\n title,\n saveButtonProps: saveButtonPropsFromProps,\n mutationMode: mutationModeProp,\n recordItemId,\n children,\n deleteButtonProps: deleteButtonPropsFromProps,\n canDelete,\n resource: resourceFromProps,\n isLoading = false,\n dataProviderName,\n breadcrumb: breadcrumbFromProps,\n wrapperProps,\n headerProps,\n contentProps,\n headerButtonProps,\n headerButtons,\n footerButtonProps,\n footerButtons,\n goBack: goBackFromProps,\n autoSaveProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n const { mutationMode: mutationModeContext } = useMutationMode();\n const mutationMode = mutationModeProp ?? mutationModeContext;\n\n const routerType = useRouterType();\n const back = useBack();\n const go = useGo();\n const { goBack, list: legacyGoList } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const {\n resource,\n action,\n id: idFromParams,\n identifier,\n } = useResource(resourceFromProps);\n\n const goListPath = useToPath({\n resource,\n action: \"list\",\n });\n\n const id = recordItemId ?? idFromParams;\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const hasList = resource?.list && !recordItemId;\n const isDeleteButtonVisible =\n canDelete ??\n ((resource?.meta?.canDelete ?? resource?.canDelete) ||\n deleteButtonPropsFromProps);\n\n const listButtonProps: ListButtonProps | undefined = hasList\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n }\n : undefined;\n\n const refreshButtonProps: RefreshButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n dataProviderName,\n };\n\n const deleteButtonProps: DeleteButtonProps | undefined = isDeleteButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n mutationMode,\n onSuccess: () => {\n if (routerType === \"legacy\") {\n legacyGoList(resource?.route ?? resource?.name ?? \"\");\n } else {\n go({ to: goListPath });\n }\n },\n recordItemId: id,\n dataProviderName,\n ...deleteButtonPropsFromProps,\n }\n : undefined;\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n };\n\n const defaultHeaderButtons = (\n <>\n {autoSaveProps && <AutoSaveIndicator {...autoSaveProps} />}\n {hasList && <ListButton {...listButtonProps} />}\n <RefreshButton {...refreshButtonProps} />\n </>\n );\n\n const defaultFooterButtons = (\n <>\n {isDeleteButtonVisible && <DeleteButton {...deleteButtonProps} />}\n <SaveButton {...saveButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" && typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.edit`,\n `Edit ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n extra={\n <Space wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultHeaderButtons,\n listButtonProps,\n refreshButtonProps,\n })\n : headerButtons\n : defaultHeaderButtons}\n </Space>\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={[\n <Space\n key=\"footer-buttons\"\n wrap\n style={{\n float: \"right\",\n marginRight: 24,\n }}\n {...(footerButtonProps ?? {})}\n >\n {footerButtons\n ? typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: defaultFooterButtons,\n deleteButtonProps,\n saveButtonProps,\n })\n : footerButtons\n : defaultFooterButtons}\n </Space>,\n ]}\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResource,\n useToPath,\n useRouterType,\n useBack,\n useGo,\n} from \"@refinedev/core\";\n\nimport {\n EditButton,\n DeleteButton,\n RefreshButton,\n ListButton,\n Breadcrumb,\n PageHeader,\n type ListButtonProps,\n type EditButtonProps,\n type DeleteButtonProps,\n type RefreshButtonProps,\n} from \"@components\";\nimport type { ShowProps } from \"../types\";\n\n/**\n * `<Show>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/show} for more details.\n */\nexport const Show: React.FC<ShowProps> = ({\n title,\n canEdit,\n canDelete,\n isLoading = false,\n children,\n resource: resourceFromProps,\n recordItemId,\n dataProviderName,\n breadcrumb: breadcrumbFromProps,\n contentProps,\n headerProps,\n wrapperProps,\n headerButtons,\n footerButtons,\n footerButtonProps,\n headerButtonProps,\n goBack: goBackFromProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const back = useBack();\n const go = useGo();\n const { goBack, list: legacyGoList } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const {\n resource,\n action,\n id: idFromParams,\n identifier,\n } = useResource(resourceFromProps);\n\n const goListPath = useToPath({\n resource,\n action: \"list\",\n });\n\n const id = recordItemId ?? idFromParams;\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const hasList = resource?.list && !recordItemId;\n const isDeleteButtonVisible =\n canDelete ?? resource?.meta?.canDelete ?? resource?.canDelete;\n const isEditButtonVisible = canEdit ?? resource?.canEdit ?? !!resource?.edit;\n\n const listButtonProps: ListButtonProps | undefined = hasList\n ? {\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n }\n : undefined;\n const editButtonProps: EditButtonProps | undefined = isEditButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n type: \"primary\",\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n }\n : undefined;\n const deleteButtonProps: DeleteButtonProps | undefined = isDeleteButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n onSuccess: () => {\n if (routerType === \"legacy\") {\n legacyGoList(resource?.route ?? resource?.name ?? \"\");\n } else {\n go({ to: goListPath });\n }\n },\n dataProviderName,\n }\n : undefined;\n const refreshButtonProps: RefreshButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n dataProviderName,\n };\n\n const defaultHeaderButtons = (\n <>\n {hasList && <ListButton {...listButtonProps} />}\n {isEditButtonVisible && <EditButton {...editButtonProps} />}\n {isDeleteButtonVisible && <DeleteButton {...deleteButtonProps} />}\n <RefreshButton {...refreshButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" && typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.show`,\n `Show ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n extra={\n <Space key=\"extra-buttons\" wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultHeaderButtons,\n deleteButtonProps,\n editButtonProps,\n listButtonProps,\n refreshButtonProps,\n })\n : headerButtons\n : defaultHeaderButtons}\n </Space>\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={\n footerButtons\n ? [\n <Space key=\"footer-buttons\" wrap {...footerButtonProps}>\n {typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: null,\n })\n : footerButtons}\n </Space>,\n ]\n : undefined\n }\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport type { TextFieldProps } from \"../types\";\n\n/**\n * This field lets you show basic text. It uses Ant Design's {@link https://ant.design/components/typography/#Typography.Text `<Typography.Text>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/text} for more details.\n */\nexport const TextField: React.FC<TextFieldProps> = ({ value, ...rest }) => {\n return <Typography.Text {...rest}>{value}</Typography.Text>;\n};\n","import React from \"react\";\nimport { Tag } from \"antd\";\n\nimport type { TagFieldProps } from \"../types\";\n\n/**\n * This field lets you display a value in a tag. It uses Ant Design's {@link https://ant.design/components/tag/ `<Tag>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/tag} for more details.\n */\nexport const TagField: React.FC<TagFieldProps> = ({ value, ...rest }) => {\n return <Tag {...rest}>{value?.toString()}</Tag>;\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport type { EmailFieldProps } from \"../types\";\n\n/**\n * This field is used to display email values. It uses the {@link https://ant.design/components/typography/#FAQ `<Link>`} component\n * of {@link https://ant.design/components/typography `<Typography>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/email} for more details.\n */\nexport const EmailField: React.FC<EmailFieldProps> = ({ value, ...rest }) => {\n return (\n <Typography.Link href={`mailto:${value}`} {...rest}>\n {value}\n </Typography.Link>\n );\n};\n","import React from \"react\";\nimport { Image } from \"antd\";\n\nimport type { ImageFieldProps } from \"../types\";\n\n/**\n * This field is used to display images and uses {@link https://ant.design/components/image/#header `<Image>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/image} for more details.\n */\nexport const ImageField: React.FC<ImageFieldProps> = ({\n value,\n imageTitle,\n ...rest\n}) => {\n return <Image {...rest} src={value} title={imageTitle} />;\n};\n","import React from \"react\";\nimport { Tooltip } from \"antd\";\n\nimport { CheckOutlined, CloseOutlined } from \"@ant-design/icons\";\n\nimport type { BooleanFieldProps } from \"../types\";\n\n/**\n * This field is used to display boolean values. It uses the {@link https://ant.design/components/tooltip/#header `<Tooltip>`} values from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/boolean} for more details.\n */\nexport const BooleanField: React.FC<BooleanFieldProps> = ({\n value,\n valueLabelTrue = \"true\",\n valueLabelFalse = \"false\",\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n trueIcon = <CheckOutlined />,\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n falseIcon = <CloseOutlined />,\n ...rest\n}) => {\n return (\n <Tooltip title={value ? valueLabelTrue : valueLabelFalse} {...rest}>\n {value ? <span>{trueIcon}</span> : <span>{falseIcon}</span>}\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport dayjs from \"dayjs\";\nimport { Typography } from \"antd\";\n\nimport LocalizedFormat from \"dayjs/plugin/localizedFormat\";\n\nimport type { DateFieldProps } from \"../types\";\n\n/**\n * This field is used to display dates. It uses {@link https://day.js.org/docs/en/display/format `Day.js`} to display date format.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/date} for more details.\n */\nexport const DateField: React.FC<DateFieldProps> = ({\n value,\n locales,\n format: dateFormat = \"L\",\n ...rest\n}) => {\n dayjs.extend(LocalizedFormat);\n\n const defaultLocale = dayjs.locale();\n\n return (\n <Typography.Text {...rest}>\n {dayjs(value)\n .locale(locales || defaultLocale)\n .format(dateFormat)}\n </Typography.Text>\n );\n};\n","import React from \"react\";\n\nimport { UrlField } from \"@components\";\nimport type { FileFieldProps } from \"../types\";\n\n/**\n * This field is used to display files and uses {@link https://ant.design/components/typography `<Typography.Link>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/file} for more details.\n */\nexport const FileField: React.FC<FileFieldProps> = ({\n title,\n src,\n ...rest\n}) => {\n return (\n <UrlField value={src} title={title} {...rest}>\n {title ?? src}\n </UrlField>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport type { UrlFieldProps } from \"../types\";\n\n/**\n * This field lets you embed a link. It uses Ant Design's {@link https://ant.design/components/typography/ `<Typography.Link>`} component.\n * You can pass a URL in its `value` property and you can show a text in its place by passing any `children`.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/url} for more details.\n */\nexport const UrlField: React.FC<UrlFieldProps> = ({\n children,\n value,\n ...rest\n}) => {\n return (\n <Typography.Link href={value} {...rest}>\n {children ?? value}\n </Typography.Link>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === \"object\" &&\n Intl &&\n typeof Intl.NumberFormat === \"function\"\n );\n}\n\nimport type { NumberFieldProps } from \"../types\";\n\n/**\n * This field is used to display a number formatted according to the browser locale, right aligned. and uses {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl `Intl`} to display date format.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/number} for more details.\n */\nexport const NumberField: React.FC<NumberFieldProps> = ({\n value,\n locale,\n options,\n ...rest\n}) => {\n const number = Number(value);\n\n return (\n <Typography.Text {...rest}>\n {toLocaleStringSupportsOptions()\n ? number.toLocaleString(locale, options)\n : number}\n </Typography.Text>\n );\n};\n","import React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport gfm from \"remark-gfm\";\n\nimport type { RefineFieldMarkdownProps } from \"../types\";\n\n/**\n * This field lets you display markdown content. It supports {@link https://github.github.com/gfm/ GitHub Flavored Markdown}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/markdown} for more details.\n */\nexport const MarkdownField: React.FC<RefineFieldMarkdownProps> = ({\n value = \"\",\n}) => {\n // There's an issue related with the type inconsistency of the `remark-gfm` and `remark-rehype` packages, we need to cast the `gfm` as any. (https://github.com/orgs/rehypejs/discussions/63)\n return (\n <ReactMarkdown\n remarkPlugins={[gfm] as unknown as ReactMarkdown.PluggableList}\n >\n {value}\n </ReactMarkdown>\n );\n};\n","import React, { type ReactNode } from \"react\";\nimport { Button, Space, type TableColumnProps } from \"antd\";\nimport dayjs from \"dayjs\";\nimport { FilterOutlined } from \"@ant-design/icons\";\nimport { useTranslate } from \"@refinedev/core\";\n\ntype AntdFilterDropdownProps = React.ComponentProps<\n Exclude<TableColumnProps<any>[\"filterDropdown\"], ReactNode>\n>;\n\nexport type MapValueEvent = \"onChange\" | \"value\";\n\nexport type FilterDropdownProps = AntdFilterDropdownProps & {\n mapValue?: (selectedKeys: React.Key[], event: MapValueEvent) => any;\n children: JSX.Element;\n};\n\n/**\n * `<FilterDropdown>` is a helper component for {@link https://ant.design/components/table/#components-table-demo-custom-filter-panel filter dropdowns in Ant Design `<Table>` components.}\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/filter-dropdown} for more details.\n */\nexport const FilterDropdown: React.FC<FilterDropdownProps> = (props) => {\n const {\n setSelectedKeys,\n confirm,\n clearFilters,\n mapValue = (value) => value,\n selectedKeys,\n children,\n } = props;\n\n const translate = useTranslate();\n\n const clearFilter = () => {\n if (clearFilters) {\n clearFilters();\n }\n };\n\n const onFilter = () => {\n let keys;\n if (typeof selectedKeys === \"number\") {\n keys = `${selectedKeys}`;\n } else if (dayjs.isDayjs(selectedKeys)) {\n keys = [selectedKeys.toISOString()];\n } else {\n keys = selectedKeys;\n }\n\n setSelectedKeys(keys as any);\n confirm?.();\n };\n\n const onChange = (e: any) => {\n if (typeof e === \"object\") {\n if (Array.isArray(e)) {\n const mappedValue = mapValue(e, \"onChange\");\n return setSelectedKeys(mappedValue);\n }\n\n const changeEvent =\n !e || !e.target || dayjs.isDayjs(e) ? { target: { value: e } } : e;\n\n const { target }: React.ChangeEvent<HTMLInputElement> = changeEvent;\n const mappedValue = mapValue(target.value as any, \"onChange\");\n setSelectedKeys(mappedValue);\n return;\n }\n\n const mappedValue = mapValue(e, \"onChange\");\n setSelectedKeys(mappedValue);\n };\n\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement, {\n onChange,\n value: mapValue(selectedKeys, \"value\"),\n });\n }\n return child;\n });\n\n return (\n <div\n style={{\n padding: 10,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n }}\n >\n <div style={{ marginBottom: 15 }}>{childrenWithProps}</div>\n <Space>\n <Button type=\"primary\" size=\"small\" onClick={() => onFilter()}>\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <FilterOutlined /> {translate(\"buttons.filter\", \"Filter\")}\n </Button>\n <Button danger size=\"small\" onClick={() => clearFilter()}>\n {translate(\"buttons.clear\", \"Clear\")}\n </Button>\n </Space>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useGo, useResource, useRouterType } from \"@refinedev/core\";\nimport type { RefineErrorPageProps } from \"@refinedev/ui-types\";\nimport { Button, Result, Typography, Space, Tooltip } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useNavigation, useTranslate } from \"@refinedev/core\";\n\n/**\n * When the app is navigated to a non-existent route, refine shows a default error page.\n * A custom error component can be used for this error page.\n *\n * @see {@link https://refine.dev/docs/packages/documentation/routers/} for more details.\n */\nexport const ErrorComponent: React.FC<RefineErrorPageProps> = () => {\n const [errorMessage, setErrorMessage] = useState<string>();\n const translate = useTranslate();\n const { push } = useNavigation();\n const go = useGo();\n const routerType = useRouterType();\n\n const { resource, action } = useResource();\n\n useEffect(() => {\n if (resource) {\n if (action) {\n setErrorMessage(\n translate(\n \"pages.error.info\",\n {\n action: action,\n resource: resource?.name,\n },\n `You may have forgotten to add the \"${action}\" component to \"${resource?.name}\" resource.`,\n ),\n );\n }\n }\n }, [resource, action]);\n\n return (\n <Result\n status=\"404\"\n title=\"404\"\n extra={\n <Space direction=\"vertical\" size=\"large\">\n <Space>\n <Typography.Text>\n {translate(\n \"pages.error.404\",\n \"Sorry, the page you visited does not exist.\",\n )}\n </Typography.Text>\n {errorMessage && (\n <Tooltip title={errorMessage}>\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <InfoCircleOutlined data-testid=\"error-component-tooltip\" />\n </Tooltip>\n )}\n </Space>\n <Button\n type=\"primary\"\n onClick={() => {\n if (routerType === \"legacy\") {\n push(\"/\");\n } else {\n go({ to: \"/\" });\n }\n }}\n >\n {translate(\"pages.error.backHome\", \"Back Home\")}\n </Button>\n </Space>\n }\n />\n );\n};\n","import React from \"react\";\nimport { type LoginPageProps, useActiveAuthProvider } from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n Checkbox,\n} from \"antd\";\nimport { useLogin, useTranslate } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n imageContainer,\n} from \"./styles\";\n\nexport interface ILoginForm {\n username: string;\n password: string;\n remember: boolean;\n}\n\n/**\n * @deprecated LoginPage is deprecated. Use AuthPage instead. @see {@link https://refine.dev/docs/api-reference/antd/components/antd-auth-page} for more details.\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage} for more details.\n */\nexport const LoginPage: React.FC<LoginPageProps> = () => {\n const [form] = Form.useForm<ILoginForm>();\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login, isLoading } = useLogin<ILoginForm>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const CardTitle = (\n <Typography.Title level={3} style={titleStyles}>\n {translate(\"pages.login.title\", \"Sign in your account\")}\n </Typography.Title>\n );\n\n return (\n <Layout style={layoutStyles}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n height: \"100vh\",\n }}\n >\n <Col xs={22}>\n <div style={containerStyles}>\n <div style={imageContainer}>\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine Logo\"\n />\n </div>\n <Card title={CardTitle} headStyle={{ borderBottom: 0 }}>\n <Form<ILoginForm>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => {\n login(values);\n }}\n requiredMark={false}\n initialValues={{\n remember: false,\n }}\n >\n <Form.Item\n name=\"username\"\n label={translate(\"pages.login.username\", \"Username\")}\n rules={[{ required: true }]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.login.username\", \"Username\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.login.password\", \"Password\")}\n rules={[{ required: true }]}\n style={{ marginBottom: \"12px\" }}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <div style={{ marginBottom: \"12px\" }}>\n <Form.Item name=\"remember\" valuePropName=\"checked\" noStyle>\n <Checkbox\n style={{\n fontSize: \"12px\",\n }}\n >\n {translate(\"pages.login.remember\", \"Remember me\")}\n </Checkbox>\n </Form.Item>\n\n <a\n style={{\n float: \"right\",\n fontSize: \"12px\",\n }}\n href=\"#\"\n >\n {translate(\n \"pages.login.forgotPassword\",\n \"Forgot password?\",\n )}\n </a>\n </div>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </Button>\n </Form>\n <div style={{ marginTop: 8 }}>\n <Typography.Text style={{ fontSize: 12 }}>\n {translate(\"pages.login.noAccount\", \"Don’t have an account?\")}{\" \"}\n <a href=\"#\" style={{ fontWeight: \"bold\" }}>\n {translate(\"pages.login.signup\", \"Sign up\")}\n </a>\n </Typography.Text>\n </div>\n </Card>\n </div>\n </Col>\n </Row>\n </Layout>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const layoutStyles: CSSProperties = {\n background: \"radial-gradient(50% 50% at 50% 50%, #63386A 0%, #310438 100%)\",\n backgroundSize: \"cover\",\n};\n\nexport const containerStyles: CSSProperties = {\n maxWidth: \"408px\",\n margin: \"auto\",\n};\n\nexport const titleStyles: CSSProperties = {\n textAlign: \"center\",\n color: \"#626262\",\n fontSize: \"30px\",\n letterSpacing: \"-0.04em\",\n};\n\nexport const imageContainer: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"28px\",\n};\n","import * as React from \"react\";\nimport type { RefineReadyPageProps } from \"@refinedev/ui-types\";\nimport { Row, Col, Typography, Space, Button } from \"antd\";\nimport { ReadOutlined, FolderOutlined, TeamOutlined } from \"@ant-design/icons\";\n\nconst styles: { [key: string]: React.CSSProperties } = {\n root: {\n height: \"100vh\",\n backgroundImage:\n \"url('https://refine.ams3.cdn.digitaloceanspaces.com/login-background/background.png')\",\n backgroundSize: \"cover\",\n backgroundColor: \"#331049\",\n },\n title: {\n color: \"white\",\n fontWeight: 800,\n fontSize: \"64px\",\n marginBottom: \"8px\",\n },\n p1: {\n color: \"white\",\n marginBottom: 0,\n fontSize: \"20px\",\n fontWeight: \"bold\",\n },\n p2: {\n color: \"white\",\n fontSize: \"20px\",\n },\n code: {\n backgroundColor: \"white\",\n color: \"#331049\",\n },\n};\n\n/**\n * **refine** shows a default ready page on root route when no `resources` is passed to the `<Refine>` component as a property.\n *\n * @deprecated `ReadyPage` is deprecated and will be removed in the next major release.\n */\nexport const ReadyPage: React.FC<RefineReadyPageProps> = () => {\n return (\n <Row align=\"middle\" justify=\"center\" style={styles.root}>\n <Col style={{ textAlign: \"center\" }}>\n <img\n style={{ marginBottom: \"48px\" }}\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine Logo\"\n />\n <Typography.Title style={styles.title}>\n Welcome on board\n </Typography.Title>\n <p style={styles.p1}>Your configuration is completed.</p>\n <p style={styles.p2}>\n Now you can get started by adding your resources to the{\" \"}\n <code style={styles.code}>{\"resources\"}</code> property of{\" \"}\n <code style={styles.code}>{\"<Refine>\"}</code>\n </p>\n <Space\n size=\"large\"\n wrap\n style={{ marginTop: \"70px\", justifyContent: \"center\" }}\n >\n <a href=\"https://refine.dev\" target=\"_blank\" rel=\"noreferrer\">\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <Button size=\"large\" icon={<ReadOutlined />}>\n Documentation\n </Button>\n </a>\n <a\n href=\"https://refine.dev/examples\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <Button size=\"large\" icon={<FolderOutlined />}>\n Examples\n </Button>\n </a>\n <a href=\"https://discord.gg/refine\" target=\"_blank\" rel=\"noreferrer\">\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <Button size=\"large\" icon={<TeamOutlined />}>\n Community\n </Button>\n </a>\n </Space>\n </Col>\n </Row>\n );\n};\n","import React from \"react\";\nimport { WelcomePage as WelcomePageFromCore } from \"@refinedev/core\";\n\n/**\n * It is a page that welcomes you after the configuration is completed.\n * @deprecated `WelcomePage` is deprecated. Use `WelcomePage` from `@refinedev/core` instead.\n */\nexport const WelcomePage: React.FC = () => {\n return <WelcomePageFromCore />;\n};\n","import React from \"react\";\nimport type { CardProps, FormProps, LayoutProps } from \"antd\";\nimport type { AuthPageProps } from \"@refinedev/core\";\n\nimport {\n LoginPage,\n RegisterPage,\n ForgotPasswordPage,\n UpdatePasswordPage,\n} from \"./components\";\n\nexport type AuthProps = AuthPageProps<LayoutProps, CardProps, FormProps> & {\n renderContent?: (\n content: React.ReactNode,\n title: React.ReactNode,\n ) => React.ReactNode;\n title?: React.ReactNode;\n};\n\n/**\n * **refine** has a default auth page form served on the `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/antd-auth-page/} for more details.\n */\nexport const AuthPage: React.FC<AuthProps> = (props) => {\n const { type } = props;\n const renderView = () => {\n switch (type) {\n case \"register\":\n return <RegisterPage {...props} />;\n case \"forgotPassword\":\n return <ForgotPasswordPage {...props} />;\n case \"updatePassword\":\n return <UpdatePasswordPage {...props} />;\n default:\n return <LoginPage {...props} />;\n }\n };\n\n return <>{renderView()}</>;\n};\n","import React from \"react\";\nimport {\n type LoginPageProps,\n type LoginFormTypes,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n Checkbox,\n type CardProps,\n type LayoutProps,\n Divider,\n type FormProps,\n theme,\n} from \"antd\";\nimport { useLogin, useTranslate, useRouterContext } from \"@refinedev/core\";\n\nimport {\n bodyStyles,\n containerStyles,\n headStyles,\n layoutStyles,\n titleStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype LoginProps = LoginPageProps<LayoutProps, CardProps, FormProps>;\n/**\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#login} for more details.\n */\nexport const LoginPage: React.FC<LoginProps> = ({\n providers,\n registerLink,\n forgotPasswordLink,\n rememberMe,\n contentProps,\n wrapperProps,\n renderContent,\n formProps,\n title,\n hideForm,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<LoginFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login, isLoading } = useLogin<LoginFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.login.title\", \"Sign in to your account\")}\n </Typography.Title>\n );\n\n const renderProviders = () => {\n if (providers && providers.length > 0) {\n return (\n <>\n {providers.map((provider) => {\n return (\n <Button\n key={provider.name}\n type=\"default\"\n block\n icon={provider.icon}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n marginBottom: \"8px\",\n }}\n onClick={() =>\n login({\n providerName: provider.name,\n })\n }\n >\n {provider.label}\n </Button>\n );\n })}\n {!hideForm && (\n <Divider>\n <Typography.Text\n style={{\n color: token.colorTextLabel,\n }}\n >\n {translate(\"pages.login.divider\", \"or\")}\n </Typography.Text>\n </Divider>\n )}\n </>\n );\n }\n return null;\n };\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n {renderProviders()}\n {!hideForm && (\n <Form<LoginFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => login(values)}\n requiredMark={false}\n initialValues={{\n remember: false,\n }}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.login.fields.email\", \"Email\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.login.errors.requiredEmail\",\n \"Email is required\",\n ),\n },\n {\n type: \"email\",\n message: translate(\n \"pages.login.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.login.fields.email\", \"Email\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.login.fields.password\", \"Password\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.login.errors.requiredPassword\",\n \"Password is required\",\n ),\n },\n ]}\n >\n <Input\n type=\"password\"\n autoComplete=\"current-password\"\n placeholder=\"●●●●●●●●\"\n size=\"large\"\n />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n {rememberMe ?? (\n <Form.Item name=\"remember\" valuePropName=\"checked\" noStyle>\n <Checkbox\n style={{\n fontSize: \"12px\",\n }}\n >\n {translate(\"pages.login.buttons.rememberMe\", \"Remember me\")}\n </Checkbox>\n </Form.Item>\n )}\n {forgotPasswordLink ?? (\n <ActiveLink\n style={{\n color: token.colorPrimaryTextHover,\n fontSize: \"12px\",\n marginLeft: \"auto\",\n }}\n to=\"/forgot-password\"\n >\n {translate(\n \"pages.login.buttons.forgotPassword\",\n \"Forgot password?\",\n )}\n </ActiveLink>\n )}\n </div>\n {!hideForm && (\n <Form.Item>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </Button>\n </Form.Item>\n )}\n </Form>\n )}\n\n {registerLink ?? (\n <div\n style={{\n marginTop: hideForm ? 16 : 8,\n }}\n >\n <Typography.Text style={{ fontSize: 12 }}>\n {translate(\n \"pages.login.buttons.noAccount\",\n \"Don’t have an account?\",\n )}{\" \"}\n <ActiveLink\n to=\"/register\"\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n >\n {translate(\"pages.login.signup\", \"Sign up\")}\n </ActiveLink>\n </Typography.Text>\n </div>\n )}\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align={hideForm ? \"top\" : \"middle\"}\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n paddingTop: hideForm ? \"15dvh\" : \"16px\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const layoutStyles: CSSProperties = {};\n\nexport const containerStyles: CSSProperties = {\n maxWidth: \"400px\",\n margin: \"auto\",\n padding: \"32px\",\n boxShadow:\n \"0px 2px 4px rgba(0, 0, 0, 0.02), 0px 1px 6px -1px rgba(0, 0, 0, 0.02), 0px 1px 2px rgba(0, 0, 0, 0.03)\",\n};\n\nexport const headStyles: CSSProperties = {\n borderBottom: 0,\n padding: 0,\n};\n\nexport const bodyStyles: CSSProperties = { padding: 0, marginTop: \"32px\" };\n\nexport const titleStyles: CSSProperties = {\n textAlign: \"center\",\n marginBottom: 0,\n fontSize: \"24px\",\n lineHeight: \"32px\",\n fontWeight: 700,\n overflowWrap: \"break-word\",\n hyphens: \"manual\",\n textOverflow: \"unset\",\n whiteSpace: \"pre-wrap\",\n};\n","import React from \"react\";\nimport {\n type RegisterPageProps,\n type RegisterFormTypes,\n useRouterType,\n useLink,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n type LayoutProps,\n type CardProps,\n type FormProps,\n Divider,\n theme,\n} from \"antd\";\nimport { useTranslate, useRouterContext, useRegister } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype RegisterProps = RegisterPageProps<LayoutProps, CardProps, FormProps>;\n/**\n * **refine** has register page form which is served on `/register` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#register} for more details.\n */\nexport const RegisterPage: React.FC<RegisterProps> = ({\n providers,\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n hideForm,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<RegisterFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const authProvider = useActiveAuthProvider();\n const { mutate: register, isLoading } = useRegister<RegisterFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.register.title\", \"Sign up for your account\")}\n </Typography.Title>\n );\n\n const renderProviders = () => {\n if (providers && providers.length > 0) {\n return (\n <>\n {providers.map((provider) => {\n return (\n <Button\n key={provider.name}\n type=\"default\"\n block\n icon={provider.icon}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n marginBottom: \"8px\",\n }}\n onClick={() =>\n register({\n providerName: provider.name,\n })\n }\n >\n {provider.label}\n </Button>\n );\n })}\n {!hideForm && (\n <Divider>\n <Typography.Text\n style={{\n color: token.colorTextLabel,\n }}\n >\n {translate(\"pages.login.divider\", \"or\")}\n </Typography.Text>\n </Divider>\n )}\n </>\n );\n }\n return null;\n };\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n {renderProviders()}\n {!hideForm && (\n <Form<RegisterFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => register(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.register.email\", \"Email\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.register.errors.requiredEmail\",\n \"Email is required\",\n ),\n },\n {\n type: \"email\",\n message: translate(\n \"pages.register.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.register.fields.email\", \"Email\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.register.fields.password\", \"Password\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.register.errors.requiredPassword\",\n \"Password is required\",\n ),\n },\n ]}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n {loginLink ?? (\n <Typography.Text\n style={{\n fontSize: 12,\n marginLeft: \"auto\",\n }}\n >\n {translate(\n \"pages.login.buttons.haveAccount\",\n \"Have an account?\",\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </ActiveLink>\n </Typography.Text>\n )}\n </div>\n <Form.Item\n style={{\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.register.buttons.submit\", \"Sign up\")}\n </Button>\n </Form.Item>\n </Form>\n )}\n {hideForm && loginLink !== false && (\n <div\n style={{\n marginTop: hideForm ? 16 : 8,\n }}\n >\n <Typography.Text\n style={{\n fontSize: 12,\n }}\n >\n {translate(\"pages.login.buttons.haveAccount\", \"Have an account?\")}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </ActiveLink>\n </Typography.Text>\n </div>\n )}\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align={hideForm ? \"top\" : \"middle\"}\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n paddingTop: hideForm ? \"15dvh\" : \"16px\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n type ForgotPasswordPageProps,\n type ForgotPasswordFormTypes,\n useRouterType,\n useLink,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n type LayoutProps,\n type CardProps,\n type FormProps,\n theme,\n} from \"antd\";\nimport {\n useTranslate,\n useRouterContext,\n useForgotPassword,\n} from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype ResetPassworProps = ForgotPasswordPageProps<\n LayoutProps,\n CardProps,\n FormProps\n>;\n\n/**\n * **refine** has forgot password page form which is served on `/forgot-password` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#forgot-password} for more details.\n */\nexport const ForgotPasswordPage: React.FC<ResetPassworProps> = ({\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<ForgotPasswordFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const { mutate: forgotPassword, isLoading } =\n useForgotPassword<ForgotPasswordFormTypes>();\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.forgotPassword.title\", \"Forgot your password?\")}\n </Typography.Title>\n );\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n <Form<ForgotPasswordFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => forgotPassword(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.forgotPassword.fields.email\", \"Email\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.forgotPassword.errors.requiredEmail\",\n \"Email is required\",\n ),\n },\n {\n type: \"email\",\n message: translate(\n \"pages.forgotPassword.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n type=\"email\"\n size=\"large\"\n placeholder={translate(\n \"pages.forgotPassword.fields.email\",\n \"Email\",\n )}\n />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n }}\n >\n {loginLink ?? (\n <Typography.Text\n style={{\n fontSize: 12,\n marginLeft: \"auto\",\n }}\n >\n {translate(\n \"pages.register.buttons.haveAccount\",\n \"Have an account? \",\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </ActiveLink>\n </Typography.Text>\n )}\n </div>\n <Form.Item\n style={{\n marginTop: \"24px\",\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\n \"pages.forgotPassword.buttons.submit\",\n \"Send reset instructions\",\n )}\n </Button>\n </Form.Item>\n </Form>\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n type UpdatePasswordPageProps,\n type UpdatePasswordFormTypes,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n type LayoutProps,\n type CardProps,\n type FormProps,\n theme,\n} from \"antd\";\nimport { useTranslate, useUpdatePassword } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype UpdatePasswordProps = UpdatePasswordPageProps<\n LayoutProps,\n CardProps,\n FormProps\n>;\n\n/**\n * **refine** has update password page form which is served on `/update-password` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#update-password} for more details.\n */\nexport const UpdatePasswordPage: React.FC<UpdatePasswordProps> = ({\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<UpdatePasswordFormTypes>();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: updatePassword, isLoading } =\n useUpdatePassword<UpdatePasswordFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.updatePassword.title\", \"Set New Password\")}\n </Typography.Title>\n );\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n <Form<UpdatePasswordFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => updatePassword(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"password\"\n label={translate(\n \"pages.updatePassword.fields.password\",\n \"New Password\",\n )}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.updatePassword.errors.requiredPassword\",\n \"Password is required\",\n ),\n },\n ]}\n style={{ marginBottom: \"12px\" }}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <Form.Item\n name=\"confirmPassword\"\n label={translate(\n \"pages.updatePassword.fields.confirmPassword\",\n \"Confirm New Password\",\n )}\n hasFeedback\n dependencies={[\"password\"]}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.updatePassword.errors.requiredConfirmPassword\",\n \"Confirm password is required\",\n ),\n },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (!value || getFieldValue(\"password\") === value) {\n return Promise.resolve();\n }\n return Promise.reject(\n new Error(\n translate(\n \"pages.updatePassword.errors.confirmPasswordNotMatch\",\n \"Passwords do not match\",\n ),\n ),\n );\n },\n }),\n ]}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <Form.Item\n style={{\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.updatePassword.buttons.submit\", \"Update\")}\n </Button>\n </Form.Item>\n </Form>\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n useBreadcrumb,\n useLink,\n useRefineContext,\n useRouterContext,\n useRouterType,\n useResource,\n matchResourceFromRoute,\n} from \"@refinedev/core\";\nimport type { RefineBreadcrumbProps } from \"@refinedev/ui-types\";\n\nimport {\n Breadcrumb as AntdBreadcrumb,\n type BreadcrumbProps as AntdBreadcrumbProps,\n} from \"antd\";\nimport { HomeOutlined } from \"@ant-design/icons\";\n\nexport type BreadcrumbProps = RefineBreadcrumbProps<AntdBreadcrumbProps>;\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n breadcrumbProps,\n showHome = true,\n hideIcons = false,\n meta,\n}) => {\n const routerType = useRouterType();\n const { breadcrumbs } = useBreadcrumb({\n meta,\n });\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n const { hasDashboard } = useRefineContext();\n\n const { resources } = useResource();\n\n const rootRouteResource = matchResourceFromRoute(\"/\", resources);\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n if (breadcrumbs.length === 1) {\n return null;\n }\n\n const breadCrumbItems = breadcrumbs.map(({ label, icon, href }) => ({\n key: `breadcrumb-item-${label}`,\n title: (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 4,\n }}\n >\n {!hideIcons && icon}\n {href ? (\n <ActiveLink to={href}>{label}</ActiveLink>\n ) : (\n <span>{label}</span>\n )}\n </div>\n ),\n }));\n\n const getBreadcrumbItems = () => {\n if (showHome && (hasDashboard || rootRouteResource.found)) {\n return [\n {\n key: \"breadcrumb-item-home\",\n title: (\n <ActiveLink to=\"/\">\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n {rootRouteResource?.resource?.meta?.icon ?? <HomeOutlined />}\n </ActiveLink>\n ),\n },\n ...breadCrumbItems,\n ];\n }\n\n return breadCrumbItems;\n };\n\n return <AntdBreadcrumb items={getBreadcrumbItems()} {...breadcrumbProps} />;\n};\n","import React, { useContext, type FC } from \"react\";\nimport {\n PageHeader as AntdPageHeader,\n type PageHeaderProps as AntdPageHeaderProps,\n} from \"@ant-design/pro-layout\";\nimport { Button, ConfigProvider, Typography } from \"antd\";\nimport { ArrowLeftOutlined, ArrowRightOutlined } from \"@ant-design/icons\";\nimport { RefinePageHeaderClassNames } from \"@refinedev/ui-types\";\n\nexport type PageHeaderProps = AntdPageHeaderProps;\n\nexport const PageHeader: FC<AntdPageHeaderProps> = ({ children, ...props }) => {\n const direction = useContext(ConfigProvider.ConfigContext)?.direction;\n const renderBackButton = () => {\n const BackIcon =\n direction === \"rtl\" ? ArrowRightOutlined : ArrowLeftOutlined;\n\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n return <Button type=\"text\" icon={<BackIcon />} />;\n };\n const backIcon =\n typeof props.backIcon === \"undefined\" ? renderBackButton() : props.backIcon;\n\n const title =\n typeof props.title === \"string\" ? (\n <Typography.Title\n className={RefinePageHeaderClassNames.Title}\n level={4}\n style={{ marginBottom: 0 }}\n >\n {props.title}\n </Typography.Title>\n ) : (\n props.title\n );\n\n const subtitle =\n typeof props.title === \"string\" ? (\n <Typography.Title\n className={RefinePageHeaderClassNames.SubTitle}\n level={5}\n type=\"secondary\"\n style={{ marginBottom: 0 }}\n >\n {props.subTitle}\n </Typography.Title>\n ) : (\n props.subTitle\n );\n\n return (\n <AntdPageHeader\n {...props}\n backIcon={backIcon}\n title={title}\n subTitle={subtitle}\n style={{ padding: 0, ...props.style }}\n >\n {children}\n </AntdPageHeader>\n );\n};\n","import React from \"react\";\nimport {\n type AutoSaveIndicatorProps,\n useTranslate,\n AutoSaveIndicator as AutoSaveIndicatorCore,\n} from \"@refinedev/core\";\nimport { Typography, theme } from \"antd\";\nimport {\n EllipsisOutlined,\n SyncOutlined,\n CheckCircleOutlined,\n ExclamationCircleOutlined,\n} from \"@ant-design/icons\";\n\nexport const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({\n status,\n elements: {\n success = (\n <Message\n translationKey=\"autoSave.success\"\n defaultMessage=\"saved\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<CheckCircleOutlined />}\n />\n ),\n error = (\n <Message\n translationKey=\"autoSave.error\"\n defaultMessage=\"auto save failure\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<ExclamationCircleOutlined />}\n />\n ),\n loading = (\n <Message\n translationKey=\"autoSave.loading\"\n defaultMessage=\"saving...\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<SyncOutlined />}\n />\n ),\n idle = (\n <Message\n translationKey=\"autoSave.idle\"\n defaultMessage=\"waiting for changes\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<EllipsisOutlined />}\n />\n ),\n } = {},\n}) => {\n return (\n <AutoSaveIndicatorCore\n status={status}\n elements={{\n success,\n error,\n loading,\n idle,\n }}\n />\n );\n};\n\nconst Message = ({\n translationKey,\n defaultMessage,\n icon,\n}: {\n translationKey: string;\n defaultMessage: string;\n icon: React.ReactNode;\n}) => {\n const translate = useTranslate();\n const { token } = theme.useToken();\n\n return (\n <Typography.Text\n style={{\n marginRight: 5,\n color: token.colorTextTertiary,\n fontSize: \".8rem\",\n }}\n >\n {translate(translationKey, defaultMessage)}\n <span style={{ marginLeft: \".2rem\" }}>{icon}</span>\n </Typography.Text>\n );\n};\n","import type {\n FilterDropdownProps,\n MapValueEvent,\n} from \"@components/table/components\";\nimport dayjs from \"dayjs\";\n\n/**\n * It is a mapper function for the <DatePicker.RangePicker /> filter.\n * when the `event` is:\n * - `\"value\"`: It converts the `selectedKeys` to Dayjs objects to be used in the `<DatePicker.RangePicker />` component.\n * - `\"onChange\"`, It converts the Dayjs objects to ISO 8601 string format to be used in the Refine(data-provider, syncWithLocation etc.) filter.\n * @see {@link https://refine.dev/docs/ui-integrations/ant-design/components/filter-dropdown/#rangepickerfiltermapper} for more details.\n * @example\n * ```tsx\n * <Table.Column\n * dataIndex=\"createdAt\"\n * title=\"Date & Time\"\n * filterDropdown={(props) => (\n * <FilterDropdown\n * {...props}\n * mapValue={(selectedKeys, event) => {\n * return rangePickerFilterMapper(selectedKeys, event);\n * }}\n * >\n * <DatePicker.RangePicker />\n * </FilterDropdown>\n * )}\n * />\n * ```\n */\nexport const rangePickerFilterMapper = (\n selectedKeys: FilterDropdownProps[\"selectedKeys\"],\n event: MapValueEvent,\n) => {\n if (!selectedKeys) {\n return selectedKeys;\n }\n\n if (event === \"value\") {\n return selectedKeys.map((key) => {\n if (typeof key === \"string\") {\n return dayjs(key);\n }\n\n return key;\n });\n }\n\n if (event === \"onChange\") {\n if (selectedKeys.every(dayjs.isDayjs)) {\n return selectedKeys.map((date: any) => dayjs(date).toISOString());\n }\n }\n\n return selectedKeys;\n};\n","import type { UploadFile, UploadChangeParam } from \"antd/lib/upload/interface\";\n\nexport const getValueFromEvent = (event: UploadChangeParam): UploadFile[] => {\n const { fileList } = event;\n\n return [...fileList];\n};\n\nexport function file2Base64(file: UploadFile): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n const resultHandler = () => {\n if (reader.result) {\n reader.removeEventListener(\"load\", resultHandler, false);\n\n resolve(reader.result as string);\n }\n };\n\n reader.addEventListener(\"load\", resultHandler, false);\n\n reader.readAsDataURL(file.originFileObj as Blob);\n reader.onerror = (error) => {\n reader.removeEventListener(\"load\", resultHandler, false);\n return reject(error);\n };\n });\n}\n","import type { ThemeConfig } from \"antd\";\n\ntype ThemeNames =\n | \"Blue\"\n | \"Purple\"\n | \"Magenta\"\n | \"Red\"\n | \"Orange\"\n | \"Yellow\"\n | \"Green\";\n\ntype RefineThemes = Record<ThemeNames, ThemeConfig>;\n\nexport const RefineThemes: RefineThemes = {\n Blue: {\n token: {\n colorPrimary: \"#1677FF\",\n },\n },\n Purple: {\n token: {\n colorPrimary: \"#722ED1\",\n },\n },\n Magenta: {\n token: {\n colorPrimary: \"#EB2F96\",\n },\n },\n Red: {\n token: {\n colorPrimary: \"#F5222D\",\n },\n },\n Orange: {\n token: {\n colorPrimary: \"#FA541C\",\n },\n },\n Yellow: {\n token: {\n colorPrimary: \"#FAAD14\",\n },\n },\n Green: {\n token: {\n colorPrimary: \"#52C41A\",\n },\n },\n};\n"],"mappings":"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","names":["src_exports","__export","AuthPage","AutoSaveIndicator","BooleanField","Breadcrumb","CloneButton","Create","CreateButton","DateField","DeleteButton","Edit","EditButton","EmailField","ErrorComponent","ExportButton","FileField","FilterDropdown","Header","ImageField","ImportButton","Layout","List","ListButton","LoginPage","MarkdownField","NumberField","PageHeader","ReadyPage","RefineThemes","RefreshButton","SaveButton","Show","ShowButton","Sider","TagField","TextField","ThemedHeader","ThemedHeaderV2","ThemedLayout","ThemedLayoutContext","ThemedLayoutContextProvider","ThemedLayoutV2","ThemedSider","ThemedSiderV2","ThemedTitle","ThemedTitleV2","Title","UrlField","WelcomePage","getDefaultFilter","getDefaultSortOrder","getValueFromEvent","mapAntdFilterToCrudFilter","mapAntdSorterToCrudSorting","notificationProvider","rangePickerFilterMapper","useCheckboxGroup","useDrawerForm","useEditableTable","useFileUploadState","useForm","useImport","useModal","useModalForm","useNotificationProvider","useRadioGroup","useSelect","useSiderVisible","useSimpleList","useStepsForm","useTable","useThemedLayoutContext","__toCommonJS","import_react","import_antd","import_sunflower_antd","import_core","useForm","__name","action","resource","onMutationSuccessProp","onMutationErrorProp","autoSave","submitOnEnter","warnWhenUnsavedChangesProp","redirect","successNotification","errorNotification","meta","metaData","queryMeta","mutationMeta","liveMode","liveParams","mutationMode","dataProviderName","onLiveEvent","invalidates","undoableTimeout","queryOptions","createMutationOptions","updateMutationOptions","idFromProps","overtimeOptions","optimisticUpdateMap","defaultFormValues","disableServerSideValidationProp","_a","_b","options","disableServerSideValidation","translate","formAnt","formSF","useFormSF","form","useFormCoreResult","useFormCore","error","_variables","_context","parsedErrors","fieldsValue","field","errors","key","fieldError","newError","formLoading","onFinish","queryResult","id","onFinishAutoSave","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","React","onKeyUp","event","onValuesChange","changeValues","allValues","onFinishFromProps","values","saveButtonProps","import_react","import_core","import_core","useModal","__name","modalProps","show","close","visible","useCoreModal","e","_a","useModalForm","__name","syncWithLocation","defaultVisible","autoSubmitClose","autoResetForm","autoSave","invalidates","rest","_a","_b","initiallySynced","setInitiallySynced","React","invalidate","resource","actionFromParams","identifier","parsed","go","getUserFriendlyName","action","syncingId","syncWithLocationKey","useFormProps","useForm","form","formProps","id","setId","formLoading","onFinish","autoSaveProps","translate","warnWhen","setWarnWhen","show","close","modalProps","useModal","visible","sunflowerUseModal","_c","_d","openStatus","idFromParams","saveButtonPropsSF","handleClose","handleShow","showId","_visible","otherModalProps","newModalProps","values","import_react","import_core","useDrawerForm","__name","syncWithLocation","defaultVisible","autoSubmitClose","autoResetForm","autoSave","invalidates","rest","invalidate","initiallySynced","setInitiallySynced","React","visible","show","close","resource","actionFromParams","identifier","parsed","go","action","syncingId","syncWithLocationKey","useFormProps","useForm","form","formProps","formLoading","id","setId","onFinish","autoSaveProps","_a","_b","_c","_d","openStatus","idFromParams","translate","warnWhen","setWarnWhen","saveButtonProps","deleteButtonProps","handleClose","handleShow","showId","values","import_sunflower_antd","useStepsForm","__name","props","useFormProps","useForm","form","formProps","stepsPropsSunflower","useStepsFormSF","values","_a","import_react","import_antd","import_sunflower_antd","import_core","import_core","getDefaultSortOrder","__name","columnName","sorter","sort","getDefaultSortOrderCore","getDefaultFilter","filters","operatorType","getDefaultFilterCore","mapAntdSorterToCrudSorting","crudSorting","a","b","_a","_b","item","field","mapAntdFilterToCrudFilter","tableFilters","prevFilters","initialFilters","crudFilters","mapInitialFilter","acc","value","operator","i","import_core","import_react","PaginationLink","__name","to","element","LegacyLink","routerType","Link","React","e","useTable","__name","onSearch","initialCurrent","initialPageSize","hasPagination","pagination","initialSorter","permanentSorter","initialFilter","permanentFilter","defaultSetFilterBehavior","filtersFromProp","sortersFromProp","syncWithLocation","resource","successNotification","errorNotification","queryOptions","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","tableQueryResult","current","setCurrent","pageSize","setPageSize","filters","setFilters","sorters","setSorters","sorter","setSorter","createLinkForSyncWithLocation","pageCount","overtime","useTableCore","defaultSyncWithLocation","shouldSyncWithLocation","breakpoint","form","formSF","useFormSF","liveMode","hasPaginationString","isPaginationEnabled","preferredInitialFilters","data","isFetched","isLoading","React","registeredFields","filterFilterMap","acc","curr","filter","onChange","paginationState","tableFilters","crudFilters","mapAntdFilterToCrudFilter","crudSorting","mapAntdSorterToCrudSorting","onFinish","value","searchFilters","antdPagination","page","type","element","_a","link","PaginationLink","elementChildren","useEditableTable","__name","autoSubmitClose","props","table","useTable","edit","useForm","editId","setId","saveButtonProps","cancelButtonProps","editButtonProps","id","isEditing","values","result","import_core","useSelect","__name","props","queryResult","defaultValueQueryResult","onSearch","options","useSelectCore","import_core","useCheckboxGroup","__name","resource","sort","sorters","filters","optionLabel","optionValue","queryOptions","fetchSize","pagination","liveMode","defaultValue","selectedOptionsOrder","onLiveEvent","liveParams","meta","metaData","dataProviderName","queryResult","options","import_core","useRadioGroup","__name","resource","sort","sorters","filters","optionLabel","optionValue","queryOptions","fetchSize","pagination","liveMode","defaultValue","selectedOptionsOrder","onLiveEvent","liveParams","meta","metaData","dataProviderName","queryResult","options","import_react","import_antd","import_core","useImport","__name","resourceFromProp","resourceName","mapData","item","paparseOptions","batchSize","onFinish","meta","metaData","dataProviderName","onProgressFromProp","t","resource","mutationResult","isLoading","handleChange","useImportCore","totalAmount","processedAmount","description","React","import_react","import_antd","import_core","useSimpleList","__name","resource","initialCurrent","initialPageSize","pagination","hasPagination","initialSorter","permanentSorter","initialFilter","permanentFilter","defaultSetFilterBehavior","filtersFromProp","sortersFromProp","onSearch","queryOptions","syncWithLocation","successNotification","errorNotification","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","sorters","sorter","filters","current","pageSize","pageCount","setFilters","setCurrent","setPageSize","setSorter","setSorters","createLinkForSyncWithLocation","queryResult","overtime","useTableCore","hasPaginationString","isPaginationEnabled","breakpoint","liveMode","form","data","isFetched","isLoading","onChange","page","onFinish","values","searchFilters","antdPagination","type","element","_a","link","PaginationLink","elementChildren","import_react","useFileUploadState","__name","isLoading","setIsloading","onChange","info","mapStatusToLoading","files","file","import_react","import_react","ThemedLayoutContext","React","ThemedLayoutContextProvider","__name","children","initialSiderCollapsed","siderCollapsed","setSiderCollapsed","mobileSiderOpen","setMobileSiderOpen","useSiderVisible","__name","mobileSiderOpen","siderCollapsed","setMobileSiderOpen","setSiderCollapsed","ThemedLayoutContext","import_react","useThemedLayoutContext","__name","mobileSiderOpen","siderCollapsed","setMobileSiderOpen","setSiderCollapsed","ThemedLayoutContext","import_antd","import_react","import_react","import_antd","import_icons","UndoableNotification","__name","message","cancelMutation","undoableTimeout","React","time","notificationProvider","key","message","description","type","cancelMutation","undoableTimeout","staticNotification","React","UndoableNotification","useNotificationProvider","__name","notificationFromContext","notification","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","Sider","__name","TitleFromProps","render","meta","collapsed","setCollapsed","drawerOpen","setDrawerOpen","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","Title","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","import_core","import_antd","import_react","Header","__name","authProvider","user","React","AntdLayout","Layout","__name","children","Header","Sider","Title","Footer","OffLayoutArea","breakpoint","SiderToRender","HeaderToRender","isSmall","React","AntdLayout","import_react","import_core","Title","__name","collapsed","routerType","Link","LegacyLink","React","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","ThemedSider","__name","TitleFromProps","render","meta","token","collapsed","setCollapsed","drawerOpen","setDrawerOpen","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","ThemedTitle","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","import_react","import_antd","import_core","ThemedHeader","__name","token","authProvider","user","React","AntdLayout","ThemedLayout","__name","children","Header","Sider","Title","Footer","OffLayoutArea","breakpoint","SiderToRender","ThemedSider","HeaderToRender","ThemedHeader","isSmall","React","AntdLayout","import_react","import_core","import_antd","defaultText","defaultIcon","React","ThemedTitle","__name","collapsed","icon","text","wrapperStyles","token","routerType","Link","LegacyLink","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","ThemedSiderV2","__name","TitleFromProps","render","meta","fixed","activeItemDisabled","_a","token","siderCollapsed","setSiderCollapsed","mobileSiderOpen","setMobileSiderOpen","useThemedLayoutContext","isExistAuthentication","direction","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","ThemedTitleV2","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","linkStyle","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","siderStyles","renderClosingIcons","iconProps","collapsed","type","import_react","import_antd","import_core","ThemedHeaderV2","__name","isSticky","sticky","token","authProvider","user","headerStyles","React","AntdLayout","ThemedLayoutV2","__name","children","Header","Sider","Title","Footer","OffLayoutArea","initialSiderCollapsed","breakpoint","SiderToRender","ThemedSiderV2","HeaderToRender","ThemedHeaderV2","isSmall","hasSider","React","ThemedLayoutContextProvider","AntdLayout","import_react","import_core","import_antd","ThemedTitleV2","__name","collapsed","iconFromProps","textFromProps","wrapperStyles","defaultIcon","defaultText","icon","text","token","routerType","Link","LegacyLink","React","import_react","import_antd","import_icons","import_core","import_ui_types","CreateButton","__name","resourceNameFromProps","propResourceNameOrRouteName","hideText","accessControl","meta","children","onClick","rest","hidden","disabled","label","title","LinkComponent","to","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","EditButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","accessControl","meta","children","onClick","rest","to","label","title","hidden","disabled","LinkComponent","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","DeleteButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","onSuccess","mutationModeProp","children","successNotification","errorNotification","hideText","accessControl","metaData","meta","dataProviderName","confirmTitle","confirmOkText","confirmCancelText","invalidates","rest","title","label","hidden","disabled","loading","defaultConfirmTitle","defaultConfirmOkLabel","defaultCancelLabel","onConfirm","React","import_react","import_antd","import_icons","import_core","import_ui_types","RefreshButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","dataProviderName","children","_meta","_metaData","rest","onClick","label","loading","React","import_react","import_antd","import_icons","import_core","import_ui_types","ShowButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","accessControl","meta","children","onClick","rest","to","label","title","hidden","disabled","LinkComponent","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ListButton","__name","resourceNameFromProps","propResourceNameOrRouteName","hideText","accessControl","meta","children","onClick","rest","to","label","title","hidden","disabled","LinkComponent","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ExportButton","__name","hideText","children","rest","label","React","import_react","import_antd","import_icons","import_core","import_ui_types","SaveButton","__name","hideText","children","rest","label","React","import_react","import_antd","import_icons","import_core","import_ui_types","CloneButton","__name","propResourceNameOrRouteName","resourceNameFromProps","recordItemId","hideText","accessControl","meta","children","onClick","rest","to","LinkComponent","label","disabled","hidden","title","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ImportButton","__name","uploadProps","buttonProps","hideText","children","loading","label","React","import_react","import_antd","import_core","List","__name","canCreate","title","children","createButtonPropsFromProps","resourceFromProps","wrapperProps","contentProps","headerProps","breadcrumbFromProps","headerButtonProps","headerButtons","_a","_b","translate","globalBreadcrumb","routerType","getUserFriendlyName","resource","identifier","isCreateButtonVisible","breadcrumb","createButtonProps","defaultExtra","React","CreateButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Create","__name","title","saveButtonPropsFromProps","children","resourceFromProps","isLoading","breadcrumbFromProps","wrapperProps","headerProps","contentProps","headerButtonProps","headerButtons","footerButtonProps","footerButtons","goBackFromProps","_a","_b","translate","globalBreadcrumb","routerType","back","goBack","getUserFriendlyName","resource","action","identifier","breadcrumb","saveButtonProps","defaultFooterButtons","React","SaveButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Edit","__name","title","saveButtonPropsFromProps","mutationModeProp","recordItemId","children","deleteButtonPropsFromProps","canDelete","resourceFromProps","isLoading","dataProviderName","breadcrumbFromProps","wrapperProps","headerProps","contentProps","headerButtonProps","headerButtons","footerButtonProps","footerButtons","goBackFromProps","autoSaveProps","_a","_b","_c","translate","globalBreadcrumb","mutationModeContext","mutationMode","routerType","back","go","goBack","legacyGoList","getUserFriendlyName","resource","action","idFromParams","identifier","goListPath","id","breadcrumb","hasList","isDeleteButtonVisible","listButtonProps","refreshButtonProps","deleteButtonProps","saveButtonProps","defaultHeaderButtons","React","AutoSaveIndicator","ListButton","RefreshButton","defaultFooterButtons","DeleteButton","SaveButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Show","__name","title","canEdit","canDelete","isLoading","children","resourceFromProps","recordItemId","dataProviderName","breadcrumbFromProps","contentProps","headerProps","wrapperProps","headerButtons","footerButtons","footerButtonProps","headerButtonProps","goBackFromProps","_a","_b","_c","translate","globalBreadcrumb","routerType","back","go","goBack","legacyGoList","getUserFriendlyName","resource","action","idFromParams","identifier","goListPath","id","breadcrumb","hasList","isDeleteButtonVisible","isEditButtonVisible","listButtonProps","editButtonProps","deleteButtonProps","refreshButtonProps","defaultHeaderButtons","React","ListButton","EditButton","DeleteButton","RefreshButton","PageHeader","Breadcrumb","import_react","import_antd","TextField","__name","value","rest","React","import_react","import_antd","TagField","__name","value","rest","React","import_react","import_antd","EmailField","__name","value","rest","React","import_react","import_antd","ImageField","__name","value","imageTitle","rest","React","import_react","import_antd","import_icons","BooleanField","__name","value","valueLabelTrue","valueLabelFalse","trueIcon","React","falseIcon","rest","import_react","import_dayjs","import_antd","import_localizedFormat","DateField","__name","value","locales","dateFormat","rest","dayjs","LocalizedFormat","defaultLocale","React","import_react","FileField","__name","title","src","rest","React","UrlField","import_react","import_antd","UrlField","__name","children","value","rest","React","import_react","import_antd","toLocaleStringSupportsOptions","__name","NumberField","value","locale","options","rest","number","React","import_react","import_react_markdown","import_remark_gfm","MarkdownField","__name","value","React","ReactMarkdown","gfm","import_react","import_antd","import_dayjs","import_icons","import_core","FilterDropdown","__name","props","setSelectedKeys","confirm","clearFilters","mapValue","value","selectedKeys","children","translate","clearFilter","onFilter","keys","dayjs","onChange","e","mappedValue","changeEvent","target","childrenWithProps","React","child","import_react","import_core","import_antd","import_icons","ErrorComponent","__name","errorMessage","setErrorMessage","translate","push","go","routerType","resource","action","React","import_react","import_core","import_antd","layoutStyles","containerStyles","titleStyles","imageContainer","LoginPage","__name","form","translate","authProvider","login","isLoading","CardTitle","React","titleStyles","layoutStyles","containerStyles","imageContainer","values","React","import_antd","import_icons","styles","ReadyPage","__name","import_react","import_core","WelcomePage","__name","React","WelcomePageFromCore","import_react","import_react","import_core","import_antd","layoutStyles","containerStyles","headStyles","bodyStyles","titleStyles","LoginPage","__name","providers","registerLink","forgotPasswordLink","rememberMe","contentProps","wrapperProps","renderContent","formProps","title","hideForm","token","form","translate","routerType","Link","LegacyLink","ActiveLink","authProvider","login","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","renderProviders","provider","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","RegisterPage","__name","providers","loginLink","wrapperProps","contentProps","renderContent","formProps","title","hideForm","token","form","translate","routerType","Link","LegacyLink","ActiveLink","authProvider","register","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","renderProviders","provider","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","ForgotPasswordPage","__name","loginLink","wrapperProps","contentProps","renderContent","formProps","title","token","form","translate","routerType","Link","LegacyLink","ActiveLink","forgotPassword","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","UpdatePasswordPage","__name","wrapperProps","contentProps","renderContent","formProps","title","token","form","translate","authProvider","updatePassword","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","CardContent","headStyles","bodyStyles","containerStyles","values","getFieldValue","_","value","layoutStyles","AuthPage","__name","props","type","React","RegisterPage","ForgotPasswordPage","UpdatePasswordPage","LoginPage","import_react","import_core","import_antd","import_icons","Breadcrumb","__name","breadcrumbProps","showHome","hideIcons","meta","routerType","breadcrumbs","Link","LegacyLink","hasDashboard","resources","rootRouteResource","ActiveLink","breadCrumbItems","label","icon","href","React","AntdBreadcrumb","_a","_b","import_react","import_pro_layout","import_antd","import_icons","import_ui_types","PageHeader","__name","children","props","_a","direction","renderBackButton","React","backIcon","title","subtitle","AntdPageHeader","import_react","import_core","import_antd","import_icons","AutoSaveIndicator","__name","status","success","React","Message","error","loading","idle","AutoSaveIndicatorCore","translationKey","defaultMessage","icon","translate","token","import_dayjs","rangePickerFilterMapper","__name","selectedKeys","event","key","dayjs","date","getValueFromEvent","__name","event","fileList","RefineThemes"]}
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/hooks/form/useForm.ts","../src/hooks/form/useModalForm/useModalForm.ts","../src/hooks/modal/useModal/index.tsx","../src/hooks/form/useDrawerForm/useDrawerForm.ts","../src/hooks/form/useStepsForm/useStepsForm.ts","../src/hooks/table/useTable/useTable.ts","../src/definitions/table/index.ts","../src/hooks/table/useTable/paginationLink.tsx","../src/hooks/table/useEditableTable/useEditableTable.ts","../src/hooks/fields/useSelect/index.ts","../src/hooks/fields/useCheckboxGroup/index.ts","../src/hooks/fields/useRadioGroup/index.ts","../src/hooks/import/index.tsx","../src/hooks/list/useSimpleList/useSimpleList.ts","../src/hooks/useFileUploadState/index.ts","../src/hooks/useSiderVisible/index.ts","../src/contexts/themedLayoutContext/index.tsx","../src/hooks/useThemedLayoutContext/index.ts","../src/providers/notificationProvider/index.tsx","../src/components/undoableNotification/index.tsx","../src/components/layout/index.tsx","../src/components/layout/sider/index.tsx","../src/components/layout/sider/styles.ts","../src/components/layout/header/index.tsx","../src/components/layout/title/index.tsx","../src/components/themedLayout/index.tsx","../src/components/themedLayout/sider/index.tsx","../src/components/themedLayout/sider/styles.ts","../src/components/themedLayout/header/index.tsx","../src/components/themedLayout/title/index.tsx","../src/components/themedLayoutV2/index.tsx","../src/components/themedLayoutV2/sider/index.tsx","../src/components/themedLayoutV2/sider/styles.ts","../src/components/themedLayoutV2/header/index.tsx","../src/components/themedLayoutV2/title/index.tsx","../src/components/buttons/create/index.tsx","../src/components/buttons/edit/index.tsx","../src/components/buttons/delete/index.tsx","../src/components/buttons/refresh/index.tsx","../src/components/buttons/show/index.tsx","../src/components/buttons/list/index.tsx","../src/components/buttons/export/index.tsx","../src/components/buttons/save/index.tsx","../src/components/buttons/clone/index.tsx","../src/components/buttons/import/index.tsx","../src/components/crud/list/index.tsx","../src/components/crud/create/index.tsx","../src/components/crud/edit/index.tsx","../src/components/crud/show/index.tsx","../src/components/fields/text/index.tsx","../src/components/fields/tag/index.tsx","../src/components/fields/email/index.tsx","../src/components/fields/image/index.tsx","../src/components/fields/boolean/index.tsx","../src/components/fields/date/index.tsx","../src/components/fields/file/index.tsx","../src/components/fields/url/index.tsx","../src/components/fields/number/index.tsx","../src/components/fields/markdown/index.tsx","../src/components/table/components/filterDropdown/index.tsx","../src/components/pages/error/index.tsx","../src/components/pages/login/index.tsx","../src/components/pages/login/styles.ts","../src/components/pages/ready/index.tsx","../src/components/pages/welcome/index.tsx","../src/components/pages/auth/index.tsx","../src/components/pages/auth/components/login/index.tsx","../src/components/pages/auth/components/styles.ts","../src/components/pages/auth/components/register/index.tsx","../src/components/pages/auth/components/forgotPassword/index.tsx","../src/components/pages/auth/components/updatePassword/index.tsx","../src/components/breadcrumb/index.tsx","../src/components/pageHeader/index.tsx","../src/components/autoSaveIndicator/index.tsx","../src/definitions/filter-mappers/index.ts","../src/definitions/upload/index.ts","../src/definitions/themes/index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./providers/index.js\";\nexport * from \"./components/index.js\";\nexport * from \"./contexts/index.js\";\n\nexport {\n getDefaultSortOrder,\n getDefaultFilter,\n mapAntdSorterToCrudSorting,\n mapAntdFilterToCrudFilter,\n} from \"./definitions/table/index.js\";\nexport { rangePickerFilterMapper } from \"./definitions/filter-mappers/index.js\";\nexport { getValueFromEvent } from \"./definitions/upload/index.js\";\n\nexport * from \"./definitions/themes/index.js\";\n","import React from \"react\";\nimport {\n type FormInstance,\n type FormProps,\n Form,\n type ButtonProps,\n} from \"antd\";\nimport { useForm as useFormSF, type UseFormConfig } from \"sunflower-antd\";\nimport {\n type AutoSaveProps,\n flattenObjectKeys,\n propertyPathToArray,\n} from \"@refinedev/core\";\n\nimport {\n type HttpError,\n type BaseRecord,\n useForm as useFormCore,\n type UseFormReturnType as UseFormReturnTypeCore,\n useWarnAboutChange,\n type UseFormProps as UseFormPropsCore,\n type CreateResponse,\n type UpdateResponse,\n pickNotDeprecated,\n useTranslate,\n useRefineContext,\n} from \"@refinedev/core\";\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n submitOnEnter?: boolean;\n /**\n * Shows notification when unsaved changes exist\n */\n warnWhenUnsavedChanges?: boolean;\n /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & AutoSaveProps<TVariables> &\n Pick<UseFormConfig, \"defaultFormValues\">;\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n form: FormInstance<TVariables>;\n formProps: FormProps<TVariables>;\n saveButtonProps: ButtonProps & {\n onClick: () => void;\n };\n onFinish: (\n values?: TVariables,\n ) => Promise<CreateResponse<TResponse> | UpdateResponse<TResponse> | void>;\n} & Pick<\n ReturnType<typeof useFormSF<TResponse, TVariables>>,\n \"defaultFormValuesLoading\"\n >;\n\n/**\n * `useForm` is used to manage forms. It uses Ant Design {@link https://ant.design/components/form/ Form} data scope management under the hood and returns the required props for managing the form actions.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n * @typeParam TResponse - Result data returned by the mutation function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TData`\n * @typeParam TResponseError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}. Defaults to `TError`\n *\n *\n */\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n action,\n resource,\n onMutationSuccess: onMutationSuccessProp,\n onMutationError: onMutationErrorProp,\n autoSave,\n submitOnEnter = false,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n redirect,\n successNotification,\n errorNotification,\n meta,\n metaData,\n queryMeta,\n mutationMeta,\n liveMode,\n liveParams,\n mutationMode,\n dataProviderName,\n onLiveEvent,\n invalidates,\n undoableTimeout,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n id: idFromProps,\n overtimeOptions,\n optimisticUpdateMap,\n defaultFormValues,\n disableServerSideValidation: disableServerSideValidationProp = false,\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const [formAnt] = Form.useForm();\n const formSF = useFormSF<TResponse, TVariables>({\n form: formAnt,\n defaultFormValues,\n });\n const { form } = formSF;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n onMutationSuccess: onMutationSuccessProp\n ? onMutationSuccessProp\n : undefined,\n onMutationError: async (error, _variables, _context) => {\n if (disableServerSideValidation) {\n onMutationErrorProp?.(error, _variables, _context);\n return;\n }\n\n // antd form expects error object to be in a specific format.\n let parsedErrors: {\n name: string | number | (string | number)[];\n errors?: string[] | undefined;\n }[] = [];\n\n // reset antd errors before setting new errors\n const fieldsValue = form.getFieldsValue() as unknown as object;\n\n const fields = Object.keys(flattenObjectKeys(fieldsValue));\n\n parsedErrors = fields.map((field) => {\n return {\n name: propertyPathToArray(field),\n errors: undefined,\n };\n });\n\n form.setFields(parsedErrors);\n\n const errors = error?.errors;\n // parse errors to antd form errors\n for (const key in errors) {\n const fieldError = errors[key];\n\n let newError: string[] = [];\n\n if (Array.isArray(fieldError)) {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"string\") {\n newError = [fieldError];\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = [\"Field is not valid.\"];\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = [translatedMessage];\n }\n\n parsedErrors.push({\n name: propertyPathToArray(key),\n errors: newError,\n });\n }\n\n form.setFields([...parsedErrors]);\n\n onMutationErrorProp?.(error, _variables, _context);\n },\n redirect,\n action,\n resource,\n successNotification,\n errorNotification,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n queryMeta,\n mutationMeta,\n liveMode,\n liveParams,\n mutationMode,\n dataProviderName,\n onLiveEvent,\n invalidates,\n undoableTimeout,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n id: idFromProps,\n overtimeOptions,\n optimisticUpdateMap,\n autoSave,\n });\n\n const { formLoading, onFinish, query, id, onFinishAutoSave } =\n useFormCoreResult;\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n // populate form with data when query is ready or id changes\n // form populated via initialValues prop\n React.useEffect(() => {\n form.resetFields();\n }, [query?.data?.data, id]);\n\n const onKeyUp = (event: React.KeyboardEvent<HTMLFormElement>) => {\n if (submitOnEnter && event.key === \"Enter\") {\n form.submit();\n }\n };\n\n const onValuesChange = (changeValues: object, allValues: any) => {\n if (changeValues && warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishFromProps = autoSave?.onFinish ?? ((values) => values);\n\n return onFinishAutoSave(onFinishFromProps(allValues)).catch(\n (error) => error,\n );\n }\n\n return changeValues;\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: () => {\n form.submit();\n },\n };\n\n return {\n form: formSF.form,\n formProps: {\n ...formSF.formProps,\n onFinish: (values: TVariables) =>\n onFinish(values).catch((error) => error),\n onKeyUp,\n onValuesChange,\n initialValues: query?.data?.data,\n },\n saveButtonProps,\n defaultFormValuesLoading: formSF.defaultFormValuesLoading,\n ...useFormCoreResult,\n onFinish: async (values?: TVariables) => {\n return await onFinish(values ?? formSF.form.getFieldsValue(true));\n },\n };\n};\n","import React, { useCallback } from \"react\";\nimport type { FormInstance, FormProps, ModalProps } from \"antd\";\n\nimport {\n useTranslate,\n useWarnAboutChange,\n type HttpError,\n type UseFormProps as UseFormPropsCore,\n type BaseRecord,\n type LiveModeProps,\n type BaseKey,\n useUserFriendlyName,\n useResource,\n type FormWithSyncWithLocationParams,\n useParsed,\n useGo,\n useInvalidate,\n} from \"@refinedev/core\";\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport { useModal } from \"@hooks/modal\";\n\nexport type useModalFormFromSFReturnType<TResponse, TVariables> = {\n open: boolean;\n form: FormInstance<TVariables>;\n show: (id?: BaseKey) => void;\n close: () => void;\n modalProps: ModalProps;\n formProps: FormProps<TVariables>;\n formLoading: boolean;\n defaultFormValuesLoading: boolean;\n formValues: {};\n initialValues: {};\n formResult: undefined;\n submit: (values?: TVariables) => Promise<TResponse>;\n /** @deprecated Please use `open` instead. */\n visible: boolean;\n};\n\ntype useModalFormConfig = {\n action: \"show\" | \"edit\" | \"create\" | \"clone\";\n};\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = Omit<\n UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >,\n \"saveButtonProps\" | \"deleteButtonProps\"\n> &\n useModalFormFromSFReturnType<TResponse, TVariables>;\n\nexport type UseModalFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n useModalFormConfig &\n LiveModeProps &\n FormWithSyncWithLocationParams & {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n/**\n * `useModalForm` hook allows you to manage a form within a modal. It returns Ant Design {@link https://ant.design/components/form/ Form} and {@link https://ant.design/components/modal/ Modal} components props.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useModalForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\nexport const useModalForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n syncWithLocation,\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoSave,\n invalidates,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n>): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n const invalidate = useInvalidate();\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(rest.resource);\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = rest.action ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...rest.meta,\n },\n autoSave,\n invalidates,\n ...rest,\n });\n\n const { form, formProps, id, setId, formLoading, onFinish, autoSaveProps } =\n useFormProps;\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const { show, close, modalProps } = useModal({\n modalProps: {\n open: defaultVisible,\n },\n });\n\n const visible = modalProps.open || false;\n const sunflowerUseModal: useModalFormFromSFReturnType<TResponse, TVariables> =\n {\n modalProps,\n form,\n formLoading,\n formProps,\n formResult: undefined,\n formValues: form.getFieldsValue,\n defaultFormValuesLoading: false,\n initialValues: {},\n submit: onFinish as any,\n close,\n open: modalProps.open || false,\n show,\n visible,\n };\n\n React.useEffect(() => {\n if (initiallySynced === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n\n if (typeof openStatus === \"boolean\") {\n if (openStatus) {\n show();\n }\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [id, visible, show, syncWithLocationKey, syncingId]);\n\n const saveButtonPropsSF = {\n disabled: formLoading,\n loading: formLoading,\n onClick: () => {\n form.submit();\n },\n };\n\n const handleClose = useCallback(() => {\n if (autoSaveProps.status === \"success\" && autoSave?.invalidateOnClose) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: rest.dataProviderName,\n resource: identifier,\n });\n }\n\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n sunflowerUseModal.close();\n }, [warnWhen, autoSaveProps.status]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n sunflowerUseModal.show();\n }\n },\n [id],\n );\n\n const { visible: _visible, ...otherModalProps } = modalProps;\n const newModalProps = { open: _visible, ...otherModalProps };\n\n return {\n ...useFormProps,\n ...sunflowerUseModal,\n show: handleShow,\n close: handleClose,\n open: visible,\n formProps: {\n ...formProps,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n onFinish: async (values) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n form.resetFields();\n }\n },\n },\n modalProps: {\n ...newModalProps,\n width: \"1000px\",\n okButtonProps: saveButtonPropsSF,\n title: translate(\n `${identifier}.titles.${rest.action}`,\n `${getUserFriendlyName(\n `${rest.action} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier\n }`,\n \"singular\",\n )}`,\n ),\n okText: translate(\"buttons.save\", \"Save\"),\n cancelText: translate(\"buttons.cancel\", \"Cancel\"),\n onCancel: handleClose,\n forceRender: true,\n },\n formLoading,\n };\n};\n","import type { ModalProps } from \"antd\";\nimport {\n useModal as useCoreModal,\n type useModalReturnType as useCoreModelReturnType,\n} from \"@refinedev/core\";\n\nexport type useModalReturnType = {\n modalProps: ModalProps;\n} & Omit<useCoreModelReturnType, \"visible\">;\n\nexport type useModalProps = {\n /**\n * Default props for Ant Design {@link https://ant.design/components/modal/ `<Modal>`} component.\n */\n modalProps?: ModalProps;\n};\n\n/**\n * By using `useModal` you get props for your records from API in accordance with Ant Design {@link https://ant.design/components/modal/ `<Modal>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/ui/useModal} for more details.\n */\nexport const useModal = ({\n modalProps = {},\n}: useModalProps = {}): useModalReturnType => {\n const { show, close, visible } = useCoreModal({\n defaultVisible: modalProps.open,\n });\n\n return {\n modalProps: {\n ...modalProps,\n onCancel: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n modalProps.onCancel?.(e);\n close();\n },\n open: visible,\n visible,\n },\n show,\n close,\n };\n};\n","import React, { useCallback } from \"react\";\nimport type { FormInstance, FormProps, DrawerProps, ButtonProps } from \"antd\";\nimport {\n useTranslate,\n useWarnAboutChange,\n type UseFormProps as UseFormPropsCore,\n type HttpError,\n type LiveModeProps,\n type BaseRecord,\n type FormWithSyncWithLocationParams,\n type BaseKey,\n useResource,\n useParsed,\n useGo,\n useModal,\n useInvalidate,\n} from \"@refinedev/core\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport type { DeleteButtonProps } from \"../../../components\";\n\nexport interface UseDrawerFormConfig {\n action: \"show\" | \"edit\" | \"create\" | \"clone\";\n}\n\nexport type UseDrawerFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n UseDrawerFormConfig &\n LiveModeProps &\n FormWithSyncWithLocationParams & {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n\nexport type UseDrawerFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n formProps: FormProps<TVariables> & {\n form: FormInstance<TVariables>;\n };\n show: (id?: BaseKey) => void;\n close: () => void;\n drawerProps: DrawerProps;\n saveButtonProps: ButtonProps;\n deleteButtonProps: DeleteButtonProps;\n formLoading: boolean;\n};\n\n/**\n * `useDrawerForm` hook allows you to manage a form within a drawer. It returns Ant Design {@link https://ant.design/components/form/ Form} and {@link https://ant.design/components/drawer/ Drawer} components props.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useDrawerForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\n\nexport const useDrawerForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n syncWithLocation,\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoSave,\n invalidates,\n ...rest\n}: UseDrawerFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n>): UseDrawerFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(rest.resource);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = rest.action ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `drawer-${resource?.identifier ?? resource?.name}-${action}`\n : undefined;\n\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...rest.meta,\n },\n autoSave,\n invalidates,\n ...rest,\n });\n\n const { form, formProps, formLoading, id, setId, onFinish, autoSaveProps } =\n useFormProps;\n\n React.useEffect(() => {\n if (initiallySynced === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n if (typeof openStatus === \"boolean\") {\n openStatus ? show() : close();\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId, initiallySynced]);\n\n React.useEffect(() => {\n if (initiallySynced === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [\n id,\n visible,\n show,\n close,\n syncWithLocationKey,\n syncingId,\n initiallySynced,\n ]);\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: () => {\n form.submit();\n },\n loading: formLoading,\n };\n\n const deleteButtonProps = {\n recordItemId: id,\n onSuccess: () => {\n setId?.(undefined);\n close();\n },\n };\n\n const handleClose = useCallback(() => {\n if (autoSaveProps.status === \"success\" && autoSave?.invalidateOnClose) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: rest.dataProviderName,\n resource: identifier,\n });\n }\n\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n close();\n setId?.(undefined);\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n return {\n ...useFormProps,\n show: handleShow,\n close: handleClose,\n formProps: {\n form,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n onFinish: async (values) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n form.resetFields();\n }\n },\n },\n drawerProps: {\n width: \"500px\",\n onClose: handleClose,\n open: visible,\n forceRender: true,\n },\n saveButtonProps,\n deleteButtonProps,\n formLoading,\n };\n};\n","import {\n useStepsForm as useStepsFormSF,\n type UseStepsFormConfig,\n} from \"sunflower-antd\";\nimport type { FormInstance, FormProps } from \"antd\";\n\nimport type {\n HttpError,\n UseFormProps as UseFormPropsCore,\n BaseRecord,\n} from \"@refinedev/core\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormFromSFReturnType<TResponse, TVariables> = {\n current: number;\n gotoStep: (step: number) => Promise<TVariables> | true;\n stepsProps: {\n current: number;\n onChange: (currentStep: number) => void;\n };\n formProps: FormProps<TVariables>;\n formLoading: boolean;\n defaultFormValuesLoading: boolean;\n formValues: {};\n initialValues: {};\n formResult: undefined;\n form: FormInstance<TVariables>;\n submit: (values?: TVariables) => Promise<TResponse>;\n};\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseStepsFormFromSFReturnType<TResponse, TVariables>;\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n UseStepsFormConfig;\n\n/**\n * `useStepsForm` hook allows you to split your form under an Ant Design based {@link https://ant.design/components/steps/ Steps} component and provides you with a few useful functionalities that will help you manage your form.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useStepsForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\nexport const useStepsForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>(\n props: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > = {},\n): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...props,\n });\n const { form, formProps } = useFormProps;\n\n const stepsPropsSunflower = useStepsFormSF<TResponse, TVariables>({\n isBackValidate: false,\n form: form,\n submit: (values: any) => {\n formProps?.onFinish?.(values);\n },\n ...props,\n });\n\n return {\n ...useFormProps,\n ...stepsPropsSunflower,\n formLoading: useFormProps.formLoading,\n formProps: {\n ...stepsPropsSunflower.formProps,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n },\n saveButtonProps: {\n ...useFormProps.saveButtonProps,\n onClick: () => stepsPropsSunflower.submit(),\n },\n };\n};\n","import React, { Children, createElement, Fragment } from \"react\";\nimport {\n Grid,\n type FormProps,\n Form,\n type TablePaginationConfig,\n type TableProps,\n} from \"antd\";\nimport { useForm as useFormSF } from \"sunflower-antd\";\n\nimport {\n useLiveMode,\n type BaseRecord,\n type CrudFilters,\n type HttpError,\n useTable as useTableCore,\n type useTableProps as useTablePropsCore,\n type useTableReturnType as useTableCoreReturnType,\n pickNotDeprecated,\n useSyncWithLocation,\n} from \"@refinedev/core\";\n\nimport {\n mapAntdSorterToCrudSorting,\n mapAntdFilterToCrudFilter,\n} from \"@definitions/table\";\nimport { PaginationLink } from \"./paginationLink\";\nimport type { FilterValue, SorterResult } from \"../../../definitions/table\";\n\nexport type useTableProps<TQueryFnData, TError, TSearchVariables, TData> =\n useTablePropsCore<TQueryFnData, TError, TData> & {\n onSearch?: (data: TSearchVariables) => CrudFilters | Promise<CrudFilters>;\n };\n\nexport type useTableReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n> = useTableCoreReturnType<TData, TError> & {\n searchFormProps: FormProps<TSearchVariables>;\n tableProps: TableProps<TData>;\n};\n\n/**\n * By using useTable, you are able to get properties that are compatible with\n * Ant Design {@link https://ant.design/components/table/ `<Table>`} component.\n * All features such as sorting, filtering and pagination comes as out of box.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/table/useTable/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TSearchVariables - Values for search params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useTable = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n onSearch,\n initialCurrent,\n initialPageSize,\n hasPagination = true,\n pagination,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n defaultSetFilterBehavior,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n syncWithLocation,\n resource,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: useTableProps<\n TQueryFnData,\n TError,\n TSearchVariables,\n TData\n> = {}): useTableReturnType<TData, TError, TSearchVariables> => {\n const {\n tableQueryResult,\n tableQuery,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n filters,\n setFilters,\n sorters,\n setSorters,\n sorter,\n setSorter,\n createLinkForSyncWithLocation,\n pageCount,\n overtime,\n } = useTableCore<TQueryFnData, TError, TData>({\n permanentSorter,\n permanentFilter,\n initialCurrent,\n initialPageSize,\n pagination,\n hasPagination,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n initialSorter,\n initialFilter,\n syncWithLocation,\n resource,\n defaultSetFilterBehavior,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n const { syncWithLocation: defaultSyncWithLocation } = useSyncWithLocation();\n const shouldSyncWithLocation = syncWithLocation ?? defaultSyncWithLocation;\n const breakpoint = Grid.useBreakpoint();\n const [form] = Form.useForm<TSearchVariables>();\n const formSF = useFormSF<any, TSearchVariables>({\n form: form,\n });\n const liveMode = useLiveMode(liveModeFromProp);\n\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n\n const preferredInitialFilters = pickNotDeprecated(\n filtersFromProp?.initial,\n initialFilter,\n );\n\n const { data, isFetched, isLoading } = tableQueryResult;\n\n React.useEffect(() => {\n if (shouldSyncWithLocation) {\n // get registered fields of form\n const registeredFields = formSF.form.getFieldsValue() as Record<\n string,\n any\n >;\n // map `filters` for registered fields\n const filterFilterMap = Object.keys(registeredFields).reduce(\n (acc, curr) => {\n // find filter for current field\n const filter = filters.find(\n (filter) => \"field\" in filter && filter.field === curr,\n );\n // if filter exists, set value to filter value\n if (filter) {\n acc[curr] = filter?.value;\n }\n return acc;\n },\n {} as Record<string, any>,\n );\n // set values to form\n formSF.form.setFieldsValue(filterFilterMap as any);\n }\n }, [shouldSyncWithLocation]);\n\n const onChange = (\n paginationState: TablePaginationConfig,\n tableFilters: Record<string, FilterValue | null>,\n sorter: SorterResult | SorterResult[],\n ) => {\n if (tableFilters && Object.keys(tableFilters).length > 0) {\n // Map Antd:Filter -> refine:CrudFilter\n const crudFilters = mapAntdFilterToCrudFilter(\n tableFilters,\n filters,\n preferredInitialFilters,\n );\n setFilters(crudFilters);\n }\n\n if (sorter && Object.keys(sorter).length > 0) {\n // Map Antd:Sorter -> refine:CrudSorting\n const crudSorting = mapAntdSorterToCrudSorting(sorter);\n setSorters(crudSorting);\n }\n\n if (isPaginationEnabled) {\n setCurrent?.(paginationState.current || 1);\n setPageSize?.(paginationState.pageSize || 10);\n }\n };\n\n const onFinish = async (value: TSearchVariables) => {\n if (onSearch) {\n const searchFilters = await onSearch(value);\n setFilters(searchFilters);\n\n if (isPaginationEnabled) {\n setCurrent?.(1);\n }\n }\n };\n\n const antdPagination = (): false | TablePaginationConfig => {\n if (isPaginationEnabled) {\n return {\n itemRender: (page, type, element) => {\n const link = createLinkForSyncWithLocation({\n pagination: {\n pageSize,\n current: page,\n },\n sorters,\n filters,\n });\n\n if (type === \"page\") {\n return createElement(PaginationLink, {\n to: link,\n element: `${page}`,\n });\n }\n if (type === \"next\" || type === \"prev\") {\n return createElement(PaginationLink, {\n to: link,\n element: element,\n });\n }\n\n if (type === \"jump-next\" || type === \"jump-prev\") {\n const elementChildren = (element as React.ReactElement)?.props\n ?.children;\n\n return createElement(PaginationLink, {\n to: link,\n element:\n Children.count(elementChildren) > 1\n ? createElement(Fragment, {}, elementChildren)\n : elementChildren,\n });\n }\n\n return element;\n },\n pageSize,\n current,\n simple: !breakpoint.sm,\n position: !breakpoint.sm ? [\"bottomCenter\"] : [\"bottomRight\"],\n total: data?.total,\n };\n }\n\n return false;\n };\n\n return {\n searchFormProps: {\n ...formSF.formProps,\n onFinish,\n },\n tableProps: {\n dataSource: data?.data,\n loading: liveMode === \"auto\" ? isLoading : !isFetched,\n onChange,\n pagination: antdPagination(),\n scroll: { x: true },\n },\n tableQueryResult,\n tableQuery,\n sorters,\n sorter,\n filters,\n setSorters,\n setSorter,\n setFilters,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount,\n createLinkForSyncWithLocation,\n overtime,\n };\n};\n","import {\n type CrudFilters,\n type CrudOperators,\n type CrudSorting,\n type CrudFilter,\n getDefaultFilter as getDefaultFilterCore,\n getDefaultSortOrder as getDefaultSortOrderCore,\n type ConditionalFilter,\n type LogicalFilter,\n} from \"@refinedev/core\";\nimport type { TableProps } from \"antd\";\n\nexport type FilterValue = Parameters<\n NonNullable<TableProps[\"onChange\"]>\n>[1][string];\nexport type SortOrder = NonNullable<TableProps[\"sortDirections\"]>[number];\nexport type SorterResult = Exclude<\n Parameters<NonNullable<TableProps[\"onChange\"]>>[2],\n any[]\n>;\n\nexport const getDefaultSortOrder = (\n columnName: string,\n sorter?: CrudSorting,\n): SortOrder | undefined => {\n const sort = getDefaultSortOrderCore(columnName, sorter);\n\n if (sort) {\n return `${sort}end`;\n }\n\n return undefined;\n};\n\n/**\n * @deprecated getDefaultFilter moved to `@refinedev/core`. Use from `@refinedev/core`\n */\nexport const getDefaultFilter = (\n columnName: string,\n filters?: CrudFilters,\n operatorType: CrudOperators = \"eq\",\n): CrudFilter[\"value\"] | undefined => {\n return getDefaultFilterCore(columnName, filters, operatorType);\n};\n\nexport const mapAntdSorterToCrudSorting = (\n sorter: SorterResult | SorterResult[],\n): CrudSorting => {\n const crudSorting: CrudSorting = [];\n if (Array.isArray(sorter)) {\n sorter\n .sort((a, b) => {\n return ((a.column?.sorter as { multiple?: number }).multiple ?? 0) <\n ((b.column?.sorter as { multiple?: number }).multiple ?? 0)\n ? -1\n : 0;\n })\n .map((item) => {\n if (item.field && item.order) {\n const field = Array.isArray(item.field)\n ? item.field.join(\".\")\n : `${item.field}`;\n\n crudSorting.push({\n field: `${item.columnKey ?? field}`,\n order: item.order.replace(\"end\", \"\") as \"asc\" | \"desc\",\n });\n }\n });\n } else {\n if (sorter.field && sorter.order) {\n const field = Array.isArray(sorter.field)\n ? sorter.field.join(\".\")\n : `${sorter.field}`;\n\n crudSorting.push({\n field: `${sorter.columnKey ?? field}`,\n order: sorter.order.replace(\"end\", \"\") as \"asc\" | \"desc\",\n });\n }\n }\n\n return crudSorting;\n};\n\nexport const mapAntdFilterToCrudFilter = (\n tableFilters: Record<\n string,\n | FilterValue\n | (string | number | boolean)\n | (string | number | boolean)[]\n | null\n >,\n prevFilters: CrudFilters,\n initialFilters?: CrudFilters,\n): CrudFilters => {\n const crudFilters: CrudFilters = [];\n const mapInitialFilter: Record<string, CrudFilter> = (\n initialFilters ?? []\n ).reduce((acc, item) => {\n const field =\n (item as ConditionalFilter).key || (item as LogicalFilter).field;\n return { ...acc, [field]: item };\n }, {});\n\n Object.keys(tableFilters).map((field) => {\n const value = tableFilters[field];\n const operator =\n prevFilters\n .filter((i) => i.operator !== \"or\")\n .find((p: any) => p.field === field)?.operator ||\n mapInitialFilter[field]?.operator;\n\n if (operator !== \"or\" && operator !== \"and\") {\n crudFilters.push({\n field,\n operator: operator ?? (Array.isArray(value) ? \"in\" : \"eq\"),\n value,\n });\n }\n });\n\n return crudFilters;\n};\n","import { useLink, useRouterContext, useRouterType } from \"@refinedev/core\";\nimport React, { type ReactNode } from \"react\";\n\ninterface PaginationLinkProps {\n to: string;\n element: ReactNode;\n}\n\nexport const PaginationLink = ({ to, element }: PaginationLinkProps) => {\n const { Link: LegacyLink } = useRouterContext();\n const routerType = useRouterType();\n const Link = useLink();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n e.preventDefault();\n }}\n >\n {element}\n </ActiveLink>\n );\n};\n","import { useTable } from \"@hooks\";\nimport type {\n BaseKey,\n BaseRecord,\n HttpError,\n UseFormProps,\n} from \"@refinedev/core\";\nimport type { ButtonProps } from \"antd\";\n\nimport type { useTableProps, useTableReturnType } from \"../useTable\";\nimport { type UseFormReturnType, useForm } from \"../../form/useForm\";\n\nexport type useEditableTableReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = useTableReturnType<TData, TError, TSearchVariables> &\n UseFormReturnType<TQueryFnData, TError, TVariables> & {\n saveButtonProps: ButtonProps & {\n onClick: () => void;\n };\n cancelButtonProps: ButtonProps & {\n onClick: () => void;\n };\n editButtonProps: (id: BaseKey) => ButtonProps & {\n onClick: () => void;\n };\n isEditing: (id: BaseKey) => boolean;\n };\n\ntype useEditableTableProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = Omit<\n useTableProps<TQueryFnData, TError, TSearchVariables, TData>,\n \"successNotification\" | \"errorNotification\"\n> &\n UseFormProps<TQueryFnData, TError, TVariables> & {\n /**\n * When true, row will be closed after successful submit.\n */\n autoSubmitClose?: boolean;\n };\n\n/**\n * `useEditeableTable` allows you to implement edit feature on the table with ease,\n * on top of all the features that {@link https://refine.dev/docs/api-reference/core/hooks/useTable/ `useTable`} provides.\n * `useEditableTable` return properties that can be used on Ant Design's {@link https://ant.design/components/table/ `<Table>`}\n * and {@link https://ant.design/components/form/ `<Form>`} components.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/table/useTable/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params\n * @typeParam TSearchVariables - Values for search params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\nexport const useEditableTable = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n autoSubmitClose = true,\n ...props\n}: useEditableTableProps<\n TQueryFnData,\n TError,\n TVariables,\n TSearchVariables,\n TData\n> = {}): useEditableTableReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TSearchVariables,\n TData\n> => {\n const table = useTable<TQueryFnData, TError, TSearchVariables, TData>({\n ...props,\n successNotification: undefined,\n errorNotification: undefined,\n });\n const edit = useForm<TQueryFnData, TError, TVariables>({\n ...props,\n action: \"edit\",\n redirect: false,\n });\n\n const { id: editId, setId, saveButtonProps } = edit;\n\n const cancelButtonProps = {\n onClick: () => {\n setId(undefined);\n },\n };\n\n const editButtonProps = (id: BaseKey) => {\n return {\n onClick: () => setId(id),\n };\n };\n\n const isEditing = (id: BaseKey) => id === editId;\n\n return {\n ...table,\n ...edit,\n formProps: {\n ...edit.formProps,\n onFinish: async (values) => {\n const result = await edit.onFinish(values);\n if (autoSubmitClose) {\n setId(undefined);\n }\n return result;\n },\n },\n saveButtonProps,\n cancelButtonProps,\n editButtonProps,\n isEditing,\n };\n};\n","import type { SelectProps } from \"antd/lib/select\";\nimport type { QueryObserverResult } from \"@tanstack/react-query\";\n\nimport {\n useSelect as useSelectCore,\n type BaseRecord,\n type GetManyResponse,\n type GetListResponse,\n type HttpError,\n type UseSelectProps,\n type BaseOption,\n} from \"@refinedev/core\";\n\nexport type UseSelectReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n selectProps: SelectProps<TOption>;\n query: QueryObserverResult<GetListResponse<TData>>;\n defaultValueQuery: QueryObserverResult<GetManyResponse<TData>>;\n /**\n * @deprecated Use `query` instead\n */\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n /**\n * @deprecated Use `defaultValueQuery` instead\n */\n defaultValueQueryResult: QueryObserverResult<GetManyResponse<TData>>;\n};\n\n/**\n * `useSelect` hook allows you to manage an Ant Design {@link https://ant.design/components/select/ Select} component when records in a resource needs to be used as select options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useSelect/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSelect = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>(\n props: UseSelectProps<TQueryFnData, TError, TData>,\n): UseSelectReturnType<TData, TOption> => {\n const { query, defaultValueQuery, onSearch, options } = useSelectCore<\n TQueryFnData,\n TError,\n TData,\n TOption\n >(props);\n\n return {\n selectProps: {\n options,\n onSearch,\n loading: defaultValueQuery.isFetching,\n showSearch: true,\n filterOption: false,\n },\n query,\n defaultValueQuery,\n queryResult: query,\n defaultValueQueryResult: defaultValueQuery,\n };\n};\n","import type { QueryObserverResult } from \"@tanstack/react-query\";\nimport type { Checkbox } from \"antd\";\n\nimport {\n type BaseRecord,\n type GetListResponse,\n type HttpError,\n type UseSelectProps,\n useSelect,\n type BaseKey,\n pickNotDeprecated,\n type BaseOption,\n} from \"@refinedev/core\";\n\nexport type UseCheckboxGroupReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n checkboxGroupProps: Omit<\n React.ComponentProps<typeof Checkbox.Group>,\n \"options\"\n > & {\n options: TOption[];\n };\n query: QueryObserverResult<GetListResponse<TData>>;\n /**\n * @deprecated Use `query` instead\n */\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n};\n\ntype UseCheckboxGroupProps<TQueryFnData, TError, TData> = Omit<\n UseSelectProps<TQueryFnData, TError, TData>,\n \"defaultValue\"\n> & {\n /**\n * Sets the default value\n */\n defaultValue?: BaseKey[];\n};\n\n/**\n * `useCheckboxGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/checkbox/#components-checkbox-demo-group Checkbox.Group} component when records in a resource needs to be used as checkbox options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useCheckboxGroup/} for more details\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useCheckboxGroup = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: UseCheckboxGroupProps<\n TQueryFnData,\n TError,\n TData\n>): UseCheckboxGroupReturnType<TData, TOption> => {\n const { query, options } = useSelect<TQueryFnData, TError, TData, TOption>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n return {\n checkboxGroupProps: {\n options,\n defaultValue,\n },\n query,\n queryResult: query,\n };\n};\n","import type { QueryObserverResult } from \"@tanstack/react-query\";\nimport type { Radio } from \"antd\";\n\nimport {\n type BaseKey,\n type BaseOption,\n type BaseRecord,\n type GetListResponse,\n type HttpError,\n pickNotDeprecated,\n useSelect,\n type UseSelectProps,\n} from \"@refinedev/core\";\n\nexport type UseRadioGroupReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n radioGroupProps: Omit<React.ComponentProps<typeof Radio.Group>, \"options\"> & {\n options: TOption[];\n };\n query: QueryObserverResult<GetListResponse<TData>>;\n /**\n * @deprecated Use `query` instead\n */\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n};\n\ntype UseRadioGroupProps<TQueryFnData, TError, TData> = Omit<\n UseSelectProps<TQueryFnData, TError, TData>,\n \"defaultValue\"\n> & {\n /**\n * Sets the default value\n */\n defaultValue?: BaseKey;\n};\n\n/**\n * `useRadioGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/radio/#components-radio-demo-radiogroup-with-name Radio.Group} component when records in a resource needs to be used as radio options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useRadioGroup/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useRadioGroup = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: UseRadioGroupProps<TQueryFnData, TError, TData>): UseRadioGroupReturnType<\n TData,\n TOption\n> => {\n const { query, options } = useSelect<TQueryFnData, TError, TData, TOption>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n selectedOptionsOrder,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n\n return {\n radioGroupProps: {\n options,\n defaultValue,\n },\n query,\n queryResult: query,\n };\n};\n","import React from \"react\";\nimport {\n type ButtonProps,\n notification,\n type UploadProps,\n Progress,\n} from \"antd\";\nimport {\n useTranslate,\n useResource,\n type BaseRecord,\n type HttpError,\n useImport as useImportCore,\n type UseImportReturnType,\n type ImportOptions,\n pickNotDeprecated,\n} from \"@refinedev/core\";\n\n/**\n * `useImport` hook allows you to handle your csv import logic easily.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/import/useImport} for more details.\n *\n * @typeParam TItem - Interface of parsed csv data\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useImport = <\n TItem = any,\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = any,\n>({\n resource: resourceFromProp,\n resourceName,\n mapData = (item) => item as unknown as TVariables,\n paparseOptions,\n batchSize = Number.MAX_SAFE_INTEGER,\n onFinish,\n meta,\n metaData,\n dataProviderName,\n onProgress: onProgressFromProp,\n}: ImportOptions<TItem, TVariables, TData> = {}): Omit<\n UseImportReturnType<TData, TVariables, TError>,\n \"handleChange\" | \"inputProps\"\n> & {\n uploadProps: UploadProps;\n buttonProps: ButtonProps;\n} => {\n const t = useTranslate();\n\n const { resource } = useResource(resourceFromProp ?? resourceName);\n\n const { mutationResult, isLoading, handleChange } = useImportCore<\n TItem,\n TData,\n TError,\n TVariables\n >({\n resource: resource?.identifier ?? resource?.name,\n mapData,\n paparseOptions,\n batchSize,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n onFinish,\n onProgress:\n onProgressFromProp ??\n (({ totalAmount, processedAmount }) => {\n if (totalAmount > 0 && processedAmount > 0) {\n const description = (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"-7px\",\n }}\n >\n <Progress\n type=\"circle\"\n percent={Math.floor((processedAmount / totalAmount) * 100)}\n size={50}\n strokeColor=\"#1890ff\"\n status=\"normal\"\n />\n <span style={{ marginLeft: 8, width: \"100%\" }}>\n {t(\n \"notifications.importProgress\",\n {\n processed: processedAmount,\n total: totalAmount,\n },\n `Importing: ${processedAmount}/${totalAmount}`,\n )}\n </span>\n </div>\n );\n\n notification.open({\n description,\n message: null,\n key: `${resource}-import`,\n duration: 0,\n });\n\n if (processedAmount >= totalAmount) {\n }\n\n if (processedAmount === totalAmount) {\n setTimeout(() => {\n notification.destroy(`${resource}-import`);\n }, 4500);\n }\n }\n }),\n });\n\n return {\n uploadProps: {\n onChange: handleChange,\n beforeUpload: () => false,\n showUploadList: false,\n accept: \".csv\",\n },\n buttonProps: {\n type: \"default\",\n loading: isLoading,\n },\n mutationResult,\n isLoading,\n };\n};\n","import { Children, createElement, Fragment } from \"react\";\nimport { type ListProps, type FormProps, Form, Grid } from \"antd\";\n\nimport {\n type BaseRecord,\n type CrudFilters,\n type HttpError,\n useTable as useTableCore,\n type useTableProps as useTablePropsCore,\n type useTableReturnType,\n pickNotDeprecated,\n} from \"@refinedev/core\";\nimport { useLiveMode } from \"@refinedev/core\";\nimport { PaginationLink } from \"@hooks/table/useTable/paginationLink\";\nimport type { PaginationConfig } from \"antd/lib/pagination\";\n\nexport type useSimpleListProps<TQueryFnData, TError, TSearchVariables, TData> =\n useTablePropsCore<TQueryFnData, TError, TData> & {\n onSearch?: (data: TSearchVariables) => CrudFilters | Promise<CrudFilters>;\n };\n\nexport type useSimpleListReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = Omit<useTableReturnType<TData>, \"tableQueryResult\" | \"tableQuery\"> & {\n listProps: ListProps<TData>;\n /**\n * @deprecated Use `query` instead\n */\n queryResult: useTableReturnType[\"tableQueryResult\"];\n query: useTableReturnType[\"tableQuery\"];\n searchFormProps: FormProps<TSearchVariables>;\n};\n\n/**\n * By using `useSimpleList` you get props for your records from API in accordance with Ant Design {@link https://ant.design/components/list/ `<List>`} component.\n * All features such as pagination, sorting come out of the box.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/list/useSimpleList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TSearchVariables - Antd form values\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSimpleList = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource,\n initialCurrent,\n initialPageSize,\n pagination,\n hasPagination = true,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n defaultSetFilterBehavior,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n onSearch,\n queryOptions,\n syncWithLocation,\n successNotification,\n errorNotification,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: useSimpleListProps<\n TQueryFnData,\n TError,\n TSearchVariables,\n TData\n> = {}): useSimpleListReturnType<TData, TSearchVariables> => {\n const {\n sorters,\n sorter,\n filters,\n current,\n pageSize,\n pageCount,\n setFilters,\n setCurrent,\n setPageSize,\n setSorter,\n setSorters,\n createLinkForSyncWithLocation,\n tableQueryResult: queryResult,\n tableQuery: query,\n overtime,\n } = useTableCore({\n resource,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n defaultSetFilterBehavior,\n initialCurrent,\n initialPageSize,\n queryOptions,\n successNotification,\n errorNotification,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n syncWithLocation,\n dataProviderName,\n pagination,\n hasPagination,\n });\n\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n\n const breakpoint = Grid.useBreakpoint();\n\n const liveMode = useLiveMode(liveModeFromProp);\n\n const [form] = Form.useForm<TSearchVariables>();\n\n const { data, isFetched, isLoading } = queryResult;\n\n const onChange = (page: number, pageSize?: number): void => {\n if (isPaginationEnabled) {\n setCurrent(page);\n setPageSize(pageSize || 10);\n }\n };\n\n const onFinish = async (values: TSearchVariables) => {\n if (onSearch) {\n const searchFilters = await onSearch(values);\n if (isPaginationEnabled) {\n setCurrent?.(1);\n }\n return setFilters(searchFilters);\n }\n };\n\n const antdPagination = (): false | PaginationConfig => {\n if (isPaginationEnabled) {\n return {\n itemRender: (page, type, element) => {\n const link = createLinkForSyncWithLocation({\n pagination: {\n pageSize,\n current: page,\n },\n sorters,\n filters,\n });\n\n if (type === \"page\") {\n return createElement(PaginationLink, {\n to: link,\n element: `${page}`,\n });\n }\n if (type === \"next\" || type === \"prev\") {\n return createElement(PaginationLink, {\n to: link,\n element: element,\n });\n }\n\n if (type === \"jump-next\" || type === \"jump-prev\") {\n const elementChildren = (element as React.ReactElement)?.props\n ?.children;\n\n return createElement(PaginationLink, {\n to: link,\n element:\n Children.count(elementChildren) > 1\n ? createElement(Fragment, {}, elementChildren)\n : elementChildren,\n });\n }\n\n return element;\n },\n pageSize,\n current,\n simple: !breakpoint.sm,\n total: data?.total,\n onChange,\n };\n }\n\n return false;\n };\n\n return {\n searchFormProps: {\n form,\n onFinish,\n },\n listProps: {\n dataSource: data?.data,\n loading: liveMode === \"auto\" ? isLoading : !isFetched,\n pagination: antdPagination(),\n },\n query,\n queryResult,\n filters,\n setFilters,\n sorter,\n setSorter,\n sorters,\n setSorters,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount,\n createLinkForSyncWithLocation,\n overtime,\n };\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport type { UploadChangeParam } from \"antd/lib/upload\";\n\nexport type UseFileUploadStateType = () => {\n isLoading: boolean;\n onChange: (info: UploadChangeParam) => void;\n};\n\nexport const useFileUploadState: UseFileUploadStateType = () => {\n const [isLoading, setIsloading] = useState(false);\n\n const onChange = useCallback((info: UploadChangeParam) => {\n const fileListLoadings = mapStatusToLoading(info.fileList);\n\n if (fileListLoadings.includes(true)) {\n setIsloading(true);\n } else {\n setIsloading(false);\n }\n }, []);\n\n return useMemo(() => ({ isLoading, onChange }), [isLoading]);\n};\n\nconst mapStatusToLoading = (files: UploadChangeParam[\"fileList\"]) => {\n return files.map((file) => {\n switch (file.status) {\n case \"uploading\":\n return true;\n default:\n return false;\n }\n });\n};\n","import { useContext } from \"react\";\n\nimport { ThemedLayoutContext } from \"@contexts\";\n\nexport type UseSiderVisibleType = {\n siderVisible: boolean;\n drawerSiderVisible: boolean;\n setSiderVisible: (visible: boolean) => void;\n setDrawerSiderVisible: (visible: boolean) => void;\n};\n\n/**\n * @deprecated Please use `useThemedLayoutContext` instead.\n */\nexport const useSiderVisible = (): UseSiderVisibleType => {\n const {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n } = useContext(ThemedLayoutContext);\n\n return {\n siderVisible: mobileSiderOpen,\n setSiderVisible: setMobileSiderOpen,\n drawerSiderVisible: siderCollapsed,\n setDrawerSiderVisible: setSiderCollapsed,\n };\n};\n","import React, { type ReactNode, useState } from \"react\";\n\nimport type { IThemedLayoutContext } from \"./IThemedLayoutContext\";\n\nexport const ThemedLayoutContext = React.createContext<IThemedLayoutContext>({\n siderCollapsed: false,\n mobileSiderOpen: false,\n setSiderCollapsed: () => undefined,\n setMobileSiderOpen: () => undefined,\n});\n\nexport const ThemedLayoutContextProvider: React.FC<{\n children: ReactNode;\n initialSiderCollapsed?: boolean;\n}> = ({ children, initialSiderCollapsed }) => {\n const [siderCollapsed, setSiderCollapsed] = useState(\n initialSiderCollapsed ?? false,\n );\n const [mobileSiderOpen, setMobileSiderOpen] = useState(false);\n\n return (\n <ThemedLayoutContext.Provider\n value={{\n siderCollapsed,\n mobileSiderOpen,\n setSiderCollapsed,\n setMobileSiderOpen,\n }}\n >\n {children}\n </ThemedLayoutContext.Provider>\n );\n};\n","import { useContext } from \"react\";\n\nimport { ThemedLayoutContext } from \"@contexts\";\nimport type { IThemedLayoutContext } from \"@contexts/themedLayoutContext/IThemedLayoutContext\";\n\nexport type UseThemedLayoutContextType = IThemedLayoutContext;\n\nexport const useThemedLayoutContext = (): UseThemedLayoutContextType => {\n const {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n } = useContext(ThemedLayoutContext);\n\n return {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n };\n};\n","import type { NotificationProvider } from \"@refinedev/core\";\nimport { App, notification as staticNotification } from \"antd\";\nimport React from \"react\";\n\nimport { UndoableNotification } from \"@components/undoableNotification\";\n\n/**\n * @deprecated `notificationProvider` is deprecated due to not being compatible with theme changes in Ant Design. Please use `useNotificationProvider` export as your notification provider.\n * @see https://refine.dev/docs/api-reference/antd/theming/#usenotificationprovider-compatible-with-theme\n */\n\nexport const notificationProvider: NotificationProvider = {\n open: ({\n key,\n message,\n description,\n type,\n cancelMutation,\n undoableTimeout,\n }) => {\n if (type === \"progress\") {\n staticNotification.open({\n key,\n description: (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={() => {\n cancelMutation?.();\n staticNotification.destroy(key ?? \"\");\n }}\n undoableTimeout={undoableTimeout}\n />\n ),\n message: null,\n duration: 0,\n closeIcon: <></>,\n });\n } else {\n staticNotification.open({\n key,\n description: message,\n message: description ?? null,\n type,\n });\n }\n },\n close: (key) => staticNotification.destroy(key),\n};\n\nexport const useNotificationProvider = (): NotificationProvider => {\n const { notification: notificationFromContext } = App.useApp();\n const notification =\n \"open\" in notificationFromContext\n ? notificationFromContext\n : staticNotification;\n\n const notificationProvider: NotificationProvider = {\n open: ({\n key,\n message,\n description,\n type,\n cancelMutation,\n undoableTimeout,\n }) => {\n if (type === \"progress\") {\n notification.open({\n key,\n description: (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={() => {\n cancelMutation?.();\n notification.destroy(key ?? \"\");\n }}\n undoableTimeout={undoableTimeout}\n />\n ),\n message: null,\n duration: 0,\n closeIcon: <></>,\n });\n } else {\n notification.open({\n key,\n description: message,\n message: description ?? null,\n type,\n });\n }\n },\n close: (key) => notification.destroy(key),\n };\n\n return notificationProvider;\n};\n","import React from \"react\";\nimport { Button, Progress } from \"antd\";\nimport type { OpenNotificationParams } from \"@refinedev/core\";\nimport { UndoOutlined } from \"@ant-design/icons\";\n\nexport type UndoableNotificationProps = {\n notificationKey: OpenNotificationParams[\"key\"];\n message: OpenNotificationParams[\"message\"];\n cancelMutation: OpenNotificationParams[\"cancelMutation\"];\n undoableTimeout: OpenNotificationParams[\"undoableTimeout\"];\n};\n\nexport const UndoableNotification: React.FC<UndoableNotificationProps> = ({\n message,\n cancelMutation,\n undoableTimeout,\n}) => (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"-7px\",\n }}\n >\n <Progress\n type=\"circle\"\n percent={(undoableTimeout ?? 0) * 20}\n format={(time) => time && time / 20}\n size={50}\n strokeColor=\"#1890ff\"\n status=\"normal\"\n />\n <span style={{ marginLeft: 8, width: \"100%\" }}>{message}</span>\n <Button\n style={{ flexShrink: 0 }}\n onClick={cancelMutation}\n disabled={undoableTimeout === 0}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<UndoOutlined />}\n />\n </div>\n);\n","import React from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { Sider as DefaultSider } from \"./sider\";\nimport { Header as DefaultHeader } from \"./header\";\nimport type { RefineLayoutLayoutProps } from \"./types\";\n\n/**\n * @deprecated use `<ThemedLayout>` instead with 100% backward compatibility.\n * @see https://refine.dev/docs/api-reference/antd/components/antd-themed-layout\n **/\nexport const Layout: React.FC<RefineLayoutLayoutProps> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n\n return (\n <AntdLayout style={{ minHeight: \"100vh\" }}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n );\n};\n","import React, { useState } from \"react\";\nimport { Layout, Menu, Grid, ConfigProvider, Drawer, Button } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n type ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { Title as DefaultTitle } from \"@components\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport type { RefineLayoutSiderProps } from \"../types\";\n\nexport const Sider: React.FC<RefineLayoutSiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n}) => {\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const [drawerOpen, setDrawerOpen] = useState<boolean>(false);\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? DefaultTitle;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n style={{\n fontWeight: isSelected ? \"bold\" : \"normal\",\n }}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n >\n <Link to={route ?? \"\"}>{label}</Link>\n {!collapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <Menu.Item key=\"logout\" onClick={handleLogout} icon={<LogoutOutlined />}>\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n <Menu.Item\n key=\"dashboard\"\n style={{\n fontWeight: selectedKey === \"/\" ? \"bold\" : \"normal\",\n }}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<DashboardOutlined />}\n >\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!collapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <>\n <Menu\n theme=\"dark\"\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n onClick={() => {\n setDrawerOpen(false);\n if (!breakpoint.lg) {\n setCollapsed(true);\n }\n }}\n >\n {renderSider()}\n </Menu>\n </>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <RenderToTitle collapsed={false} />\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setDrawerOpen(true)}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n const renderContent = () => {\n if (isMobile) {\n return renderDrawerSider();\n }\n\n return (\n <Layout.Sider\n collapsible\n collapsed={collapsed}\n onCollapse={(collapsed: boolean): void => setCollapsed(collapsed)}\n collapsedWidth={80}\n breakpoint=\"lg\"\n >\n <RenderToTitle collapsed={collapsed} />\n {renderMenu()}\n </Layout.Sider>\n );\n };\n\n return (\n <ConfigProvider\n theme={{\n components: {\n Menu: {\n colorItemBg: \"transparent\",\n colorItemText: \"#fff\",\n colorItemTextSelected: \"#fff\",\n colorItemBgSelected: \"transparent\",\n colorItemTextHover: \"#fff\",\n },\n },\n }}\n >\n {renderContent()}\n </ConfigProvider>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import { useActiveAuthProvider, useGetIdentity } from \"@refinedev/core\";\nimport { Avatar, Layout as AntdLayout, Space, Typography } from \"antd\";\nimport React from \"react\";\nimport type { RefineLayoutHeaderProps } from \"../types\";\n\nexport const Header: React.FC<RefineLayoutHeaderProps> = () => {\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n return shouldRenderHeader ? (\n <AntdLayout.Header\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n }}\n >\n <Space style={{ marginLeft: \"8px\" }}>\n {user?.name && (\n <Typography.Text style={{ color: \"white\" }} strong>\n {user.name}\n </Typography.Text>\n )}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </AntdLayout.Header>\n ) : null;\n};\n","import React from \"react\";\nimport {\n type TitleProps,\n useRouterContext,\n useRouterType,\n useLink,\n} from \"@refinedev/core\";\n\nexport const Title: React.FC<TitleProps> = ({ collapsed }) => {\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink to=\"/\">\n {collapsed ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine-mini.svg\"\n alt=\"Refine\"\n style={{\n margin: \"0 auto\",\n padding: \"12px 0\",\n maxHeight: \"65.5px\",\n }}\n />\n </div>\n ) : (\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine\"\n style={{\n width: \"200px\",\n padding: \"12px 24px\",\n }}\n />\n )}\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { ThemedSider as DefaultSider } from \"./sider\";\nimport { ThemedHeader as DefaultHeader } from \"./header\";\nimport type { RefineThemedLayoutProps } from \"./types\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedLayout: React.FC<RefineThemedLayoutProps> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n\n return (\n <AntdLayout style={{ minHeight: \"100vh\" }}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n );\n};\n","import React, { useState } from \"react\";\nimport { Layout, Menu, Grid, Drawer, Button, theme } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n LeftOutlined,\n RightOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n type ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport type { RefineThemedLayoutSiderProps } from \"../types\";\nimport { ThemedTitle } from \"@components\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedSider: React.FC<RefineThemedLayoutSiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n}) => {\n const { token } = theme.useToken();\n\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const [drawerOpen, setDrawerOpen] = useState<boolean>(false);\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? ThemedTitle;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n >\n <Link to={route ?? \"\"}>{label}</Link>\n {!collapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item\n key=\"logout\"\n onClick={() => handleLogout()}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<LogoutOutlined />}\n >\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <Menu.Item key=\"dashboard\" icon={<DashboardOutlined />}>\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!collapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <>\n <Menu\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n style={{\n marginTop: \"8px\",\n border: \"none\",\n }}\n onClick={() => {\n setDrawerOpen(false);\n if (!breakpoint.lg) {\n setCollapsed(true);\n }\n }}\n >\n {renderSider()}\n </Menu>\n </>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider\n style={{\n height: \"100vh\",\n overflow: \"hidden\",\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n >\n <div\n style={{\n width: \"200px\",\n padding: \"0 16px\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n <RenderToTitle collapsed={false} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setDrawerOpen(true)}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n if (isMobile) {\n return renderDrawerSider();\n }\n\n return (\n <Layout.Sider\n style={{\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n collapsible\n collapsed={collapsed}\n onCollapse={(collapsed) => setCollapsed(collapsed)}\n collapsedWidth={80}\n breakpoint=\"lg\"\n trigger={\n <Button\n type=\"text\"\n style={{\n borderRadius: 0,\n height: \"100%\",\n width: \"100%\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n {collapsed ? (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <RightOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n ) : (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <LeftOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n )}\n </Button>\n }\n >\n <div\n style={{\n width: collapsed ? \"80px\" : \"200px\",\n padding: collapsed ? \"0\" : \"0 16px\",\n display: \"flex\",\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n fontSize: \"14px\",\n }}\n >\n <RenderToTitle collapsed={collapsed} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import React from \"react\";\nimport { Layout as AntdLayout, Typography, Avatar, Space, theme } from \"antd\";\nimport { useActiveAuthProvider, useGetIdentity } from \"@refinedev/core\";\nimport type { RefineThemedLayoutHeaderProps } from \"../types\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedHeader: React.FC<RefineThemedLayoutHeaderProps> = () => {\n const { token } = theme.useToken();\n\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n if (!shouldRenderHeader) {\n return null;\n }\n\n return (\n <AntdLayout.Header\n style={{\n backgroundColor: token.colorBgElevated,\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n }}\n >\n <Space>\n <Space size=\"middle\">\n {user?.name && <Typography.Text strong>{user.name}</Typography.Text>}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </Space>\n </AntdLayout.Header>\n );\n};\n","import React from \"react\";\nimport { useRouterContext, useRouterType, useLink } from \"@refinedev/core\";\nimport { Typography, theme, Space } from \"antd\";\nimport type { RefineLayoutThemedTitleProps } from \"../types\";\n\nconst defaultText = \"Refine Project\";\n\nconst defaultIcon = (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"refine-logo\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.7889 0.422291C12.6627 -0.140764 11.3373 -0.140764 10.2111 0.422291L2.21115 4.42229C0.85601 5.09986 0 6.48491 0 8V16C0 17.5151 0.85601 18.9001 2.21115 19.5777L10.2111 23.5777C11.3373 24.1408 12.6627 24.1408 13.7889 23.5777L21.7889 19.5777C23.144 18.9001 24 17.5151 24 16V8C24 6.48491 23.144 5.09986 21.7889 4.42229L13.7889 0.422291ZM8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8V16C16 18.2091 14.2091 20 12 20C9.79086 20 8 18.2091 8 16V8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M14 8C14 9.10457 13.1046 10 12 10C10.8954 10 10 9.10457 10 8C10 6.89543 10.8954 6 12 6C13.1046 6 14 6.89543 14 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedTitle: React.FC<RefineLayoutThemedTitleProps> = ({\n collapsed,\n icon = defaultIcon,\n text = defaultText,\n wrapperStyles,\n}) => {\n const { token } = theme.useToken();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to=\"/\"\n style={{\n display: \"inline-block\",\n textDecoration: \"none\",\n }}\n >\n <Space\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"inherit\",\n ...wrapperStyles,\n }}\n >\n <div\n style={{\n height: \"24px\",\n width: \"24px\",\n color: token.colorPrimary,\n }}\n >\n {icon}\n </div>\n\n {!collapsed && (\n <Typography.Title\n style={{\n fontSize: \"inherit\",\n marginBottom: 0,\n fontWeight: 700,\n }}\n >\n {text}\n </Typography.Title>\n )}\n </Space>\n </ActiveLink>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { ThemedSiderV2 as DefaultSider } from \"./sider\";\nimport { ThemedHeaderV2 as DefaultHeader } from \"./header\";\nimport type { RefineThemedLayoutV2Props } from \"./types\";\nimport { ThemedLayoutContextProvider } from \"@contexts\";\n\nexport const ThemedLayoutV2: React.FC<RefineThemedLayoutV2Props> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n initialSiderCollapsed,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n const hasSider = !!SiderToRender({ Title });\n\n return (\n <ThemedLayoutContextProvider initialSiderCollapsed={initialSiderCollapsed}>\n <AntdLayout style={{ minHeight: \"100vh\" }} hasSider={hasSider}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n </ThemedLayoutContextProvider>\n );\n};\n","import React, { useContext } from \"react\";\nimport {\n Layout,\n Menu,\n Grid,\n Drawer,\n Button,\n theme,\n ConfigProvider,\n} from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n LeftOutlined,\n RightOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n type ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport type { RefineThemedLayoutV2SiderProps } from \"../types\";\nimport { ThemedTitleV2 } from \"@components\";\nimport { useThemedLayoutContext } from \"@hooks\";\n\nexport const ThemedSiderV2: React.FC<RefineThemedLayoutV2SiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n fixed,\n activeItemDisabled = false,\n}) => {\n const { token } = theme.useToken();\n const {\n siderCollapsed,\n setSiderCollapsed,\n mobileSiderOpen,\n setMobileSiderOpen,\n } = useThemedLayoutContext();\n\n const isExistAuthentication = useIsExistAuthentication();\n const direction = useContext(ConfigProvider.ConfigContext)?.direction;\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? ThemedTitleV2;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n\n const linkStyle: React.CSSProperties =\n activeItemDisabled && isSelected ? { pointerEvents: \"none\" } : {};\n\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n style={linkStyle}\n >\n <Link to={route ?? \"\"} style={linkStyle}>\n {label}\n </Link>\n {!siderCollapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item\n key=\"logout\"\n onClick={() => handleLogout()}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<LogoutOutlined />}\n >\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n <Menu.Item key=\"dashboard\" icon={<DashboardOutlined />}>\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!siderCollapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed: siderCollapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <Menu\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n style={{\n paddingTop: \"8px\",\n border: \"none\",\n overflow: \"auto\",\n height: \"calc(100% - 72px)\",\n }}\n onClick={() => {\n setMobileSiderOpen(false);\n }}\n >\n {renderSider()}\n </Menu>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={mobileSiderOpen}\n onClose={() => setMobileSiderOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider\n style={{\n height: \"100vh\",\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n >\n <div\n style={{\n width: \"200px\",\n padding: \"0 16px\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n <RenderToTitle collapsed={false} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setMobileSiderOpen(true)}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n if (isMobile) {\n return renderDrawerSider();\n }\n\n const siderStyles: React.CSSProperties = {\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n };\n\n if (fixed) {\n siderStyles.position = \"fixed\";\n siderStyles.top = 0;\n siderStyles.height = \"100vh\";\n siderStyles.zIndex = 999;\n }\n const renderClosingIcons = () => {\n const iconProps = { style: { color: token.colorPrimary } };\n const OpenIcon = direction === \"rtl\" ? RightOutlined : LeftOutlined;\n const CollapsedIcon = direction === \"rtl\" ? LeftOutlined : RightOutlined;\n const IconComponent = siderCollapsed ? CollapsedIcon : OpenIcon;\n\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n return <IconComponent {...iconProps} />;\n };\n\n return (\n <>\n {fixed && (\n <div\n style={{\n width: siderCollapsed ? \"80px\" : \"200px\",\n transition: \"all 0.2s\",\n }}\n />\n )}\n <Layout.Sider\n style={siderStyles}\n collapsible\n collapsed={siderCollapsed}\n onCollapse={(collapsed, type) => {\n if (type === \"clickTrigger\") {\n setSiderCollapsed(collapsed);\n }\n }}\n collapsedWidth={80}\n breakpoint=\"lg\"\n trigger={\n <Button\n type=\"text\"\n style={{\n borderRadius: 0,\n height: \"100%\",\n width: \"100%\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n {renderClosingIcons()}\n </Button>\n }\n >\n <div\n style={{\n width: siderCollapsed ? \"80px\" : \"200px\",\n padding: siderCollapsed ? \"0\" : \"0 16px\",\n display: \"flex\",\n justifyContent: siderCollapsed ? \"center\" : \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n fontSize: \"14px\",\n }}\n >\n <RenderToTitle collapsed={siderCollapsed} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import React from \"react\";\nimport { Layout as AntdLayout, Typography, Avatar, Space, theme } from \"antd\";\nimport {\n pickNotDeprecated,\n useActiveAuthProvider,\n useGetIdentity,\n} from \"@refinedev/core\";\nimport type { RefineThemedLayoutV2HeaderProps } from \"../types\";\n\nexport const ThemedHeaderV2: React.FC<RefineThemedLayoutV2HeaderProps> = ({\n isSticky,\n sticky,\n}) => {\n const { token } = theme.useToken();\n\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n if (!shouldRenderHeader) {\n return null;\n }\n\n const headerStyles: React.CSSProperties = {\n backgroundColor: token.colorBgElevated,\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n };\n\n if (pickNotDeprecated(sticky, isSticky)) {\n headerStyles.position = \"sticky\";\n headerStyles.top = 0;\n headerStyles.zIndex = 1;\n }\n\n return (\n <AntdLayout.Header style={headerStyles}>\n <Space>\n <Space size=\"middle\">\n {user?.name && <Typography.Text strong>{user.name}</Typography.Text>}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </Space>\n </AntdLayout.Header>\n );\n};\n","import React from \"react\";\nimport {\n useRouterContext,\n useRouterType,\n useLink,\n useRefineOptions,\n} from \"@refinedev/core\";\nimport { Typography, theme, Space } from \"antd\";\nimport type { RefineLayoutThemedTitleProps } from \"../types\";\n\nexport const ThemedTitleV2: React.FC<RefineLayoutThemedTitleProps> = ({\n collapsed,\n icon: iconFromProps,\n text: textFromProps,\n wrapperStyles,\n}) => {\n const {\n title: { icon: defaultIcon, text: defaultText } = {},\n } = useRefineOptions();\n const icon =\n typeof iconFromProps === \"undefined\" ? defaultIcon : iconFromProps;\n const text =\n typeof textFromProps === \"undefined\" ? defaultText : textFromProps;\n const { token } = theme.useToken();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to=\"/\"\n style={{\n display: \"inline-block\",\n textDecoration: \"none\",\n }}\n >\n <Space\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"inherit\",\n ...wrapperStyles,\n }}\n >\n <div\n style={{\n height: \"24px\",\n width: \"24px\",\n color: token.colorPrimary,\n }}\n >\n {icon}\n </div>\n\n {!collapsed && (\n <Typography.Title\n style={{\n fontSize: \"inherit\",\n marginBottom: 0,\n fontWeight: 700,\n }}\n >\n {text}\n </Typography.Title>\n )}\n </Space>\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { PlusSquareOutlined } from \"@ant-design/icons\";\nimport { useCreateButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { CreateButtonProps } from \"../types\";\n\n/**\n * <CreateButton> uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#create `create`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful to redirect the app to the create page route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/create-button} for more details.\n */\nexport const CreateButton: React.FC<CreateButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useCreateButton(\n {\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n accessControl,\n meta,\n },\n );\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<PlusSquareOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.CreateButton}\n className={RefineButtonClassNames.CreateButton}\n type=\"primary\"\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { EditOutlined } from \"@ant-design/icons\";\nimport { useEditButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { EditButtonProps } from \"../types\";\n\n/**\n * `<EditButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#edit `edit`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the edit page with the record id route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/edit-button} for more details.\n */\nexport const EditButton: React.FC<EditButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, label, title, hidden, disabled, LinkComponent } = useEditButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n meta,\n accessControl,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<EditOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.EditButton}\n className={RefineButtonClassNames.EditButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button, Popconfirm } from \"antd\";\nimport { DeleteOutlined } from \"@ant-design/icons\";\nimport { useDeleteButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { DeleteButtonProps } from \"../types\";\n\n/**\n * `<DeleteButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/button/ `<Popconfirm>`} components.\n * When you try to delete something, a pop-up shows up and asks for confirmation. When confirmed it executes the `useDelete` method provided by your `dataProvider`.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/delete-button} for more details.\n */\nexport const DeleteButton: React.FC<DeleteButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n children,\n successNotification,\n errorNotification,\n hideText = false,\n accessControl,\n metaData,\n meta,\n dataProviderName,\n confirmTitle,\n confirmOkText,\n confirmCancelText,\n invalidates,\n ...rest\n}) => {\n const {\n title,\n label,\n hidden,\n disabled,\n loading,\n confirmTitle: defaultConfirmTitle,\n confirmOkLabel: defaultConfirmOkLabel,\n cancelLabel: defaultCancelLabel,\n onConfirm,\n } = useDeleteButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n dataProviderName,\n invalidates,\n meta,\n onSuccess,\n mutationMode: mutationModeProp,\n errorNotification,\n successNotification,\n accessControl,\n });\n\n if (hidden) return null;\n\n return (\n <Popconfirm\n key=\"delete\"\n okText={confirmOkText ?? defaultConfirmOkLabel}\n cancelText={confirmCancelText ?? defaultCancelLabel}\n okType=\"danger\"\n title={confirmTitle ?? defaultConfirmTitle}\n okButtonProps={{ disabled: loading }}\n onConfirm={onConfirm}\n disabled={\n typeof rest?.disabled !== \"undefined\" ? rest.disabled : disabled\n }\n >\n <Button\n danger\n loading={loading}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<DeleteOutlined />}\n title={title}\n disabled={disabled}\n data-testid={RefineButtonTestIds.DeleteButton}\n className={RefineButtonClassNames.DeleteButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </Popconfirm>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { RedoOutlined } from \"@ant-design/icons\";\nimport { useRefreshButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { RefreshButtonProps } from \"../types\";\n\n/**\n * `<RefreshButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component\n * to update the data shown on the page via the {@link https://refine.dev/docs/api-reference/core/hooks/invalidate/useInvalidate `useInvalidate`} hook.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/refresh-button} for more details.\n */\nexport const RefreshButton: React.FC<RefreshButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n dataProviderName,\n children,\n meta: _meta,\n metaData: _metaData,\n ...rest\n}) => {\n const { onClick, label, loading } = useRefreshButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n dataProviderName,\n });\n\n return (\n <Button\n onClick={onClick}\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<RedoOutlined spin={loading} />}\n data-testid={RefineButtonTestIds.RefreshButton}\n className={RefineButtonClassNames.RefreshButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { EyeOutlined } from \"@ant-design/icons\";\nimport { useShowButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ShowButtonProps } from \"../types\";\n\n/**\n * `<ShowButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#show `show`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the show page with the record id route of resource.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/show-button} for more details.\n */\nexport const ShowButton: React.FC<ShowButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, label, title, hidden, disabled, LinkComponent } = useShowButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n id: recordItemId,\n accessControl,\n meta,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<EyeOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.ShowButton}\n className={RefineButtonClassNames.ShowButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { BarsOutlined } from \"@ant-design/icons\";\nimport { useListButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ListButtonProps } from \"../types\";\n\n/**\n * `<ListButton>` is using Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#list `list`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the list page route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/list-button} for more details.\n */\nexport const ListButton: React.FC<ListButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, label, title, hidden, disabled, LinkComponent } = useListButton({\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n accessControl,\n meta,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<BarsOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.ListButton}\n className={RefineButtonClassNames.ListButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { ExportOutlined } from \"@ant-design/icons\";\nimport { useExportButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ExportButtonProps } from \"../types\";\n\n/**\n * `<ExportButton>` is an Ant Design {@link https://ant.design/components/button/ `<Button>`} with a default export icon and a default text with \"Export\".\n * It only has presentational value.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/export-button} for more details.\n */\nexport const ExportButton: React.FC<ExportButtonProps> = ({\n hideText = false,\n children,\n ...rest\n}) => {\n const { label } = useExportButton();\n\n return (\n <Button\n type=\"default\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<ExportOutlined />}\n data-testid={RefineButtonTestIds.ExportButton}\n className={RefineButtonClassNames.ExportButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { SaveOutlined } from \"@ant-design/icons\";\nimport { useSaveButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { SaveButtonProps } from \"../types\";\n\n/**\n * `<SaveButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses it for presantation purposes only. Some of the hooks that refine has adds features to this button.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/save-button} for more details.\n */\nexport const SaveButton: React.FC<SaveButtonProps> = ({\n hideText = false,\n children,\n ...rest\n}) => {\n const { label } = useSaveButton();\n\n return (\n <Button\n type=\"primary\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<SaveOutlined />}\n data-testid={RefineButtonTestIds.SaveButton}\n className={RefineButtonClassNames.SaveButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { PlusSquareOutlined } from \"@ant-design/icons\";\nimport { useCloneButton } from \"@refinedev/core\";\nimport {\n RefineButtonTestIds,\n RefineButtonClassNames,\n} from \"@refinedev/ui-types\";\n\nimport type { CloneButtonProps } from \"../types\";\n\n/**\n * `<CloneButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#clone `clone`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation useNavigation} under the hood.\n * It can be useful when redirecting the app to the create page with the record id route of resource.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/clone-button} for more details.\n */\nexport const CloneButton: React.FC<CloneButtonProps> = ({\n resourceNameOrRouteName: propResourceNameOrRouteName,\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const { to, LinkComponent, label, disabled, hidden, title } = useCloneButton({\n id: recordItemId,\n resource: resourceNameFromProps ?? propResourceNameOrRouteName,\n accessControl,\n meta,\n });\n\n if (hidden) return null;\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<PlusSquareOutlined />}\n disabled={disabled}\n title={title}\n data-testid={RefineButtonTestIds.CloneButton}\n className={RefineButtonClassNames.CloneButton}\n {...rest}\n >\n {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n );\n};\n","import React from \"react\";\nimport { Button, Upload } from \"antd\";\nimport { ImportOutlined } from \"@ant-design/icons\";\nimport { useImportButton } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport type { ImportButtonProps } from \"../types\";\n\n/**\n * `<ImportButton>` is compatible with the {@link https://refine.dev/docs/api-reference/antd/hooks/import/useImport `useImport`} hook and is meant to be used as it's upload button.\n * It uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/upload/ `<Upload>`} components.\n * It wraps a `<Button>` component with an `<Upload>` component and accepts properties for `<Button>` and `<Upload>` components separately.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/import-button} for more details.\n */\nexport const ImportButton: React.FC<ImportButtonProps> = ({\n uploadProps,\n buttonProps,\n hideText = false,\n children,\n loading,\n}) => {\n const { label } = useImportButton();\n\n return (\n <Upload {...uploadProps}>\n <Button\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<ImportOutlined />}\n data-testid={RefineButtonTestIds.ImportButton}\n className={RefineButtonClassNames.ImportButton}\n loading={loading}\n {...buttonProps}\n >\n {!hideText && (children ?? label)}\n </Button>\n </Upload>\n );\n};\n","import React from \"react\";\nimport { Space } from \"antd\";\nimport {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useResource,\n} from \"@refinedev/core\";\n\nimport {\n Breadcrumb,\n CreateButton,\n type CreateButtonProps,\n PageHeader,\n} from \"@components\";\nimport type { ListProps } from \"../types\";\n\n/**\n * `<List>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/list} for more details.\n */\nexport const List: React.FC<ListProps> = ({\n canCreate,\n title,\n children,\n createButtonProps: createButtonPropsFromProps,\n resource: resourceFromProps,\n wrapperProps,\n contentProps,\n headerProps,\n breadcrumb: breadcrumbFromProps,\n headerButtonProps,\n headerButtons,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const getUserFriendlyName = useUserFriendlyName();\n\n const { resource, identifier } = useResource(resourceFromProps);\n\n const isCreateButtonVisible =\n canCreate ??\n ((resource?.canCreate ?? !!resource?.create) || createButtonPropsFromProps);\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const createButtonProps: CreateButtonProps | undefined = isCreateButtonVisible\n ? {\n size: \"middle\",\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n ...createButtonPropsFromProps,\n }\n : undefined;\n\n const defaultExtra = isCreateButtonVisible ? (\n <CreateButton {...createButtonProps} />\n ) : null;\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n title={\n title ??\n translate(\n `${identifier}.titles.list`,\n getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"plural\",\n ),\n )\n }\n extra={\n headerButtons ? (\n <Space wrap {...headerButtonProps}>\n {typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultExtra,\n createButtonProps,\n })\n : headerButtons}\n </Space>\n ) : (\n defaultExtra\n )\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <div {...(contentProps ?? {})}>{children}</div>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useResource,\n useBack,\n} from \"@refinedev/core\";\n\nimport {\n Breadcrumb,\n SaveButton,\n PageHeader,\n type SaveButtonProps,\n} from \"@components\";\nimport type { CreateProps } from \"../types\";\n\n/**\n * `<Create>` provides us a layout to display the page.\n * It does not contain any logic but adds extra functionalities like action buttons and giving titles to the page.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/create} for more details.\n */\nexport const Create: React.FC<CreateProps> = ({\n title,\n saveButtonProps: saveButtonPropsFromProps,\n children,\n resource: resourceFromProps,\n isLoading = false,\n breadcrumb: breadcrumbFromProps,\n wrapperProps,\n headerProps,\n contentProps,\n headerButtonProps,\n headerButtons,\n footerButtonProps,\n footerButtons,\n goBack: goBackFromProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const back = useBack();\n const { goBack } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const { resource, action, identifier } = useResource(resourceFromProps);\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n htmlType: \"submit\",\n };\n\n const defaultFooterButtons = (\n <>\n <SaveButton {...saveButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" || typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.create`,\n `Create ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n extra={\n <Space wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: null,\n })\n : headerButtons\n : null}\n </Space>\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={[\n <Space\n key=\"action-buttons\"\n style={{ float: \"right\", marginRight: 24 }}\n {...(footerButtonProps ?? {})}\n >\n {footerButtons\n ? typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: defaultFooterButtons,\n saveButtonProps: saveButtonProps,\n })\n : footerButtons\n : defaultFooterButtons}\n </Space>,\n ]}\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useMutationMode,\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useBack,\n useResource,\n useGo,\n useToPath,\n} from \"@refinedev/core\";\n\nimport {\n DeleteButton,\n RefreshButton,\n ListButton,\n SaveButton,\n Breadcrumb,\n PageHeader,\n type ListButtonProps,\n type RefreshButtonProps,\n type DeleteButtonProps,\n type SaveButtonProps,\n AutoSaveIndicator,\n} from \"@components\";\nimport type { EditProps } from \"../types\";\n\n/**\n * `<Edit>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/edit} for more details.\n */\nexport const Edit: React.FC<EditProps> = ({\n title,\n saveButtonProps: saveButtonPropsFromProps,\n mutationMode: mutationModeProp,\n recordItemId,\n children,\n deleteButtonProps: deleteButtonPropsFromProps,\n canDelete,\n resource: resourceFromProps,\n isLoading = false,\n dataProviderName,\n breadcrumb: breadcrumbFromProps,\n wrapperProps,\n headerProps,\n contentProps,\n headerButtonProps,\n headerButtons,\n footerButtonProps,\n footerButtons,\n goBack: goBackFromProps,\n autoSaveProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n const { mutationMode: mutationModeContext } = useMutationMode();\n const mutationMode = mutationModeProp ?? mutationModeContext;\n\n const routerType = useRouterType();\n const back = useBack();\n const go = useGo();\n const { goBack, list: legacyGoList } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const {\n resource,\n action,\n id: idFromParams,\n identifier,\n } = useResource(resourceFromProps);\n\n const goListPath = useToPath({\n resource,\n action: \"list\",\n });\n\n const id = recordItemId ?? idFromParams;\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const hasList = resource?.list && !recordItemId;\n const isDeleteButtonVisible =\n canDelete ??\n ((resource?.meta?.canDelete ?? resource?.canDelete) ||\n deleteButtonPropsFromProps);\n\n const listButtonProps: ListButtonProps | undefined = hasList\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n }\n : undefined;\n\n const refreshButtonProps: RefreshButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n dataProviderName,\n };\n\n const deleteButtonProps: DeleteButtonProps | undefined = isDeleteButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n mutationMode,\n onSuccess: () => {\n if (routerType === \"legacy\") {\n legacyGoList(resource?.route ?? resource?.name ?? \"\");\n } else {\n go({ to: goListPath });\n }\n },\n recordItemId: id,\n dataProviderName,\n ...deleteButtonPropsFromProps,\n }\n : undefined;\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n };\n\n const defaultHeaderButtons = (\n <>\n {autoSaveProps && <AutoSaveIndicator {...autoSaveProps} />}\n {hasList && <ListButton {...listButtonProps} />}\n <RefreshButton {...refreshButtonProps} />\n </>\n );\n\n const defaultFooterButtons = (\n <>\n {isDeleteButtonVisible && <DeleteButton {...deleteButtonProps} />}\n <SaveButton {...saveButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" && typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.edit`,\n `Edit ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n extra={\n <Space wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultHeaderButtons,\n listButtonProps,\n refreshButtonProps,\n })\n : headerButtons\n : defaultHeaderButtons}\n </Space>\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={[\n <Space\n key=\"footer-buttons\"\n wrap\n style={{\n float: \"right\",\n marginRight: 24,\n }}\n {...(footerButtonProps ?? {})}\n >\n {footerButtons\n ? typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: defaultFooterButtons,\n deleteButtonProps,\n saveButtonProps,\n })\n : footerButtons\n : defaultFooterButtons}\n </Space>,\n ]}\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResource,\n useToPath,\n useRouterType,\n useBack,\n useGo,\n} from \"@refinedev/core\";\n\nimport {\n EditButton,\n DeleteButton,\n RefreshButton,\n ListButton,\n Breadcrumb,\n PageHeader,\n type ListButtonProps,\n type EditButtonProps,\n type DeleteButtonProps,\n type RefreshButtonProps,\n} from \"@components\";\nimport type { ShowProps } from \"../types\";\n\n/**\n * `<Show>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/show} for more details.\n */\nexport const Show: React.FC<ShowProps> = ({\n title,\n canEdit,\n canDelete,\n isLoading = false,\n children,\n resource: resourceFromProps,\n recordItemId,\n dataProviderName,\n breadcrumb: breadcrumbFromProps,\n contentProps,\n headerProps,\n wrapperProps,\n headerButtons,\n footerButtons,\n footerButtonProps,\n headerButtonProps,\n goBack: goBackFromProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const back = useBack();\n const go = useGo();\n const { goBack, list: legacyGoList } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const {\n resource,\n action,\n id: idFromParams,\n identifier,\n } = useResource(resourceFromProps);\n\n const goListPath = useToPath({\n resource,\n action: \"list\",\n });\n\n const id = recordItemId ?? idFromParams;\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const hasList = resource?.list && !recordItemId;\n const isDeleteButtonVisible =\n canDelete ?? resource?.meta?.canDelete ?? resource?.canDelete;\n const isEditButtonVisible = canEdit ?? resource?.canEdit ?? !!resource?.edit;\n\n const listButtonProps: ListButtonProps | undefined = hasList\n ? {\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n }\n : undefined;\n const editButtonProps: EditButtonProps | undefined = isEditButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n type: \"primary\",\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n }\n : undefined;\n const deleteButtonProps: DeleteButtonProps | undefined = isDeleteButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n onSuccess: () => {\n if (routerType === \"legacy\") {\n legacyGoList(resource?.route ?? resource?.name ?? \"\");\n } else {\n go({ to: goListPath });\n }\n },\n dataProviderName,\n }\n : undefined;\n const refreshButtonProps: RefreshButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n dataProviderName,\n };\n\n const defaultHeaderButtons = (\n <>\n {hasList && <ListButton {...listButtonProps} />}\n {isEditButtonVisible && <EditButton {...editButtonProps} />}\n {isDeleteButtonVisible && <DeleteButton {...deleteButtonProps} />}\n <RefreshButton {...refreshButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" && typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.show`,\n `Show ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n extra={\n <Space key=\"extra-buttons\" wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultHeaderButtons,\n deleteButtonProps,\n editButtonProps,\n listButtonProps,\n refreshButtonProps,\n })\n : headerButtons\n : defaultHeaderButtons}\n </Space>\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={\n footerButtons\n ? [\n <Space key=\"footer-buttons\" wrap {...footerButtonProps}>\n {typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: null,\n })\n : footerButtons}\n </Space>,\n ]\n : undefined\n }\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport type { TextFieldProps } from \"../types\";\n\n/**\n * This field lets you show basic text. It uses Ant Design's {@link https://ant.design/components/typography/#Typography.Text `<Typography.Text>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/text} for more details.\n */\nexport const TextField: React.FC<TextFieldProps> = ({ value, ...rest }) => {\n return <Typography.Text {...rest}>{value}</Typography.Text>;\n};\n","import React from \"react\";\nimport { Tag } from \"antd\";\n\nimport type { TagFieldProps } from \"../types\";\n\n/**\n * This field lets you display a value in a tag. It uses Ant Design's {@link https://ant.design/components/tag/ `<Tag>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/tag} for more details.\n */\nexport const TagField: React.FC<TagFieldProps> = ({ value, ...rest }) => {\n return <Tag {...rest}>{value?.toString()}</Tag>;\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport type { EmailFieldProps } from \"../types\";\n\n/**\n * This field is used to display email values. It uses the {@link https://ant.design/components/typography/#FAQ `<Link>`} component\n * of {@link https://ant.design/components/typography `<Typography>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/email} for more details.\n */\nexport const EmailField: React.FC<EmailFieldProps> = ({ value, ...rest }) => {\n return (\n <Typography.Link href={`mailto:${value}`} {...rest}>\n {value}\n </Typography.Link>\n );\n};\n","import React from \"react\";\nimport { Image } from \"antd\";\n\nimport type { ImageFieldProps } from \"../types\";\n\n/**\n * This field is used to display images and uses {@link https://ant.design/components/image/#header `<Image>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/image} for more details.\n */\nexport const ImageField: React.FC<ImageFieldProps> = ({\n value,\n imageTitle,\n ...rest\n}) => {\n return <Image {...rest} src={value} title={imageTitle} />;\n};\n","import React from \"react\";\nimport { Tooltip } from \"antd\";\n\nimport { CheckOutlined, CloseOutlined } from \"@ant-design/icons\";\n\nimport type { BooleanFieldProps } from \"../types\";\n\n/**\n * This field is used to display boolean values. It uses the {@link https://ant.design/components/tooltip/#header `<Tooltip>`} values from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/boolean} for more details.\n */\nexport const BooleanField: React.FC<BooleanFieldProps> = ({\n value,\n valueLabelTrue = \"true\",\n valueLabelFalse = \"false\",\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n trueIcon = <CheckOutlined />,\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n falseIcon = <CloseOutlined />,\n ...rest\n}) => {\n return (\n <Tooltip title={value ? valueLabelTrue : valueLabelFalse} {...rest}>\n {value ? <span>{trueIcon}</span> : <span>{falseIcon}</span>}\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport dayjs from \"dayjs\";\nimport { Typography } from \"antd\";\n\nimport LocalizedFormat from \"dayjs/plugin/localizedFormat\";\n\nimport type { DateFieldProps } from \"../types\";\n\n/**\n * This field is used to display dates. It uses {@link https://day.js.org/docs/en/display/format `Day.js`} to display date format.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/date} for more details.\n */\nexport const DateField: React.FC<DateFieldProps> = ({\n value,\n locales,\n format: dateFormat = \"L\",\n ...rest\n}) => {\n dayjs.extend(LocalizedFormat);\n\n const defaultLocale = dayjs.locale();\n\n return (\n <Typography.Text {...rest}>\n {value\n ? dayjs(value)\n .locale(locales || defaultLocale)\n .format(dateFormat)\n : \"\"}\n </Typography.Text>\n );\n};\n","import React from \"react\";\n\nimport { UrlField } from \"@components\";\nimport type { FileFieldProps } from \"../types\";\n\n/**\n * This field is used to display files and uses {@link https://ant.design/components/typography `<Typography.Link>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/file} for more details.\n */\nexport const FileField: React.FC<FileFieldProps> = ({\n title,\n src,\n ...rest\n}) => {\n return (\n <UrlField value={src} title={title} {...rest}>\n {title ?? src}\n </UrlField>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport type { UrlFieldProps } from \"../types\";\n\n/**\n * This field lets you embed a link. It uses Ant Design's {@link https://ant.design/components/typography/ `<Typography.Link>`} component.\n * You can pass a URL in its `value` property and you can show a text in its place by passing any `children`.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/url} for more details.\n */\nexport const UrlField: React.FC<UrlFieldProps> = ({\n children,\n value,\n ...rest\n}) => {\n return (\n <Typography.Link href={value} {...rest}>\n {children ?? value}\n </Typography.Link>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === \"object\" &&\n Intl &&\n typeof Intl.NumberFormat === \"function\"\n );\n}\n\nimport type { NumberFieldProps } from \"../types\";\n\n/**\n * This field is used to display a number formatted according to the browser locale, right aligned. and uses {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl `Intl`} to display date format.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/number} for more details.\n */\nexport const NumberField: React.FC<NumberFieldProps> = ({\n value,\n locale,\n options,\n ...rest\n}) => {\n const number = Number(value);\n\n return (\n <Typography.Text {...rest}>\n {toLocaleStringSupportsOptions()\n ? number.toLocaleString(locale, options)\n : number}\n </Typography.Text>\n );\n};\n","import React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport gfm from \"remark-gfm\";\n\nimport type { RefineFieldMarkdownProps } from \"../types\";\n\n/**\n * This field lets you display markdown content. It supports {@link https://github.github.com/gfm/ GitHub Flavored Markdown}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/markdown} for more details.\n */\nexport const MarkdownField: React.FC<RefineFieldMarkdownProps> = ({\n value = \"\",\n}) => {\n // There's an issue related with the type inconsistency of the `remark-gfm` and `remark-rehype` packages, we need to cast the `gfm` as any. (https://github.com/orgs/rehypejs/discussions/63)\n return (\n <ReactMarkdown\n remarkPlugins={[gfm] as unknown as ReactMarkdown.PluggableList}\n >\n {value}\n </ReactMarkdown>\n );\n};\n","import React, { type ReactNode } from \"react\";\nimport { Button, Space, type TableColumnProps } from \"antd\";\nimport dayjs from \"dayjs\";\nimport { FilterOutlined } from \"@ant-design/icons\";\nimport { useTranslate } from \"@refinedev/core\";\n\ntype AntdFilterDropdownProps = React.ComponentProps<\n Exclude<TableColumnProps<any>[\"filterDropdown\"], ReactNode>\n>;\n\nexport type MapValueEvent = \"onChange\" | \"value\";\n\nexport type FilterDropdownProps = AntdFilterDropdownProps & {\n mapValue?: (selectedKeys: React.Key[], event: MapValueEvent) => any;\n children: JSX.Element;\n};\n\n/**\n * `<FilterDropdown>` is a helper component for {@link https://ant.design/components/table/#components-table-demo-custom-filter-panel filter dropdowns in Ant Design `<Table>` components.}\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/filter-dropdown} for more details.\n */\nexport const FilterDropdown: React.FC<FilterDropdownProps> = (props) => {\n const {\n setSelectedKeys,\n confirm,\n clearFilters,\n mapValue = (value) => value,\n selectedKeys,\n children,\n } = props;\n\n const translate = useTranslate();\n\n const clearFilter = () => {\n if (clearFilters) {\n clearFilters();\n }\n };\n\n const onFilter = () => {\n let keys;\n if (typeof selectedKeys === \"number\") {\n keys = `${selectedKeys}`;\n } else if (dayjs.isDayjs(selectedKeys)) {\n keys = [selectedKeys.toISOString()];\n } else {\n keys = selectedKeys;\n }\n\n setSelectedKeys(keys as any);\n confirm?.();\n };\n\n const onChange = (e: any) => {\n if (typeof e === \"object\") {\n if (Array.isArray(e)) {\n const mappedValue = mapValue(e, \"onChange\");\n return setSelectedKeys(mappedValue);\n }\n\n const changeEvent =\n !e || !e.target || dayjs.isDayjs(e) ? { target: { value: e } } : e;\n\n const { target }: React.ChangeEvent<HTMLInputElement> = changeEvent;\n const mappedValue = mapValue(target.value as any, \"onChange\");\n setSelectedKeys(mappedValue);\n return;\n }\n\n const mappedValue = mapValue(e, \"onChange\");\n setSelectedKeys(mappedValue);\n };\n\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement, {\n onChange,\n value: mapValue(selectedKeys, \"value\"),\n });\n }\n return child;\n });\n\n return (\n <div\n style={{\n padding: 10,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n }}\n >\n <div style={{ marginBottom: 15 }}>{childrenWithProps}</div>\n <Space>\n <Button type=\"primary\" size=\"small\" onClick={() => onFilter()}>\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <FilterOutlined /> {translate(\"buttons.filter\", \"Filter\")}\n </Button>\n <Button danger size=\"small\" onClick={() => clearFilter()}>\n {translate(\"buttons.clear\", \"Clear\")}\n </Button>\n </Space>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useGo, useResource, useRouterType } from \"@refinedev/core\";\nimport type { RefineErrorPageProps } from \"@refinedev/ui-types\";\nimport { Button, Result, Typography, Space, Tooltip } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useNavigation, useTranslate } from \"@refinedev/core\";\n\n/**\n * When the app is navigated to a non-existent route, refine shows a default error page.\n * A custom error component can be used for this error page.\n *\n * @see {@link https://refine.dev/docs/packages/documentation/routers/} for more details.\n */\nexport const ErrorComponent: React.FC<RefineErrorPageProps> = () => {\n const [errorMessage, setErrorMessage] = useState<string>();\n const translate = useTranslate();\n const { push } = useNavigation();\n const go = useGo();\n const routerType = useRouterType();\n\n const { resource, action } = useResource();\n\n useEffect(() => {\n if (resource) {\n if (action) {\n setErrorMessage(\n translate(\n \"pages.error.info\",\n {\n action: action,\n resource: resource?.name,\n },\n `You may have forgotten to add the \"${action}\" component to \"${resource?.name}\" resource.`,\n ),\n );\n }\n }\n }, [resource, action]);\n\n return (\n <Result\n status=\"404\"\n title=\"404\"\n extra={\n <Space direction=\"vertical\" size=\"large\">\n <Space>\n <Typography.Text>\n {translate(\n \"pages.error.404\",\n \"Sorry, the page you visited does not exist.\",\n )}\n </Typography.Text>\n {errorMessage && (\n <Tooltip title={errorMessage}>\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <InfoCircleOutlined data-testid=\"error-component-tooltip\" />\n </Tooltip>\n )}\n </Space>\n <Button\n type=\"primary\"\n onClick={() => {\n if (routerType === \"legacy\") {\n push(\"/\");\n } else {\n go({ to: \"/\" });\n }\n }}\n >\n {translate(\"pages.error.backHome\", \"Back Home\")}\n </Button>\n </Space>\n }\n />\n );\n};\n","import React from \"react\";\nimport { type LoginPageProps, useActiveAuthProvider } from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n Checkbox,\n} from \"antd\";\nimport { useLogin, useTranslate } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n imageContainer,\n} from \"./styles\";\n\nexport interface ILoginForm {\n username: string;\n password: string;\n remember: boolean;\n}\n\n/**\n * @deprecated LoginPage is deprecated. Use AuthPage instead. @see {@link https://refine.dev/docs/api-reference/antd/components/antd-auth-page} for more details.\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage} for more details.\n */\nexport const LoginPage: React.FC<LoginPageProps> = () => {\n const [form] = Form.useForm<ILoginForm>();\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login, isLoading } = useLogin<ILoginForm>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const CardTitle = (\n <Typography.Title level={3} style={titleStyles}>\n {translate(\"pages.login.title\", \"Sign in your account\")}\n </Typography.Title>\n );\n\n return (\n <Layout style={layoutStyles}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n height: \"100vh\",\n }}\n >\n <Col xs={22}>\n <div style={containerStyles}>\n <div style={imageContainer}>\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine Logo\"\n />\n </div>\n <Card title={CardTitle} headStyle={{ borderBottom: 0 }}>\n <Form<ILoginForm>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => {\n login(values);\n }}\n requiredMark={false}\n initialValues={{\n remember: false,\n }}\n >\n <Form.Item\n name=\"username\"\n label={translate(\"pages.login.username\", \"Username\")}\n rules={[{ required: true }]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.login.username\", \"Username\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.login.password\", \"Password\")}\n rules={[{ required: true }]}\n style={{ marginBottom: \"12px\" }}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <div style={{ marginBottom: \"12px\" }}>\n <Form.Item name=\"remember\" valuePropName=\"checked\" noStyle>\n <Checkbox\n style={{\n fontSize: \"12px\",\n }}\n >\n {translate(\"pages.login.remember\", \"Remember me\")}\n </Checkbox>\n </Form.Item>\n\n <a\n style={{\n float: \"right\",\n fontSize: \"12px\",\n }}\n href=\"#\"\n >\n {translate(\n \"pages.login.forgotPassword\",\n \"Forgot password?\",\n )}\n </a>\n </div>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </Button>\n </Form>\n <div style={{ marginTop: 8 }}>\n <Typography.Text style={{ fontSize: 12 }}>\n {translate(\"pages.login.noAccount\", \"Don’t have an account?\")}{\" \"}\n <a href=\"#\" style={{ fontWeight: \"bold\" }}>\n {translate(\"pages.login.signup\", \"Sign up\")}\n </a>\n </Typography.Text>\n </div>\n </Card>\n </div>\n </Col>\n </Row>\n </Layout>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const layoutStyles: CSSProperties = {\n background: \"radial-gradient(50% 50% at 50% 50%, #63386A 0%, #310438 100%)\",\n backgroundSize: \"cover\",\n};\n\nexport const containerStyles: CSSProperties = {\n maxWidth: \"408px\",\n margin: \"auto\",\n};\n\nexport const titleStyles: CSSProperties = {\n textAlign: \"center\",\n color: \"#626262\",\n fontSize: \"30px\",\n letterSpacing: \"-0.04em\",\n};\n\nexport const imageContainer: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"28px\",\n};\n","import * as React from \"react\";\nimport type { RefineReadyPageProps } from \"@refinedev/ui-types\";\nimport { Row, Col, Typography, Space, Button } from \"antd\";\nimport { ReadOutlined, FolderOutlined, TeamOutlined } from \"@ant-design/icons\";\n\nconst styles: { [key: string]: React.CSSProperties } = {\n root: {\n height: \"100vh\",\n backgroundImage:\n \"url('https://refine.ams3.cdn.digitaloceanspaces.com/login-background/background.png')\",\n backgroundSize: \"cover\",\n backgroundColor: \"#331049\",\n },\n title: {\n color: \"white\",\n fontWeight: 800,\n fontSize: \"64px\",\n marginBottom: \"8px\",\n },\n p1: {\n color: \"white\",\n marginBottom: 0,\n fontSize: \"20px\",\n fontWeight: \"bold\",\n },\n p2: {\n color: \"white\",\n fontSize: \"20px\",\n },\n code: {\n backgroundColor: \"white\",\n color: \"#331049\",\n },\n};\n\n/**\n * **refine** shows a default ready page on root route when no `resources` is passed to the `<Refine>` component as a property.\n *\n * @deprecated `ReadyPage` is deprecated and will be removed in the next major release.\n */\nexport const ReadyPage: React.FC<RefineReadyPageProps> = () => {\n return (\n <Row align=\"middle\" justify=\"center\" style={styles.root}>\n <Col style={{ textAlign: \"center\" }}>\n <img\n style={{ marginBottom: \"48px\" }}\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine Logo\"\n />\n <Typography.Title style={styles.title}>\n Welcome on board\n </Typography.Title>\n <p style={styles.p1}>Your configuration is completed.</p>\n <p style={styles.p2}>\n Now you can get started by adding your resources to the{\" \"}\n <code style={styles.code}>{\"resources\"}</code> property of{\" \"}\n <code style={styles.code}>{\"<Refine>\"}</code>\n </p>\n <Space\n size=\"large\"\n wrap\n style={{ marginTop: \"70px\", justifyContent: \"center\" }}\n >\n <a href=\"https://refine.dev\" target=\"_blank\" rel=\"noreferrer\">\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <Button size=\"large\" icon={<ReadOutlined />}>\n Documentation\n </Button>\n </a>\n <a\n href=\"https://refine.dev/examples\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <Button size=\"large\" icon={<FolderOutlined />}>\n Examples\n </Button>\n </a>\n <a href=\"https://discord.gg/refine\" target=\"_blank\" rel=\"noreferrer\">\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n <Button size=\"large\" icon={<TeamOutlined />}>\n Community\n </Button>\n </a>\n </Space>\n </Col>\n </Row>\n );\n};\n","import React from \"react\";\nimport { WelcomePage as WelcomePageFromCore } from \"@refinedev/core\";\n\n/**\n * It is a page that welcomes you after the configuration is completed.\n * @deprecated `WelcomePage` is deprecated. Use `WelcomePage` from `@refinedev/core` instead.\n */\nexport const WelcomePage: React.FC = () => {\n return <WelcomePageFromCore />;\n};\n","import React from \"react\";\nimport type { CardProps, FormProps, LayoutProps } from \"antd\";\nimport type { AuthPageProps } from \"@refinedev/core\";\n\nimport {\n LoginPage,\n RegisterPage,\n ForgotPasswordPage,\n UpdatePasswordPage,\n} from \"./components\";\n\nexport type AuthProps = AuthPageProps<LayoutProps, CardProps, FormProps> & {\n renderContent?: (\n content: React.ReactNode,\n title: React.ReactNode,\n ) => React.ReactNode;\n title?: React.ReactNode;\n};\n\n/**\n * **refine** has a default auth page form served on the `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/antd-auth-page/} for more details.\n */\nexport const AuthPage: React.FC<AuthProps> = (props) => {\n const { type } = props;\n const renderView = () => {\n switch (type) {\n case \"register\":\n return <RegisterPage {...props} />;\n case \"forgotPassword\":\n return <ForgotPasswordPage {...props} />;\n case \"updatePassword\":\n return <UpdatePasswordPage {...props} />;\n default:\n return <LoginPage {...props} />;\n }\n };\n\n return <>{renderView()}</>;\n};\n","import React from \"react\";\nimport {\n type LoginPageProps,\n type LoginFormTypes,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n Checkbox,\n type CardProps,\n type LayoutProps,\n Divider,\n type FormProps,\n theme,\n} from \"antd\";\nimport { useLogin, useTranslate, useRouterContext } from \"@refinedev/core\";\n\nimport {\n bodyStyles,\n containerStyles,\n headStyles,\n layoutStyles,\n titleStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype LoginProps = LoginPageProps<LayoutProps, CardProps, FormProps>;\n/**\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#login} for more details.\n */\nexport const LoginPage: React.FC<LoginProps> = ({\n providers,\n registerLink,\n forgotPasswordLink,\n rememberMe,\n contentProps,\n wrapperProps,\n renderContent,\n formProps,\n title,\n hideForm,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<LoginFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login, isLoading } = useLogin<LoginFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.login.title\", \"Sign in to your account\")}\n </Typography.Title>\n );\n\n const renderProviders = () => {\n if (providers && providers.length > 0) {\n return (\n <>\n {providers.map((provider) => {\n return (\n <Button\n key={provider.name}\n type=\"default\"\n block\n icon={provider.icon}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n marginBottom: \"8px\",\n }}\n onClick={() =>\n login({\n providerName: provider.name,\n })\n }\n >\n {provider.label}\n </Button>\n );\n })}\n {!hideForm && (\n <Divider>\n <Typography.Text\n style={{\n color: token.colorTextLabel,\n }}\n >\n {translate(\"pages.login.divider\", \"or\")}\n </Typography.Text>\n </Divider>\n )}\n </>\n );\n }\n return null;\n };\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n {renderProviders()}\n {!hideForm && (\n <Form<LoginFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => login(values)}\n requiredMark={false}\n initialValues={{\n remember: false,\n }}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.login.fields.email\", \"Email\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.login.errors.requiredEmail\",\n \"Email is required\",\n ),\n },\n {\n type: \"email\",\n message: translate(\n \"pages.login.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.login.fields.email\", \"Email\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.login.fields.password\", \"Password\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.login.errors.requiredPassword\",\n \"Password is required\",\n ),\n },\n ]}\n >\n <Input\n type=\"password\"\n autoComplete=\"current-password\"\n placeholder=\"●●●●●●●●\"\n size=\"large\"\n />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n {rememberMe ?? (\n <Form.Item name=\"remember\" valuePropName=\"checked\" noStyle>\n <Checkbox\n style={{\n fontSize: \"12px\",\n }}\n >\n {translate(\"pages.login.buttons.rememberMe\", \"Remember me\")}\n </Checkbox>\n </Form.Item>\n )}\n {forgotPasswordLink ?? (\n <ActiveLink\n style={{\n color: token.colorPrimaryTextHover,\n fontSize: \"12px\",\n marginLeft: \"auto\",\n }}\n to=\"/forgot-password\"\n >\n {translate(\n \"pages.login.buttons.forgotPassword\",\n \"Forgot password?\",\n )}\n </ActiveLink>\n )}\n </div>\n {!hideForm && (\n <Form.Item>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </Button>\n </Form.Item>\n )}\n </Form>\n )}\n\n {registerLink ?? (\n <div\n style={{\n marginTop: hideForm ? 16 : 8,\n }}\n >\n <Typography.Text style={{ fontSize: 12 }}>\n {translate(\n \"pages.login.buttons.noAccount\",\n \"Don’t have an account?\",\n )}{\" \"}\n <ActiveLink\n to=\"/register\"\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n >\n {translate(\"pages.login.signup\", \"Sign up\")}\n </ActiveLink>\n </Typography.Text>\n </div>\n )}\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align={hideForm ? \"top\" : \"middle\"}\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n paddingTop: hideForm ? \"15dvh\" : \"16px\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import type { CSSProperties } from \"react\";\n\nexport const layoutStyles: CSSProperties = {};\n\nexport const containerStyles: CSSProperties = {\n maxWidth: \"400px\",\n margin: \"auto\",\n padding: \"32px\",\n boxShadow:\n \"0px 2px 4px rgba(0, 0, 0, 0.02), 0px 1px 6px -1px rgba(0, 0, 0, 0.02), 0px 1px 2px rgba(0, 0, 0, 0.03)\",\n};\n\nexport const headStyles: CSSProperties = {\n borderBottom: 0,\n padding: 0,\n};\n\nexport const bodyStyles: CSSProperties = { padding: 0, marginTop: \"32px\" };\n\nexport const titleStyles: CSSProperties = {\n textAlign: \"center\",\n marginBottom: 0,\n fontSize: \"24px\",\n lineHeight: \"32px\",\n fontWeight: 700,\n overflowWrap: \"break-word\",\n hyphens: \"manual\",\n textOverflow: \"unset\",\n whiteSpace: \"pre-wrap\",\n};\n","import React from \"react\";\nimport {\n type RegisterPageProps,\n type RegisterFormTypes,\n useRouterType,\n useLink,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n type LayoutProps,\n type CardProps,\n type FormProps,\n Divider,\n theme,\n} from \"antd\";\nimport { useTranslate, useRouterContext, useRegister } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype RegisterProps = RegisterPageProps<LayoutProps, CardProps, FormProps>;\n/**\n * **refine** has register page form which is served on `/register` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#register} for more details.\n */\nexport const RegisterPage: React.FC<RegisterProps> = ({\n providers,\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n hideForm,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<RegisterFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const authProvider = useActiveAuthProvider();\n const { mutate: register, isLoading } = useRegister<RegisterFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.register.title\", \"Sign up for your account\")}\n </Typography.Title>\n );\n\n const renderProviders = () => {\n if (providers && providers.length > 0) {\n return (\n <>\n {providers.map((provider) => {\n return (\n <Button\n key={provider.name}\n type=\"default\"\n block\n icon={provider.icon}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n marginBottom: \"8px\",\n }}\n onClick={() =>\n register({\n providerName: provider.name,\n })\n }\n >\n {provider.label}\n </Button>\n );\n })}\n {!hideForm && (\n <Divider>\n <Typography.Text\n style={{\n color: token.colorTextLabel,\n }}\n >\n {translate(\n \"pages.register.divider\",\n translate(\"pages.login.divider\", \"or\"),\n )}\n </Typography.Text>\n </Divider>\n )}\n </>\n );\n }\n return null;\n };\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n {renderProviders()}\n {!hideForm && (\n <Form<RegisterFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => register(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.register.email\", \"Email\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.register.errors.requiredEmail\",\n \"Email is required\",\n ),\n },\n {\n type: \"email\",\n message: translate(\n \"pages.register.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.register.fields.email\", \"Email\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.register.fields.password\", \"Password\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.register.errors.requiredPassword\",\n \"Password is required\",\n ),\n },\n ]}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n {loginLink ?? (\n <Typography.Text\n style={{\n fontSize: 12,\n marginLeft: \"auto\",\n }}\n >\n {translate(\n \"pages.register.buttons.haveAccount\",\n translate(\n \"pages.login.buttons.haveAccount\",\n \"Have an account?\",\n ),\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\n \"pages.register.signin\",\n translate(\"pages.login.signin\", \"Sign in\"),\n )}\n </ActiveLink>\n </Typography.Text>\n )}\n </div>\n <Form.Item\n style={{\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.register.buttons.submit\", \"Sign up\")}\n </Button>\n </Form.Item>\n </Form>\n )}\n {hideForm && loginLink !== false && (\n <div\n style={{\n marginTop: hideForm ? 16 : 8,\n }}\n >\n <Typography.Text\n style={{\n fontSize: 12,\n }}\n >\n {translate(\n \"pages.register.buttons.haveAccount\",\n translate(\"pages.login.buttons.haveAccount\", \"Have an account?\"),\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\n \"pages.register.signin\",\n translate(\"pages.login.signin\", \"Sign in\"),\n )}\n </ActiveLink>\n </Typography.Text>\n </div>\n )}\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align={hideForm ? \"top\" : \"middle\"}\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n paddingTop: hideForm ? \"15dvh\" : \"16px\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n type ForgotPasswordPageProps,\n type ForgotPasswordFormTypes,\n useRouterType,\n useLink,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n type LayoutProps,\n type CardProps,\n type FormProps,\n theme,\n} from \"antd\";\nimport {\n useTranslate,\n useRouterContext,\n useForgotPassword,\n} from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype ResetPassworProps = ForgotPasswordPageProps<\n LayoutProps,\n CardProps,\n FormProps\n>;\n\n/**\n * **refine** has forgot password page form which is served on `/forgot-password` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#forgot-password} for more details.\n */\nexport const ForgotPasswordPage: React.FC<ResetPassworProps> = ({\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<ForgotPasswordFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const { mutate: forgotPassword, isLoading } =\n useForgotPassword<ForgotPasswordFormTypes>();\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.forgotPassword.title\", \"Forgot your password?\")}\n </Typography.Title>\n );\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n <Form<ForgotPasswordFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => forgotPassword(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.forgotPassword.fields.email\", \"Email\")}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.forgotPassword.errors.requiredEmail\",\n \"Email is required\",\n ),\n },\n {\n type: \"email\",\n message: translate(\n \"pages.forgotPassword.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n type=\"email\"\n size=\"large\"\n placeholder={translate(\n \"pages.forgotPassword.fields.email\",\n \"Email\",\n )}\n />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n }}\n >\n {loginLink ?? (\n <Typography.Text\n style={{\n fontSize: 12,\n marginLeft: \"auto\",\n }}\n >\n {translate(\n \"pages.forgotPassword.buttons.haveAccount\",\n translate(\n \"pages.register.buttons.haveAccount\",\n \"Have an account? \",\n ),\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\n \"pages.forgotPassword.signin\",\n translate(\"pages.login.signin\", \"Sign in\"),\n )}\n </ActiveLink>\n </Typography.Text>\n )}\n </div>\n <Form.Item\n style={{\n marginTop: \"24px\",\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\n \"pages.forgotPassword.buttons.submit\",\n \"Send reset instructions\",\n )}\n </Button>\n </Form.Item>\n </Form>\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n type UpdatePasswordPageProps,\n type UpdatePasswordFormTypes,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n type LayoutProps,\n type CardProps,\n type FormProps,\n theme,\n} from \"antd\";\nimport { useTranslate, useUpdatePassword } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype UpdatePasswordProps = UpdatePasswordPageProps<\n LayoutProps,\n CardProps,\n FormProps\n>;\n\n/**\n * **refine** has update password page form which is served on `/update-password` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#update-password} for more details.\n */\nexport const UpdatePasswordPage: React.FC<UpdatePasswordProps> = ({\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<UpdatePasswordFormTypes>();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: updatePassword, isLoading } =\n useUpdatePassword<UpdatePasswordFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.updatePassword.title\", \"Set New Password\")}\n </Typography.Title>\n );\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n <Form<UpdatePasswordFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => updatePassword(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"password\"\n label={translate(\n \"pages.updatePassword.fields.password\",\n \"New Password\",\n )}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.updatePassword.errors.requiredPassword\",\n \"Password is required\",\n ),\n },\n ]}\n style={{ marginBottom: \"12px\" }}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <Form.Item\n name=\"confirmPassword\"\n label={translate(\n \"pages.updatePassword.fields.confirmPassword\",\n \"Confirm New Password\",\n )}\n hasFeedback\n dependencies={[\"password\"]}\n rules={[\n {\n required: true,\n message: translate(\n \"pages.updatePassword.errors.requiredConfirmPassword\",\n \"Confirm password is required\",\n ),\n },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (!value || getFieldValue(\"password\") === value) {\n return Promise.resolve();\n }\n return Promise.reject(\n new Error(\n translate(\n \"pages.updatePassword.errors.confirmPasswordNotMatch\",\n \"Passwords do not match\",\n ),\n ),\n );\n },\n }),\n ]}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <Form.Item\n style={{\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.updatePassword.buttons.submit\", \"Update\")}\n </Button>\n </Form.Item>\n </Form>\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n useBreadcrumb,\n useLink,\n useRefineContext,\n useRouterContext,\n useRouterType,\n useResource,\n matchResourceFromRoute,\n} from \"@refinedev/core\";\nimport type { RefineBreadcrumbProps } from \"@refinedev/ui-types\";\n\nimport {\n Breadcrumb as AntdBreadcrumb,\n type BreadcrumbProps as AntdBreadcrumbProps,\n} from \"antd\";\nimport { HomeOutlined } from \"@ant-design/icons\";\n\nexport type BreadcrumbProps = RefineBreadcrumbProps<AntdBreadcrumbProps>;\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n breadcrumbProps,\n showHome = true,\n hideIcons = false,\n meta,\n}) => {\n const routerType = useRouterType();\n const { breadcrumbs } = useBreadcrumb({\n meta,\n });\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n const { hasDashboard } = useRefineContext();\n\n const { resources } = useResource();\n\n const rootRouteResource = matchResourceFromRoute(\"/\", resources);\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n if (breadcrumbs.length === 1) {\n return null;\n }\n\n const breadCrumbItems = breadcrumbs.map(({ label, icon, href }) => ({\n key: `breadcrumb-item-${label}`,\n title: (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 4,\n }}\n >\n {!hideIcons && icon}\n {href ? (\n <ActiveLink to={href}>{label}</ActiveLink>\n ) : (\n <span>{label}</span>\n )}\n </div>\n ),\n }));\n\n const getBreadcrumbItems = () => {\n if (showHome && (hasDashboard || rootRouteResource.found)) {\n return [\n {\n key: \"breadcrumb-item-home\",\n title: (\n <ActiveLink to=\"/\">\n {/* @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66 */}\n {rootRouteResource?.resource?.meta?.icon ?? <HomeOutlined />}\n </ActiveLink>\n ),\n },\n ...breadCrumbItems,\n ];\n }\n\n return breadCrumbItems;\n };\n\n return <AntdBreadcrumb items={getBreadcrumbItems()} {...breadcrumbProps} />;\n};\n","import React, { useContext, type FC } from \"react\";\nimport {\n PageHeader as AntdPageHeader,\n type PageHeaderProps as AntdPageHeaderProps,\n} from \"@ant-design/pro-layout\";\nimport { Button, ConfigProvider, Typography } from \"antd\";\nimport { ArrowLeftOutlined, ArrowRightOutlined } from \"@ant-design/icons\";\nimport { RefinePageHeaderClassNames } from \"@refinedev/ui-types\";\n\nexport type PageHeaderProps = AntdPageHeaderProps;\n\nexport const PageHeader: FC<AntdPageHeaderProps> = ({ children, ...props }) => {\n const direction = useContext(ConfigProvider.ConfigContext)?.direction;\n const renderBackButton = () => {\n const BackIcon =\n direction === \"rtl\" ? ArrowRightOutlined : ArrowLeftOutlined;\n\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n return <Button type=\"text\" icon={<BackIcon />} />;\n };\n const backIcon =\n typeof props.backIcon === \"undefined\" ? renderBackButton() : props.backIcon;\n\n const title =\n typeof props.title === \"string\" ? (\n <Typography.Title\n className={RefinePageHeaderClassNames.Title}\n level={4}\n style={{ marginBottom: 0 }}\n >\n {props.title}\n </Typography.Title>\n ) : (\n props.title\n );\n\n const subtitle =\n typeof props.title === \"string\" ? (\n <Typography.Title\n className={RefinePageHeaderClassNames.SubTitle}\n level={5}\n type=\"secondary\"\n style={{ marginBottom: 0 }}\n >\n {props.subTitle}\n </Typography.Title>\n ) : (\n props.subTitle\n );\n\n return (\n <AntdPageHeader\n {...props}\n backIcon={backIcon}\n title={title}\n subTitle={subtitle}\n style={{ padding: 0, ...props.style }}\n >\n {children}\n </AntdPageHeader>\n );\n};\n","import React from \"react\";\nimport {\n type AutoSaveIndicatorProps,\n useTranslate,\n AutoSaveIndicator as AutoSaveIndicatorCore,\n} from \"@refinedev/core\";\nimport { Typography, theme } from \"antd\";\nimport {\n EllipsisOutlined,\n SyncOutlined,\n CheckCircleOutlined,\n ExclamationCircleOutlined,\n} from \"@ant-design/icons\";\n\nexport const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({\n status,\n elements: {\n success = (\n <Message\n translationKey=\"autoSave.success\"\n defaultMessage=\"saved\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<CheckCircleOutlined />}\n />\n ),\n error = (\n <Message\n translationKey=\"autoSave.error\"\n defaultMessage=\"auto save failure\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<ExclamationCircleOutlined />}\n />\n ),\n loading = (\n <Message\n translationKey=\"autoSave.loading\"\n defaultMessage=\"saving...\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<SyncOutlined />}\n />\n ),\n idle = (\n <Message\n translationKey=\"autoSave.idle\"\n defaultMessage=\"waiting for changes\"\n // @ts-expect-error Ant Design Icon's v5.0.1 has an issue with @types/react@^18.2.66\n icon={<EllipsisOutlined />}\n />\n ),\n } = {},\n}) => {\n return (\n <AutoSaveIndicatorCore\n status={status}\n elements={{\n success,\n error,\n loading,\n idle,\n }}\n />\n );\n};\n\nconst Message = ({\n translationKey,\n defaultMessage,\n icon,\n}: {\n translationKey: string;\n defaultMessage: string;\n icon: React.ReactNode;\n}) => {\n const translate = useTranslate();\n const { token } = theme.useToken();\n\n return (\n <Typography.Text\n style={{\n marginRight: 5,\n color: token.colorTextTertiary,\n fontSize: \".8rem\",\n }}\n >\n {translate(translationKey, defaultMessage)}\n <span style={{ marginLeft: \".2rem\" }}>{icon}</span>\n </Typography.Text>\n );\n};\n","import type {\n FilterDropdownProps,\n MapValueEvent,\n} from \"@components/table/components\";\nimport dayjs from \"dayjs\";\n\n/**\n * It is a mapper function for the <DatePicker.RangePicker /> filter.\n * when the `event` is:\n * - `\"value\"`: It converts the `selectedKeys` to Dayjs objects to be used in the `<DatePicker.RangePicker />` component.\n * - `\"onChange\"`, It converts the Dayjs objects to ISO 8601 string format to be used in the Refine(data-provider, syncWithLocation etc.) filter.\n * @see {@link https://refine.dev/docs/ui-integrations/ant-design/components/filter-dropdown/#rangepickerfiltermapper} for more details.\n * @example\n * ```tsx\n * <Table.Column\n * dataIndex=\"createdAt\"\n * title=\"Date & Time\"\n * filterDropdown={(props) => (\n * <FilterDropdown\n * {...props}\n * mapValue={(selectedKeys, event) => {\n * return rangePickerFilterMapper(selectedKeys, event);\n * }}\n * >\n * <DatePicker.RangePicker />\n * </FilterDropdown>\n * )}\n * />\n * ```\n */\nexport const rangePickerFilterMapper = (\n selectedKeys: FilterDropdownProps[\"selectedKeys\"],\n event: MapValueEvent,\n) => {\n if (!selectedKeys) {\n return selectedKeys;\n }\n\n if (event === \"value\") {\n return selectedKeys.map((key) => {\n if (typeof key === \"string\") {\n return dayjs(key);\n }\n\n return key;\n });\n }\n\n if (event === \"onChange\") {\n if (selectedKeys.every(dayjs.isDayjs)) {\n return selectedKeys.map((date: any) => dayjs(date).toISOString());\n }\n }\n\n return selectedKeys;\n};\n","import type { UploadFile, UploadChangeParam } from \"antd/lib/upload/interface\";\n\nexport const getValueFromEvent = (event: UploadChangeParam): UploadFile[] => {\n const { fileList } = event;\n\n return [...fileList];\n};\n\nexport function file2Base64(file: UploadFile): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n const resultHandler = () => {\n if (reader.result) {\n reader.removeEventListener(\"load\", resultHandler, false);\n\n resolve(reader.result as string);\n }\n };\n\n reader.addEventListener(\"load\", resultHandler, false);\n\n reader.readAsDataURL(file.originFileObj as Blob);\n reader.onerror = (error) => {\n reader.removeEventListener(\"load\", resultHandler, false);\n return reject(error);\n };\n });\n}\n","import type { ThemeConfig } from \"antd\";\n\ntype ThemeNames =\n | \"Blue\"\n | \"Purple\"\n | \"Magenta\"\n | \"Red\"\n | \"Orange\"\n | \"Yellow\"\n | \"Green\";\n\ntype RefineThemes = Record<ThemeNames, ThemeConfig>;\n\nexport const RefineThemes: RefineThemes = {\n Blue: {\n token: {\n colorPrimary: \"#1677FF\",\n },\n },\n Purple: {\n token: {\n colorPrimary: \"#722ED1\",\n },\n },\n Magenta: {\n token: {\n colorPrimary: \"#EB2F96\",\n },\n },\n Red: {\n token: {\n colorPrimary: \"#F5222D\",\n },\n },\n Orange: {\n token: {\n colorPrimary: \"#FA541C\",\n },\n },\n Yellow: {\n token: {\n colorPrimary: \"#FAAD14\",\n },\n },\n Green: {\n token: {\n colorPrimary: \"#52C41A\",\n },\n },\n};\n"],"mappings":"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","names":["src_exports","__export","AuthPage","AutoSaveIndicator","BooleanField","Breadcrumb","CloneButton","Create","CreateButton","DateField","DeleteButton","Edit","EditButton","EmailField","ErrorComponent","ExportButton","FileField","FilterDropdown","Header","ImageField","ImportButton","Layout","List","ListButton","LoginPage","MarkdownField","NumberField","PageHeader","ReadyPage","RefineThemes","RefreshButton","SaveButton","Show","ShowButton","Sider","TagField","TextField","ThemedHeader","ThemedHeaderV2","ThemedLayout","ThemedLayoutContext","ThemedLayoutContextProvider","ThemedLayoutV2","ThemedSider","ThemedSiderV2","ThemedTitle","ThemedTitleV2","Title","UrlField","WelcomePage","getDefaultFilter","getDefaultSortOrder","getValueFromEvent","mapAntdFilterToCrudFilter","mapAntdSorterToCrudSorting","notificationProvider","rangePickerFilterMapper","useCheckboxGroup","useDrawerForm","useEditableTable","useFileUploadState","useForm","useImport","useModal","useModalForm","useNotificationProvider","useRadioGroup","useSelect","useSiderVisible","useSimpleList","useStepsForm","useTable","useThemedLayoutContext","__toCommonJS","import_react","import_antd","import_sunflower_antd","import_core","useForm","__name","action","resource","onMutationSuccessProp","onMutationErrorProp","autoSave","submitOnEnter","warnWhenUnsavedChangesProp","redirect","successNotification","errorNotification","meta","metaData","queryMeta","mutationMeta","liveMode","liveParams","mutationMode","dataProviderName","onLiveEvent","invalidates","undoableTimeout","queryOptions","createMutationOptions","updateMutationOptions","idFromProps","overtimeOptions","optimisticUpdateMap","defaultFormValues","disableServerSideValidationProp","_a","_b","options","disableServerSideValidation","translate","formAnt","formSF","useFormSF","form","useFormCoreResult","useFormCore","error","_variables","_context","parsedErrors","fieldsValue","field","errors","key","fieldError","newError","formLoading","onFinish","query","id","onFinishAutoSave","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","React","onKeyUp","event","onValuesChange","changeValues","allValues","onFinishFromProps","values","saveButtonProps","import_react","import_core","import_core","useModal","__name","modalProps","show","close","visible","useCoreModal","e","_a","useModalForm","__name","syncWithLocation","defaultVisible","autoSubmitClose","autoResetForm","autoSave","invalidates","rest","_a","_b","initiallySynced","setInitiallySynced","React","invalidate","resource","actionFromParams","identifier","parsed","go","getUserFriendlyName","action","syncingId","syncWithLocationKey","useFormProps","useForm","form","formProps","id","setId","formLoading","onFinish","autoSaveProps","translate","warnWhen","setWarnWhen","show","close","modalProps","useModal","visible","sunflowerUseModal","_c","_d","openStatus","idFromParams","saveButtonPropsSF","handleClose","handleShow","showId","_visible","otherModalProps","newModalProps","values","import_react","import_core","useDrawerForm","__name","syncWithLocation","defaultVisible","autoSubmitClose","autoResetForm","autoSave","invalidates","rest","invalidate","initiallySynced","setInitiallySynced","React","visible","show","close","resource","actionFromParams","identifier","parsed","go","action","syncingId","syncWithLocationKey","useFormProps","useForm","form","formProps","formLoading","id","setId","onFinish","autoSaveProps","_a","_b","_c","_d","openStatus","idFromParams","translate","warnWhen","setWarnWhen","saveButtonProps","deleteButtonProps","handleClose","handleShow","showId","values","import_sunflower_antd","useStepsForm","__name","props","useFormProps","useForm","form","formProps","stepsPropsSunflower","useStepsFormSF","values","_a","import_react","import_antd","import_sunflower_antd","import_core","import_core","getDefaultSortOrder","__name","columnName","sorter","sort","getDefaultSortOrderCore","getDefaultFilter","filters","operatorType","getDefaultFilterCore","mapAntdSorterToCrudSorting","crudSorting","a","b","_a","_b","item","field","mapAntdFilterToCrudFilter","tableFilters","prevFilters","initialFilters","crudFilters","mapInitialFilter","acc","value","operator","i","import_core","import_react","PaginationLink","__name","to","element","LegacyLink","routerType","Link","React","e","useTable","__name","onSearch","initialCurrent","initialPageSize","hasPagination","pagination","initialSorter","permanentSorter","initialFilter","permanentFilter","defaultSetFilterBehavior","filtersFromProp","sortersFromProp","syncWithLocation","resource","successNotification","errorNotification","queryOptions","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","tableQueryResult","tableQuery","current","setCurrent","pageSize","setPageSize","filters","setFilters","sorters","setSorters","sorter","setSorter","createLinkForSyncWithLocation","pageCount","overtime","useTableCore","defaultSyncWithLocation","shouldSyncWithLocation","breakpoint","form","formSF","useFormSF","liveMode","hasPaginationString","isPaginationEnabled","preferredInitialFilters","data","isFetched","isLoading","React","registeredFields","filterFilterMap","acc","curr","filter","onChange","paginationState","tableFilters","crudFilters","mapAntdFilterToCrudFilter","crudSorting","mapAntdSorterToCrudSorting","onFinish","value","searchFilters","antdPagination","page","type","element","_a","link","PaginationLink","elementChildren","useEditableTable","__name","autoSubmitClose","props","table","useTable","edit","useForm","editId","setId","saveButtonProps","cancelButtonProps","editButtonProps","id","isEditing","values","result","import_core","useSelect","__name","props","query","defaultValueQuery","onSearch","options","useSelectCore","import_core","useCheckboxGroup","__name","resource","sort","sorters","filters","optionLabel","optionValue","queryOptions","fetchSize","pagination","liveMode","defaultValue","selectedOptionsOrder","onLiveEvent","liveParams","meta","metaData","dataProviderName","query","options","import_core","useRadioGroup","__name","resource","sort","sorters","filters","optionLabel","optionValue","queryOptions","fetchSize","pagination","liveMode","defaultValue","selectedOptionsOrder","onLiveEvent","liveParams","meta","metaData","dataProviderName","query","options","import_react","import_antd","import_core","useImport","__name","resourceFromProp","resourceName","mapData","item","paparseOptions","batchSize","onFinish","meta","metaData","dataProviderName","onProgressFromProp","t","resource","mutationResult","isLoading","handleChange","useImportCore","totalAmount","processedAmount","description","React","import_react","import_antd","import_core","useSimpleList","__name","resource","initialCurrent","initialPageSize","pagination","hasPagination","initialSorter","permanentSorter","initialFilter","permanentFilter","defaultSetFilterBehavior","filtersFromProp","sortersFromProp","onSearch","queryOptions","syncWithLocation","successNotification","errorNotification","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","sorters","sorter","filters","current","pageSize","pageCount","setFilters","setCurrent","setPageSize","setSorter","setSorters","createLinkForSyncWithLocation","queryResult","query","overtime","useTableCore","hasPaginationString","isPaginationEnabled","breakpoint","liveMode","form","data","isFetched","isLoading","onChange","page","onFinish","values","searchFilters","antdPagination","type","element","_a","link","PaginationLink","elementChildren","import_react","useFileUploadState","__name","isLoading","setIsloading","onChange","info","mapStatusToLoading","files","file","import_react","import_react","ThemedLayoutContext","React","ThemedLayoutContextProvider","__name","children","initialSiderCollapsed","siderCollapsed","setSiderCollapsed","mobileSiderOpen","setMobileSiderOpen","useSiderVisible","__name","mobileSiderOpen","siderCollapsed","setMobileSiderOpen","setSiderCollapsed","ThemedLayoutContext","import_react","useThemedLayoutContext","__name","mobileSiderOpen","siderCollapsed","setMobileSiderOpen","setSiderCollapsed","ThemedLayoutContext","import_antd","import_react","import_react","import_antd","import_icons","UndoableNotification","__name","message","cancelMutation","undoableTimeout","React","time","notificationProvider","key","message","description","type","cancelMutation","undoableTimeout","staticNotification","React","UndoableNotification","useNotificationProvider","__name","notificationFromContext","notification","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","Sider","__name","TitleFromProps","render","meta","collapsed","setCollapsed","drawerOpen","setDrawerOpen","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","Title","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","import_core","import_antd","import_react","Header","__name","authProvider","user","React","AntdLayout","Layout","__name","children","Header","Sider","Title","Footer","OffLayoutArea","breakpoint","SiderToRender","HeaderToRender","isSmall","React","AntdLayout","import_react","import_core","Title","__name","collapsed","routerType","Link","LegacyLink","React","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","ThemedSider","__name","TitleFromProps","render","meta","token","collapsed","setCollapsed","drawerOpen","setDrawerOpen","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","ThemedTitle","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","import_react","import_antd","import_core","ThemedHeader","__name","token","authProvider","user","React","AntdLayout","ThemedLayout","__name","children","Header","Sider","Title","Footer","OffLayoutArea","breakpoint","SiderToRender","ThemedSider","HeaderToRender","ThemedHeader","isSmall","React","AntdLayout","import_react","import_core","import_antd","defaultText","defaultIcon","React","ThemedTitle","__name","collapsed","icon","text","wrapperStyles","token","routerType","Link","LegacyLink","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","ThemedSiderV2","__name","TitleFromProps","render","meta","fixed","activeItemDisabled","_a","token","siderCollapsed","setSiderCollapsed","mobileSiderOpen","setMobileSiderOpen","useThemedLayoutContext","isExistAuthentication","direction","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","ThemedTitleV2","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","linkStyle","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","siderStyles","renderClosingIcons","iconProps","collapsed","type","import_react","import_antd","import_core","ThemedHeaderV2","__name","isSticky","sticky","token","authProvider","user","headerStyles","React","AntdLayout","ThemedLayoutV2","__name","children","Header","Sider","Title","Footer","OffLayoutArea","initialSiderCollapsed","breakpoint","SiderToRender","ThemedSiderV2","HeaderToRender","ThemedHeaderV2","isSmall","hasSider","React","ThemedLayoutContextProvider","AntdLayout","import_react","import_core","import_antd","ThemedTitleV2","__name","collapsed","iconFromProps","textFromProps","wrapperStyles","defaultIcon","defaultText","icon","text","token","routerType","Link","LegacyLink","React","import_react","import_antd","import_icons","import_core","import_ui_types","CreateButton","__name","resourceNameFromProps","propResourceNameOrRouteName","hideText","accessControl","meta","children","onClick","rest","hidden","disabled","label","title","LinkComponent","to","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","EditButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","accessControl","meta","children","onClick","rest","to","label","title","hidden","disabled","LinkComponent","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","DeleteButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","onSuccess","mutationModeProp","children","successNotification","errorNotification","hideText","accessControl","metaData","meta","dataProviderName","confirmTitle","confirmOkText","confirmCancelText","invalidates","rest","title","label","hidden","disabled","loading","defaultConfirmTitle","defaultConfirmOkLabel","defaultCancelLabel","onConfirm","React","import_react","import_antd","import_icons","import_core","import_ui_types","RefreshButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","dataProviderName","children","_meta","_metaData","rest","onClick","label","loading","React","import_react","import_antd","import_icons","import_core","import_ui_types","ShowButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","accessControl","meta","children","onClick","rest","to","label","title","hidden","disabled","LinkComponent","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ListButton","__name","resourceNameFromProps","propResourceNameOrRouteName","hideText","accessControl","meta","children","onClick","rest","to","label","title","hidden","disabled","LinkComponent","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ExportButton","__name","hideText","children","rest","label","React","import_react","import_antd","import_icons","import_core","import_ui_types","SaveButton","__name","hideText","children","rest","label","React","import_react","import_antd","import_icons","import_core","import_ui_types","CloneButton","__name","propResourceNameOrRouteName","resourceNameFromProps","recordItemId","hideText","accessControl","meta","children","onClick","rest","to","LinkComponent","label","disabled","hidden","title","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ImportButton","__name","uploadProps","buttonProps","hideText","children","loading","label","React","import_react","import_antd","import_core","List","__name","canCreate","title","children","createButtonPropsFromProps","resourceFromProps","wrapperProps","contentProps","headerProps","breadcrumbFromProps","headerButtonProps","headerButtons","_a","_b","translate","globalBreadcrumb","routerType","getUserFriendlyName","resource","identifier","isCreateButtonVisible","breadcrumb","createButtonProps","defaultExtra","React","CreateButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Create","__name","title","saveButtonPropsFromProps","children","resourceFromProps","isLoading","breadcrumbFromProps","wrapperProps","headerProps","contentProps","headerButtonProps","headerButtons","footerButtonProps","footerButtons","goBackFromProps","_a","_b","translate","globalBreadcrumb","routerType","back","goBack","getUserFriendlyName","resource","action","identifier","breadcrumb","saveButtonProps","defaultFooterButtons","React","SaveButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Edit","__name","title","saveButtonPropsFromProps","mutationModeProp","recordItemId","children","deleteButtonPropsFromProps","canDelete","resourceFromProps","isLoading","dataProviderName","breadcrumbFromProps","wrapperProps","headerProps","contentProps","headerButtonProps","headerButtons","footerButtonProps","footerButtons","goBackFromProps","autoSaveProps","_a","_b","_c","translate","globalBreadcrumb","mutationModeContext","mutationMode","routerType","back","go","goBack","legacyGoList","getUserFriendlyName","resource","action","idFromParams","identifier","goListPath","id","breadcrumb","hasList","isDeleteButtonVisible","listButtonProps","refreshButtonProps","deleteButtonProps","saveButtonProps","defaultHeaderButtons","React","AutoSaveIndicator","ListButton","RefreshButton","defaultFooterButtons","DeleteButton","SaveButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Show","__name","title","canEdit","canDelete","isLoading","children","resourceFromProps","recordItemId","dataProviderName","breadcrumbFromProps","contentProps","headerProps","wrapperProps","headerButtons","footerButtons","footerButtonProps","headerButtonProps","goBackFromProps","_a","_b","_c","translate","globalBreadcrumb","routerType","back","go","goBack","legacyGoList","getUserFriendlyName","resource","action","idFromParams","identifier","goListPath","id","breadcrumb","hasList","isDeleteButtonVisible","isEditButtonVisible","listButtonProps","editButtonProps","deleteButtonProps","refreshButtonProps","defaultHeaderButtons","React","ListButton","EditButton","DeleteButton","RefreshButton","PageHeader","Breadcrumb","import_react","import_antd","TextField","__name","value","rest","React","import_react","import_antd","TagField","__name","value","rest","React","import_react","import_antd","EmailField","__name","value","rest","React","import_react","import_antd","ImageField","__name","value","imageTitle","rest","React","import_react","import_antd","import_icons","BooleanField","__name","value","valueLabelTrue","valueLabelFalse","trueIcon","React","falseIcon","rest","import_react","import_dayjs","import_antd","import_localizedFormat","DateField","__name","value","locales","dateFormat","rest","dayjs","LocalizedFormat","defaultLocale","React","import_react","FileField","__name","title","src","rest","React","UrlField","import_react","import_antd","UrlField","__name","children","value","rest","React","import_react","import_antd","toLocaleStringSupportsOptions","__name","NumberField","value","locale","options","rest","number","React","import_react","import_react_markdown","import_remark_gfm","MarkdownField","__name","value","React","ReactMarkdown","gfm","import_react","import_antd","import_dayjs","import_icons","import_core","FilterDropdown","__name","props","setSelectedKeys","confirm","clearFilters","mapValue","value","selectedKeys","children","translate","clearFilter","onFilter","keys","dayjs","onChange","e","mappedValue","changeEvent","target","childrenWithProps","React","child","import_react","import_core","import_antd","import_icons","ErrorComponent","__name","errorMessage","setErrorMessage","translate","push","go","routerType","resource","action","React","import_react","import_core","import_antd","layoutStyles","containerStyles","titleStyles","imageContainer","LoginPage","__name","form","translate","authProvider","login","isLoading","CardTitle","React","titleStyles","layoutStyles","containerStyles","imageContainer","values","React","import_antd","import_icons","styles","ReadyPage","__name","import_react","import_core","WelcomePage","__name","React","WelcomePageFromCore","import_react","import_react","import_core","import_antd","layoutStyles","containerStyles","headStyles","bodyStyles","titleStyles","LoginPage","__name","providers","registerLink","forgotPasswordLink","rememberMe","contentProps","wrapperProps","renderContent","formProps","title","hideForm","token","form","translate","routerType","Link","LegacyLink","ActiveLink","authProvider","login","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","renderProviders","provider","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","RegisterPage","__name","providers","loginLink","wrapperProps","contentProps","renderContent","formProps","title","hideForm","token","form","translate","routerType","Link","LegacyLink","ActiveLink","authProvider","register","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","renderProviders","provider","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","ForgotPasswordPage","__name","loginLink","wrapperProps","contentProps","renderContent","formProps","title","token","form","translate","routerType","Link","LegacyLink","ActiveLink","forgotPassword","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","UpdatePasswordPage","__name","wrapperProps","contentProps","renderContent","formProps","title","token","form","translate","authProvider","updatePassword","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","CardContent","headStyles","bodyStyles","containerStyles","values","getFieldValue","_","value","layoutStyles","AuthPage","__name","props","type","React","RegisterPage","ForgotPasswordPage","UpdatePasswordPage","LoginPage","import_react","import_core","import_antd","import_icons","Breadcrumb","__name","breadcrumbProps","showHome","hideIcons","meta","routerType","breadcrumbs","Link","LegacyLink","hasDashboard","resources","rootRouteResource","ActiveLink","breadCrumbItems","label","icon","href","React","AntdBreadcrumb","_a","_b","import_react","import_pro_layout","import_antd","import_icons","import_ui_types","PageHeader","__name","children","props","_a","direction","renderBackButton","React","backIcon","title","subtitle","AntdPageHeader","import_react","import_core","import_antd","import_icons","AutoSaveIndicator","__name","status","success","React","Message","error","loading","idle","AutoSaveIndicatorCore","translationKey","defaultMessage","icon","translate","token","import_dayjs","rangePickerFilterMapper","__name","selectedKeys","event","key","dayjs","date","getValueFromEvent","__name","event","fileList","RefineThemes"]}
|