UNPKG

@refinedev/core

Version:

Refine is a React meta-framework for building enterprise-level, data-intensive applications rapidly with support for modern UI libraries and headless integrations.

1,066 lines (699 loc) • 285 kB
# @refinedev/core ## 5.0.7 ### Patch Changes - [#7150](https://github.com/refinedev/refine/pull/7150) [`0ceb0f6e5cf57ba50760e55709d7e70c69b13461`](https://github.com/refinedev/refine/commit/0ceb0f6e5cf57ba50760e55709d7e70c69b13461) Thanks [@pcfreak30](https://github.com/pcfreak30)! - feat(core): add option to disable RouteChangeHandler Added `disableRouteChangeHandler` option to Refine context and props Resolves #7148 ## 5.0.6 ### Patch Changes - [#7106](https://github.com/refinedev/refine/pull/7106) [`5a79da5cf4ce38bed776dd63a935dd3102b3d4df`](https://github.com/refinedev/refine/commit/5a79da5cf4ce38bed776dd63a935dd3102b3d4df) Thanks [@angelodirb](https://github.com/angelodirb)! - fix: memoize queryOptions.select in useList to prevent multiple executions - [#7083](https://github.com/refinedev/refine/pull/7083) [`3ece8335935ff3e8c27f5883cd2f06ef29c2c746`](https://github.com/refinedev/refine/commit/3ece8335935ff3e8c27f5883cd2f06ef29c2c746) Thanks [@a28689604](https://github.com/a28689604)! - fix(core): stabilize autosave debounce and cancel on unmount in useForm Fixes #7082 ## 5.0.5 ### Patch Changes - [#7086](https://github.com/refinedev/refine/pull/7086) [`5c57073cf7584a7ca28ad7e78dc25a16c72e83d3`](https://github.com/refinedev/refine/commit/5c57073cf7584a7ca28ad7e78dc25a16c72e83d3) Thanks [@BatuhanW](https://github.com/BatuhanW)! - feat: disable minify Resolves #6417 - Updated dependencies [[`5c57073cf7584a7ca28ad7e78dc25a16c72e83d3`](https://github.com/refinedev/refine/commit/5c57073cf7584a7ca28ad7e78dc25a16c72e83d3)]: - @refinedev/devtools-internal@2.0.1 ## 5.0.4 ### Patch Changes - [#7031](https://github.com/refinedev/refine/pull/7031) [`99e9cf01546a4707e1d79be2a4e1671e045bf41e`](https://github.com/refinedev/refine/commit/99e9cf01546a4707e1d79be2a4e1671e045bf41e) Thanks [@DipakHalkude](https://github.com/DipakHalkude)! - fix: prevent external queryOptions.enabled from overriding internal ID check in useForm (#7031) Fixed a bug where the `useForm` hook allowed external `queryOptions.enabled` to bypass internal ID safety checks, causing API calls with undefined IDs. Added comprehensive tests covering create mode, undefined IDs, and various enabled combinations to ensure the fix works correctly. Fixes #7031 - [#7035](https://github.com/refinedev/refine/pull/7035) [`6934c008bee0e07eab424f560503fe5a8e541c8a`](https://github.com/refinedev/refine/commit/6934c008bee0e07eab424f560503fe5a8e541c8a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: `useInfiniteList` pagination not work #7034 Now `useInfiniteList` correctly advances server-side pages when loading more results. This bug was caused by [this commit](https://github.com/refinedev/refine/commit/1a02f020fdc2030e7c7a702e3bd9bfddae2fe1c8). Resolves #7034 ## 5.0.3 ### Patch Changes - [#7020](https://github.com/refinedev/refine/pull/7020) [`32ff2e4200ff888111f03d613e7bb838f505c1b1`](https://github.com/refinedev/refine/commit/32ff2e4200ff888111f03d613e7bb838f505c1b1) Thanks [@samay-rgb](https://github.com/samay-rgb)! - fix: use stable array to prevent memoization issue in useList. #7019 Fixed an issue where `useList`, `useMany`, `useTable`, and `useCustom` hooks created new empty arrays/objects on every render. This caused `useEffect` and `useMemo` to trigger unnecessarily. Now these hooks use stable references for better performance. Fixes #7019 ## 5.0.2 ### Patch Changes - [#7016](https://github.com/refinedev/refine/pull/7016) [`97e974547949197ed9ca4a1e02b19ef3fc46b673`](https://github.com/refinedev/refine/commit/97e974547949197ed9ca4a1e02b19ef3fc46b673) Thanks [@DoguhanOzgurAkca](https://github.com/DoguhanOzgurAkca)! - feat: comprehensive deprecated code cleanup for v5 This release completes the cleanup of deprecated code that remained after the Refine v5 migration, providing a cleaner and more maintainable codebase. ## Breaking Changes - Removed Deprecated Components **@refinedev/antd:** - Removed deprecated `ReadyPage` component (use custom components instead) - Removed deprecated `LoginPage` component (use `AuthPage` instead) - Removed deprecated `useSiderVisible` hook (use `useThemedLayoutContext` instead) **@refinedev/chakra-ui:** - Removed deprecated `ReadyPage` component (use custom components instead) - Removed deprecated `useSiderVisible` hook (use `useThemedLayoutContext` instead) **@refinedev/mantine:** - Removed deprecated `useSiderVisible` hook (use `useThemedLayoutContext` instead) ## New Features **@refinedev/codemod:** - Added `welcome-page-import-from-core` codemod transformation - Automatically migrates WelcomePage imports from UI libraries to @refinedev/core - Run with: `npx @refinedev/codemod@latest welcome-page-import-from-core` ## Improvements **@refinedev/antd:** - Un-deprecated `getDefaultFilter` function - now the preferred import location - Updated documentation to import `getDefaultFilter` from `@refinedev/antd` instead of `@refinedev/core` **@refinedev/core:** - Un-deprecated `warnWhenUnsavedChanges` property in RefineOptions (still valid and actively used) - Updated all TanStack Query documentation links from v4 to v5 - Improved TSDoc comments with current TanStack Query v5 references ## Documentation Updates - Updated 7 documentation files to use `getDefaultFilter` from `@refinedev/antd` - Migrated 22 TanStack Query v4 documentation links to v5 - All API references now point to current TanStack Query v5 documentation - [#7015](https://github.com/refinedev/refine/pull/7015) [`acb1e96b0d6cfddbd6115818b8f01c73d56934ff`](https://github.com/refinedev/refine/commit/acb1e96b0d6cfddbd6115818b8f01c73d56934ff) Thanks [@BatuhanW](https://github.com/BatuhanW)! - fix: incorrect parseTableParams issue. Resolves (#7013)[https://github.com/refinedev/refine/issues/7013] ## 5.0.1 ### Patch Changes - [#6990](https://github.com/refinedev/refine/pull/6990) [`90f3f7a43f71747c8d35e69b9a84a5dee6df9354`](https://github.com/refinedev/refine/commit/90f3f7a43f71747c8d35e69b9a84a5dee6df9354) Thanks [@BatuhanW](https://github.com/BatuhanW)! - fix(core): error notification infinite render issue useEffect hook in data query hooks that handles the error notification had whole error object in dependency array, which changes with every request, thus causing infinite re-renders. Changed the dependency to just error message string. [Resolves #6983](https://github.com/refinedev/refine/issues/6983) ## 5.0.0 ### Major Changes - [#6945](https://github.com/refinedev/refine/pull/6945) [`44a8c7663c42a2aa91074c33294e9d6a88d9ba98`](https://github.com/refinedev/refine/commit/44a8c7663c42a2aa91074c33294e9d6a88d9ba98) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: upgrade to Refine 5.0 with React 19 and TanStack Query v5 - Modern React 19 and TanStack Query v5 support with improved performance and developer experience. - Removed all deprecated APIs and legacy systems for a cleaner, more maintainable codebase. > 🚨 Breaking changes require migration - check our guide at https://refine.dev/docs/migration-guide/4x-to-5x/ ### Patch Changes - [#6945](https://github.com/refinedev/refine/pull/6945) [`807099eecb4e8d41b1cf9ab557d71d34d12bec35`](https://github.com/refinedev/refine/commit/807099eecb4e8d41b1cf9ab557d71d34d12bec35) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - - Throw an error in `useGetLocale` if it is called without an i18n Provider. - This ensures the hook's return type matches that of `i18nProvider.getLocale`. - `useTranslation().getLocale` which is from `useGetLocale` now returns a string. [Resolves #6812](https://github.com/refinedev/refine/issues/6812) - Updated dependencies [[`44a8c7663c42a2aa91074c33294e9d6a88d9ba98`](https://github.com/refinedev/refine/commit/44a8c7663c42a2aa91074c33294e9d6a88d9ba98)]: - @refinedev/devtools-internal@2.0.0 ## 4.58.0 ### Minor Changes - [#6880](https://github.com/refinedev/refine/pull/6880) [`2b4c2082b2e07f6c5afa514c4beeb7abc4082ea2`](https://github.com/refinedev/refine/commit/2b4c2082b2e07f6c5afa514c4beeb7abc4082ea2) Thanks [@arndom](https://github.com/arndom)! - - Add `siderItemsAreCollapsed` prop to all `Sider` components to set default expanded/collapsed nested sider items. - UI packages: AntDesign, Manitine, Charka-UI, Material-UI - Add documentation for this addition [Resolves #6721](https://github.com/refinedev/refine/issues/6721) ### Patch Changes - [#6925](https://github.com/refinedev/refine/pull/6925) [`5a3e404de3f655efd8317f8e2eacbc2be8b3fa7a`](https://github.com/refinedev/refine/commit/5a3e404de3f655efd8317f8e2eacbc2be8b3fa7a) Thanks [@pokycookie](https://github.com/pokycookie)! - - Preserve row id in meta for data hooks. [Resolves #6906](https://github.com/refinedev/refine/issues/6906) ## 4.57.11 ### Patch Changes - [#6889](https://github.com/refinedev/refine/pull/6889) [`6087f72c2d38977410e401efae61c5583d61425d`](https://github.com/refinedev/refine/commit/6087f72c2d38977410e401efae61c5583d61425d) Thanks [@DoguhanOzgurAkca](https://github.com/DoguhanOzgurAkca)! - [chore: replace outdated and broken `@tanstack/query` links](https://github.com/refinedev/refine/pull/6889) Updated broken links to `@tanstack/query` documentation for `useMutation` in TSDoc definitions. ## 4.57.10 ### Patch Changes - [#6826](https://github.com/refinedev/refine/pull/6826) [`9dca95e276fa704911c32599473a54a71a6c5246`](https://github.com/refinedev/refine/commit/9dca95e276fa704911c32599473a54a71a6c5246) Thanks [@devarsh-mavani-19](https://github.com/devarsh-mavani-19)! - fix: pass meta params to useCan hook params #6833 Now access control provider can receive additional arguments through meta params. Resolves [#6833] ## 4.57.9 ### Patch Changes šŸ“¢ **Refine Community Release** šŸ“¢ - fix: wrong JSDoc links in components ## 4.57.8 ### Patch Changes ⚔ **Refine Enterprise Release** ⚔ - [#6728](https://github.com/refinedev/refine/pull/6728) [`1663501c9c9f37b98434af83afd8d0fc41d27af2`](https://github.com/refinedev/refine/commit/1663501c9c9f37b98434af83afd8d0fc41d27af2) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: wrong JSDoc links in components ## 4.57.7 ### Patch Changes šŸ“¢ **Refine Community Release** šŸ“¢ - Move invalidation in `useRegister` to be called only on success. [Resolves #6639](https://github.com/refinedev/refine/issues/6639) šŸ“¢ **Refine Community Release** šŸ“¢ - fix(types): remove path aliases from type imports Since typescript doesn't resolve and replace path aliases, using them for the type imports will cause `d.ts` files to reference unresolvable paths and types. While this doesn't break everything, it breaks the types in places where the path aliases are used for type imports. This change removes the path aliases from the type imports and replaces them with relative imports. ## 4.57.6 ### Patch Changes ⚔ **Refine Enterprise Release** ⚔ - [#6658](https://github.com/refinedev/refine/pull/6658) [`91aaf75f04e6e6434196ece9a52b024c70d29df4`](https://github.com/refinedev/refine/commit/91aaf75f04e6e6434196ece9a52b024c70d29df4) Thanks [@arndom](https://github.com/arndom)! - Move invalidation in `useRegister` to be called only on success. [Resolves #6639](https://github.com/refinedev/refine/issues/6639) ⚔ **Refine Enterprise Release** ⚔ - [#6683](https://github.com/refinedev/refine/pull/6683) [`a12a0821e3c573386c2a8eea4ac1582cc46dd26d`](https://github.com/refinedev/refine/commit/a12a0821e3c573386c2a8eea4ac1582cc46dd26d) Thanks [@aliemir](https://github.com/aliemir)! - fix(types): remove path aliases from type imports Since typescript doesn't resolve and replace path aliases, using them for the type imports will cause `d.ts` files to reference unresolvable paths and types. While this doesn't break everything, it breaks the types in places where the path aliases are used for type imports. This change removes the path aliases from the type imports and replaces them with relative imports. ## 4.57.5 ### Patch Changes šŸ“¢ **Refine Community Release** šŸ“¢ - feat(core): add `enabled` prop to `useLoadingOvertime` and `overtimeOptions` Added missing `enabled` prop to `useLoadingOvertime` and added ability to globally configure through `options.overtime.enabled`. Due to the nature of calculating elapsed time, an interval is set by the `interval` prop. This was causing unwanted updates in the return value and there was no way to disable it properly. šŸ“¢ **Refine Community Release** šŸ“¢ - fixed: `to` query parameter is not working after login. #6582 From now on, the `to` query parameter will work after login. If the URL includes a `to` query parameter, the user will be redirected to the specified path after logging in. Example: After logout, Refine will automatically appends `to` query param to URL. ``` http://localhost:3000/login?to=/any-path ``` After login, it will redirect to `http://localhost:3000/any-path` Resolves [#6582](https://github.com/refinedev/refine/issues/6582) šŸ“¢ **Refine Community Release** šŸ“¢ - refactor(core): remove duplicated overtime intervals caused by internally used hooks Updated Refine's data hooks and extensions to prevent duplicated overtime intervals from being created. This uses the `enabled` prop to prevent internal hooks from registering the intervals. Prior to this change, `useTable` was initializing its own `useLoadingOvertime` hook but also propagated the `elapsedTime` from `useList` hook which is used internally by `useTable`. This caused duplicated intervals and unwanted updates. This now ensures a single interval is created and used for the extension hooks. šŸ“¢ **Refine Community Release** šŸ“¢ - fix(core): add missing checks and warnings for `ids` and `resource` props in `useMany` hook Added checks for `ids` and `resource` props to check in runtime if they are valid or not. `useMany` will warn if `ids` or `resource` props are missing unless the query is manually enabled through `queryOptions.enabled` prop. [Resolves #6617](https://github.com/refinedev/refine/issues/6617) ## 4.57.4 ### Patch Changes ⚔ **Refine Enterprise Release** ⚔ - [#6626](https://github.com/refinedev/refine/pull/6626) [`087039f0ccd13e9fe5bf4ef904e4f1c2df129d69`](https://github.com/refinedev/refine/commit/087039f0ccd13e9fe5bf4ef904e4f1c2df129d69) Thanks [@aliemir](https://github.com/aliemir)! - feat(core): add `enabled` prop to `useLoadingOvertime` and `overtimeOptions` Added missing `enabled` prop to `useLoadingOvertime` and added ability to globally configure through `options.overtime.enabled`. Due to the nature of calculating elapsed time, an interval is set by the `interval` prop. This was causing unwanted updates in the return value and there was no way to disable it properly. ⚔ **Refine Enterprise Release** ⚔ - [#6626](https://github.com/refinedev/refine/pull/6626) [`087039f0ccd13e9fe5bf4ef904e4f1c2df129d69`](https://github.com/refinedev/refine/commit/087039f0ccd13e9fe5bf4ef904e4f1c2df129d69) Thanks [@aliemir](https://github.com/aliemir)! - refactor(core): remove duplicated overtime intervals caused by internally used hooks Updated Refine's data hooks and extensions to prevent duplicated overtime intervals from being created. This uses the `enabled` prop to prevent internal hooks from registering the intervals. Prior to this change, `useTable` was initializing its own `useLoadingOvertime` hook but also propagated the `elapsedTime` from `useList` hook which is used internally by `useTable`. This caused duplicated intervals and unwanted updates. This now ensures a single interval is created and used for the extension hooks. ## 4.57.3 ### Patch Changes ⚔ **Refine Enterprise Release** ⚔ - [#6618](https://github.com/refinedev/refine/pull/6618) [`5377e7d8f7ccb986c5d38352351b9b2d2c414fde`](https://github.com/refinedev/refine/commit/5377e7d8f7ccb986c5d38352351b9b2d2c414fde) Thanks [@aliemir](https://github.com/aliemir)! - fix(core): add missing checks and warnings for `ids` and `resource` props in `useMany` hook Added checks for `ids` and `resource` props to check in runtime if they are valid or not. `useMany` will warn if `ids` or `resource` props are missing unless the query is manually enabled through `queryOptions.enabled` prop. [Resolves #6617](https://github.com/refinedev/refine/issues/6617) ## 4.57.2 ### Patch Changes ⚔ **Refine Enterprise Release** ⚔ - [#6583](https://github.com/refinedev/refine/pull/6583) [`5ce59d0352ba5402452bb812ac0e506b3c2216df`](https://github.com/refinedev/refine/commit/5ce59d0352ba5402452bb812ac0e506b3c2216df) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fixed: `to` query parameter is not working after login. #6582 From now on, the `to` query parameter will work after login. If the URL includes a `to` query parameter, the user will be redirected to the specified path after logging in. Example: After logout, Refine will automatically appends `to` query param to URL. ``` http://localhost:3000/login?to=/any-path ``` After login, it will redirect to `http://localhost:3000/any-path` Resolves [#6582](https://github.com/refinedev/refine/issues/6582) ## 4.57.1 ### Patch Changes šŸ“¢ **Refine Community Release** šŸ“¢ - This PR fixes an issue where the ListButton component doesn't include a query filter in the navigation URL. [Resolves #6528](https://github.com/refinedev/refine/issues/6528) šŸ“¢ **Refine Community Release** šŸ“¢ - chore: update package descriptions šŸ“¢ **Refine Community Release** šŸ“¢ - refactor: modified the Authenticated component to receive optional params prop to be passed to the useIsAuthenticated hook. Fixes #6309 šŸ“¢ **Refine Community Release** šŸ“¢ - fix: `useUpdate` and `useForm` hooks throws an error when `id` is an empty string. (`id=""`) #6505 This reverts a breaking change introduced in [PR #6116](https://github.com/refinedev/refine/pull/6116) and restores support for using an empty string as `id`. This enables updates without an `id` field, as allowed before `@refinedev/core@4.54.0`. Affected versions with this bug: - `@refinedev/core@4.54.0` - `@refinedev/core@4.54.1` - `@refinedev/core@4.55.0` - `@refinedev/core@4.56.0` The bug is fixed in: - `@refinedev/core@4.56.1` Resolves [#6505](https://github.com/refinedev/refine/issues/6505) - Updated dependencies []: - @refinedev/devtools-internal@1.1.16 ## 4.57.0 ### Minor Changes ⚔ **Refine Enterprise Release** ⚔ - [#6558](https://github.com/refinedev/refine/pull/6558) [`42d730aa2908003cfb0dcf0c57e9b70793c88ddc`](https://github.com/refinedev/refine/commit/42d730aa2908003cfb0dcf0c57e9b70793c88ddc) Thanks [@OmkarBansod02](https://github.com/OmkarBansod02)! - This PR fixes an issue where the ListButton component doesn't include a query filter in the navigation URL. [Resolves #6528](https://github.com/refinedev/refine/issues/6528) ⚔ **Refine Enterprise Release** ⚔ - [#6483](https://github.com/refinedev/refine/pull/6483) [`8309c5690e7c49529f07d288e79896636c6ce7c2`](https://github.com/refinedev/refine/commit/8309c5690e7c49529f07d288e79896636c6ce7c2) Thanks [@reedwane](https://github.com/reedwane)! - refactor: modified the Authenticated component to receive optional params prop to be passed to the useIsAuthenticated hook. Fixes #6309 ### Patch Changes ⚔ **Refine Enterprise Release** ⚔ - [#6554](https://github.com/refinedev/refine/pull/6554) [`3cb2ca6f687398e422b867692b597b0c0d911706`](https://github.com/refinedev/refine/commit/3cb2ca6f687398e422b867692b597b0c0d911706) Thanks [@necatiozmen](https://github.com/necatiozmen)! - chore: update package descriptions ⚔ **Refine Enterprise Release** ⚔ - [#6514](https://github.com/refinedev/refine/pull/6514) [`f32af58283bdaf7712805520bd9feb8bfd27ba38`](https://github.com/refinedev/refine/commit/f32af58283bdaf7712805520bd9feb8bfd27ba38) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: `useUpdate` and `useForm` hooks throws an error when `id` is an empty string. (`id=""`) #6505 This reverts a breaking change introduced in [PR #6116](https://github.com/refinedev/refine/pull/6116) and restores support for using an empty string as `id`. This enables updates without an `id` field, as allowed before `@refinedev/core@4.54.0`. Affected versions with this bug: - `@refinedev/core@4.54.0` - `@refinedev/core@4.54.1` - `@refinedev/core@4.55.0` - `@refinedev/core@4.56.0` The bug is fixed in: - `@refinedev/core@4.56.1` Resolves [#6505](https://github.com/refinedev/refine/issues/6505) - Updated dependencies [[`1ced1baa1dda3251b2a3d058a9168533126efb53`](https://github.com/refinedev/refine/commit/1ced1baa1dda3251b2a3d058a9168533126efb53)]: - @refinedev/devtools-internal@1.1.15 ## 4.56.0 ### Minor Changes - [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: added new prop called `mutationVariables` to `<AuthPage />`. #6431 From now on, you can pass additional parameters to the `authProvider` methods using the `mutationVariables` prop of the `<AuthPage />` component. ```tsx import { AuthPage } from "@refinedev/antd"; // or "@refinedev/chakra-ui", "@refinedev/mantine", "@refinedev/mui" const MyLoginPage = () => { return ( <AuthPage type="login" // all other types are also supported. // highlight-start mutationVariables={{ foo: "bar", xyz: "abc", }} // highlight-end /> ); }; // all mutation methods are supported. const authProvider = { login: async ({ foo, xyz, ...otherProps }) => { console.log(foo); // bar console.log(xyz); // abc // ... }, register: async ({ foo, xyz, ...otherProps }) => { console.log(foo); // bar console.log(xyz); // abc // ... }, // ... }; ``` [Resolves #6431](https://github.com/refinedev/refine/issues/6431) - [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: exported useInvalidateAuthStore hook from auth hooks Now you can invalide the users identity state and force a react query refresh using this hook Resolves [#6341](https://github.com/refinedev/refine/issues/6341) - [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: Added `MetaContext` to share data between components, providers, and hooks. > 🚨 Designed for internal use only. ### Patch Changes - [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: Added more flexibility to the [`<Link />`](https://refine.dev/docs/routing/components/link/) component's `ref` type by changing it from `HTMLAnchorElement` to `Element`. From now on, we can pass any type of `ref` to the [`<Link />`](https://refine.dev/docs/routing/components/link/) component. ```tsx // Before fix - Only worked with HTMLAnchorElement const ref = useRef<HTMLAnchorElement>(null); // After fix - Works with any Element type const ref = useRef<HTMLDivElement>(null); const ref = useRef<HTMLSpanElement>(null); ``` Resolves [#6463](https://github.com/refinedev/refine/issues/6463) - [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: Priority logic between `to` and `go` props in [`Link`](https://refine.dev/docs/routing/components/link/) component. From now on, the `to` prop has priority over the `go` prop. If both are passed, the `to` prop will be used. ```tsx // Before fix - go would override to <Link to="/posts" go={{ resource: "categories" }} /> // After fix - to overrides go <Link to="/posts" go={{ resource: "categories" }} /> ``` Resolves [#6461](https://github.com/refinedev/refine/issues/6461) ## 4.55.0 ### Minor Changes - [#6330](https://github.com/refinedev/refine/pull/6330) [`5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31`](https://github.com/refinedev/refine/commit/5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: add [`<Link />`](https://refine.dev/docs/routing/components/link/) component to navigate to a resource with a specific action. Under the hood, It uses [`useGo`](https://refine.dev/docs/routing/hooks/use-go/) to generate the URL. ## Usage ```tsx import { Link } from "@refinedev/core"; const MyComponent = () => { return ( <> {/* simple usage, navigates to `/posts` */} <Link to="/posts">Posts</Link> {/* complex usage with more control, navigates to `/posts` with query filters */} <Link go={{ query: { // `useTable` or `useDataGrid` automatically use this filters to fetch data if `syncWithLocation` is true. filters: [ { operator: "eq", value: "published", field: "status", }, ], }, to: { resource: "posts", action: "list", }, }} > Posts </Link> </> ); }; ``` [Fixes #6329](https://github.com/refinedev/refine/issues/6329) - [#6330](https://github.com/refinedev/refine/pull/6330) [`5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31`](https://github.com/refinedev/refine/commit/5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - chore: From now on, [`useLink`](https://refine.dev/docs/routing/hooks/use-link/) returns [`<Link />`](https://refine.dev/docs/routing/components/link/) component instead of returning [`routerProvider.Link`](https://refine.dev/docs/routing/router-provider/#link). Since the `<Link />` component uses `routerProvider.Link` under the hood with leveraging `useGo` hook to generate the URL there is no breaking change. It's recommended to use the `<Link />` component from the `@refinedev/core` package instead of `useLink` hook. This hook is used mostly for internal purposes and is only exposed for customization needs. [Fixes #6329](https://github.com/refinedev/refine/issues/6329) ### Patch Changes - [#6327](https://github.com/refinedev/refine/pull/6327) [`c630b090539082b5166b508053f87274624c794e`](https://github.com/refinedev/refine/commit/c630b090539082b5166b508053f87274624c794e) Thanks [@Anonymous961](https://github.com/Anonymous961)! - fix(core): added ability to return `undefined` to fallback to the default notification config when using the function form in `successNotification` and `errorNotification` props. [Resolves #6270](https://github.com/refinedev/refine/issues/6270) - [#6353](https://github.com/refinedev/refine/pull/6353) [`a0f2d7bbef3093e11c3024bb7fa2a0ffc3ce9e10`](https://github.com/refinedev/refine/commit/a0f2d7bbef3093e11c3024bb7fa2a0ffc3ce9e10) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: The `label` and `route` fields in `useMenu().menuItems` were marked as deprecated, but they are not actually deprecated. This issue was caused by `menuItems` extending from `IResourceItem`, however, `menuItems` populates these fields and handles deprecation of these fields internally. This change removes the deprecation warning for these fields. ```tsx export const Sider = () => { const { menuItems } = useMenu(); menuItems.map((item) => { // these are safe to use console.log(item.label); console.log(item.route); item.children.map((child) => { // these are safe to use console.log(child.label); console.log(child.route); }); }); return <div>{/* ... */}</div>; }; ``` [Fixes #6352](https://github.com/refinedev/refine/issues/6352) - [#6386](https://github.com/refinedev/refine/pull/6386) [`bfe28f0316b3623aaef0b60ae39ebe24939dd0af`](https://github.com/refinedev/refine/commit/bfe28f0316b3623aaef0b60ae39ebe24939dd0af) Thanks [@hugorezende](https://github.com/hugorezende)! - fix(core): wrap `setFilters` and `setSorters` methods with `useCallback` to prevent looping re-renders With this we can use the setFilters as dependencies inside useEffects without infinite loop since state changes in the hook won't cause the functions to be re-assigned [Fixes #6385](https://github.com/refinedev/refine/issues/6385) ## 4.54.1 ### Patch Changes - [#6260](https://github.com/refinedev/refine/pull/6260) [`05b944a75f3a907c0df7b30591a5c5fbbc3cc3f7`](https://github.com/refinedev/refine/commit/05b944a75f3a907c0df7b30591a5c5fbbc3cc3f7) Thanks [@aliemir](https://github.com/aliemir)! - fix(core): `useResourceParams` not reflecting `id` prop changes immediately `useResourceParams` hook was not reflecting the changes in the `id` prop immediately. This was due to the `id` state being set in the `useEffect` hook. This PR fixes the issue by setting the `id` state properly during render rather than after the render is complete. [Fixes #6259](https://github.com/refinedev/refine/issues/6259) - [#6222](https://github.com/refinedev/refine/pull/6222) [`ec24fe0f37aa9b92991bf105719f6f42bb68d63c`](https://github.com/refinedev/refine/commit/ec24fe0f37aa9b92991bf105719f6f42bb68d63c) Thanks [@Sergio16T](https://github.com/Sergio16T)! - feat: added support for meta.gqlVariables to hasura dataProvider. Updated GraphQLQueryOptions to include optional field gqlVariables [Feat #5864](https://github.com/refinedev/refine/issues/5864) ## 4.54.0 ### Minor Changes - [#6180](https://github.com/refinedev/refine/pull/6180) [`292cebc5a70f19400793292b79d1400fec114591`](https://github.com/refinedev/refine/commit/292cebc5a70f19400793292b79d1400fec114591) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useSelect`](https://refine.dev/docs/data/hooks/use-select/)'s `queryResult` and `defaultValueQueryResult` is deprecated, use `query` and `defaultValueQuery` instead. #6179 ```diff import { useSelect } from '@refinedev/core'; - const { queryResult, defaultValueQueryResult } = useSelect(); + const { query, defaultValueQuery } = useSelect(); ``` > ✨ You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory: > > ```bash > npx @refinedev/codemod@latest rename-query-and-mutation-result > ``` - [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-update/#mutation-parameters) should be given as a prop to the `useUpdate` hook. #6102 From now on, you can pass mutation parameters to the `useUpdate` hook as a prop. Old usage of `useUpdate` hook: ```tsx import { useUpdate } from "@refinedev/core"; const { mutate } = useUpdate(); mutate( { resource: "products", id: 1, mutationMode: "optimistic", successNotification: false, values: { name: "New Product", material: "Wood", }, }, { onSuccess: () => { /* do something after mutation success */ }, }, ); ``` New usage of `useUpdate` hook: ```tsx import { useUpdate } from "@refinedev/core"; const { mutate } = useUpdate({ resource: "products", successNotification: false, mutationMode: "optimistic", mutationOptions: { onSuccess: () => { /* do something after mutation success */ }, }, }); mutate({ // also you can override the parameters given to the hook id: 1, values: { name: "New Product", material: "Wood", }, }); ``` You can think of the parameters given to the `useUpdate` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values. > 🚨 If you pass these parameters to the `mutate` function, it will override the values given to the hook. - [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-create/#mutation-parameters) should be given as a prop to the `useCreate` hook. #6113 From now on, you can pass mutation parameters to the `useCreate` hook as a prop. Old usage of `useCreate` hook: ```tsx import { useCreate } from "@refinedev/core"; const { mutate } = useCreate(); mutate( { resource: "products", values: { name: "New Product", material: "Wood", }, mutationMode: "optimistic", successNotification: false, }, { onSuccess: () => { /* do something after mutation success */ }, }, ); ``` New usage of `useCreate` hook: ```tsx import { useCreate } from "@refinedev/core"; const { mutate } = useCreate({ resource: "products", successNotification: false, mutationMode: "optimistic", mutationOptions: { onSuccess: () => { /* do something after mutation success */ }, }, }); mutate({ // also you can override the parameters given to the hook values: { name: "New Product", material: "Wood", }, }); ``` You can think of the parameters given to the `useCreate` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values. > 🚨 If you pass these parameters to the `mutate` function, it will override the values given to the hook. - [#6172](https://github.com/refinedev/refine/pull/6172) [`4967a51944c139d102fcfc04ada5a42c725ed7c2`](https://github.com/refinedev/refine/commit/4967a51944c139d102fcfc04ada5a42c725ed7c2) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useTable`](https://refine.dev/docs/data/hooks/use-table/)'s `tableQueryResult` is deprecated, use `tableQuery` instead. #6169 ```diff import { useTable } from '@refinedev/core'; - const { tableQueryResult } = useTable(); + const { tableQuery } = useTable(); ``` > ✨ You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory: > > ```bash > npx @refinedev/codemod@latest rename-query-and-mutation-result > ``` - [#6164](https://github.com/refinedev/refine/pull/6164) [`8ed027eec66c41c444f168f4f52e6b51057bc498`](https://github.com/refinedev/refine/commit/8ed027eec66c41c444f168f4f52e6b51057bc498) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useForm`](https://refine.dev/docs/data/hooks/use-form/)'s `queryResult` is deprecated, use `query` instead. #6163 ```diff import { useForm } from '@refinedev/core'; - const { queryResult } = useForm(); + const { query } = useForm(); ``` > ✨ You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory: > > ```bash > npx @refinedev/codemod@latest rename-query-and-mutation-result > ``` - [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-create-many/#mutation-parameters) should be given as a prop to the `useCreateMany` hook. #6114 From now on, you can pass mutation parameters to the `useCreateMany` hook as a prop. Old usage of `useCreateMany` hook: ```tsx import { useCreateMany } from "@refinedev/core"; const { mutate } = useCreateMany(); mutate( { resource: "products", values: [ { name: "Product 1", material: "Wood", }, { name: "Product 2", material: "Metal", }, ], mutationMode: "optimistic", successNotification: false, }, { onSuccess: () => { /* do something after mutation success */ }, }, ); ``` New usage of `useCreateMany` hook: ```tsx import { useCreateMany } from "@refinedev/core"; const { mutate } = useCreateMany({ resource: "products", successNotification: false, mutationMode: "optimistic", mutationOptions: { onSuccess: () => { /* do something after mutation success */ }, }, }); mutate({ // also you can override the parameters given to the hook values: [ { name: "Product 1", material: "Wood", }, { name: "Product 2", material: "Metal", }, ], }); ``` You can think of the parameters given to the `useCreateMany` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values. > 🚨 If you pass these parameters to the `mutate` function, it will override the values given to the hook. - [#6174](https://github.com/refinedev/refine/pull/6174) [`2b73e40b0e18932f008842790065cdd386e9d270`](https://github.com/refinedev/refine/commit/2b73e40b0e18932f008842790065cdd386e9d270) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useShow`](https://refine.dev/docs/data/hooks/use-show/)'s `queryResult` is deprecated, use `query` instead. #6173 ```diff import { useShow } from '@refinedev/core'; - const { queryResult } = useShow(); + const { query } = useShow(); ``` > ✨ You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory: > > ```bash > npx @refinedev/codemod@latest rename-query-and-mutation-result > ``` - [#6164](https://github.com/refinedev/refine/pull/6164) [`8ed027eec66c41c444f168f4f52e6b51057bc498`](https://github.com/refinedev/refine/commit/8ed027eec66c41c444f168f4f52e6b51057bc498) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useForm`](https://refine.dev/docs/data/hooks/use-form/)'s `mutationResult` is deprecated, use `mutation` instead. #6163 ```diff import { useForm } from '@refinedev/core'; - const { mutationResult } = useForm(); + const { mutation } = useForm(); ``` > ✨ You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory: > > ```bash > npx @refinedev/codemod@latest rename-query-and-mutation-result > ``` - [#6125](https://github.com/refinedev/refine/pull/6125) [`61aa3464df0d95c30839726f455ed43e6854730b`](https://github.com/refinedev/refine/commit/61aa3464df0d95c30839726f455ed43e6854730b) Thanks [@Dominic-Preap](https://github.com/Dominic-Preap)! - fix: update debounce behavior on `onSearch` in `useSelect` Now debounce behavior is working correctly on `onSearch` in `useSelect` when using inside `Controller` of react-hook-form. Resolves [#6096](https://github.com/refinedev/refine/issues/6096) - [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-update-many/#mutation-parameters) should be given as a prop to the `useUpdateMany` hook. #6115 From now on, you can pass mutation parameters to the `useUpdateMany` hook as a prop. Old usage of `useUpdateMany` hook: ```tsx import { useUpdateMany } from "@refinedev/core"; const { mutate } = useUpdateMany(); mutate( { resource: "products", values: { name: "New Product", material: "Wood", }, ids: [1, 2, 3], mutationMode: "optimistic", successNotification: false, }, { onSuccess: () => { /* do something after mutation success */ }, }, ); ``` New usage of `useUpdateMany` hook: ```tsx import { useUpdateMany } from "@refinedev/core"; const { mutate } = useUpdateMany({ resource: "products", successNotification: false, mutationMode: "optimistic", mutationOptions: { onSuccess: () => { /* do something after mutation success */ }, }, }); mutate({ ids: [1, 2, 3], values: { name: "New Product", material: "Wood", }, // also you can override the parameters given to the hook }); ``` You can think of the parameters given to the `useUpdateMany` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values. > 🚨 If you pass these parameters to the `mutate` function, it will override the values given to the hook. ### Patch Changes - [#6185](https://github.com/refinedev/refine/pull/6185) [`603c73eb7d376fc2357a577f5921f844a8f444e4`](https://github.com/refinedev/refine/commit/603c73eb7d376fc2357a577f5921f844a8f444e4) Thanks [@aliemir](https://github.com/aliemir)! - Bump `@refinedev/devtools-internal` dependency to reflect the latest changes in the Refine Devtools. - [#6224](https://github.com/refinedev/refine/pull/6224) [`81703b62bafeb01a75290b99b3869ef96d04bd94`](https://github.com/refinedev/refine/commit/81703b62bafeb01a75290b99b3869ef96d04bd94) Thanks [@WananiAdib](https://github.com/WananiAdib)! - fix(core): fixed type issue in useSelect. #6223 Previously, the types would not allow functions to be passed as props. After this change, it will be possible. [Resolves #6223](https://github.com/refinedev/refine/issues/6223) - [#6184](https://github.com/refinedev/refine/pull/6184) [`1f7976bd32da311367945370efccd7d9c9b102a7`](https://github.com/refinedev/refine/commit/1f7976bd32da311367945370efccd7d9c9b102a7) Thanks [@Sarfraz-droid](https://github.com/Sarfraz-droid)! - AuthPage in Next.js generates code with i18n but the folder hooks is not created. imported useTranslate from @hooks to fix the issue - [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: `invalidates` prop of `useUpdateMany` doesn't work. #6209 From now on, the `invalidates` prop of the `useUpdateMany` hook will work as expected. ```tsx const { mutate } = useUpdateMany({ resource: "posts", invalidates: ["all"], // invalidates all queries of the "posts" resource }); mutate({ ids: [1, 2, 3], values: { title: "new title" } }); ``` - [#6154](https://github.com/refinedev/refine/pull/6154) [`fa2d7a4554da2d5fb2432a011941f9c157b59aba`](https://github.com/refinedev/refine/commit/fa2d7a4554da2d5fb2432a011941f9c157b59aba) Thanks [@BatuhanW](https://github.com/BatuhanW)! - chore(devtools): bump internal devtools dependency Bump `@refinedev/devtools-internal` version. - Updated dependencies [[`ccddff6eba23286d4025a7301de3ebfc24b1b633`](https://github.com/refinedev/refine/commit/ccddff6eba23286d4025a7301de3ebfc24b1b633), [`603c73eb7d376fc2357a577f5921f844a8f444e4`](https://github.com/refinedev/refine/commit/603c73eb7d376fc2357a577f5921f844a8f444e4)]: - @refinedev/devtools-internal@1.1.14 ## 4.53.0 ### Minor Changes - [#6071](https://github.com/refinedev/refine/pull/6071) [`853bef97ed7baf59e74c98fc54c0ed11624fb491`](https://github.com/refinedev/refine/commit/853bef97ed7baf59e74c98fc54c0ed11624fb491) Thanks [@Dominic-Preap](https://github.com/Dominic-Preap)! - feat: add `selectedOptionsOrder` in `useSelect` Now with `selectedOptionsOrder`, you can sort `selectedOptions` at the top of list when use `useSelect` with `defaultValue`. Resolves [#6061](https://github.com/refinedev/refine/issues/6061) ### Patch Changes - [#5989](https://github.com/refinedev/refine/pull/5989) [`b86648f42cd849a506e4c32d740de26b72681f72`](https://github.com/refinedev/refine/commit/b86648f42cd849a506e4c32d740de26b72681f72) Thanks [@lnikitadobrenkol](https://github.com/lnikitadobrenkol)! - chore(core): add missing types of data hooks Added missing props and return types of data hooks. - [#6070](https://github.com/refinedev/refine/pull/6070) [`4265ae2509f79af9dbca8d52daf5c2f1b4a50a51`](https://github.com/refinedev/refine/commit/4265ae2509f79af9dbca8d52daf5c2f1b4a50a51) Thanks [@FatimaSaleem21](https://github.com/FatimaSaleem21)! - fix(core): add unexported types in `index.tsx` The `refinedev/core` package has many unexported types that are not accessible for use outside the package. This change aims to address this limitation by exporting those missing types. Resolves [#6041](https://github.com/refinedev/refine/issues/6041) - [#6064](https://github.com/refinedev/refine/pull/6064) [`b516c18b828ba8823561d0fefc4afe02b45ce332`](https://github.com/refinedev/refine/commit/b516c18b828ba8823561d0fefc4afe02b45ce332) Thanks [@aliemir](https://github.com/aliemir)! - fix(auto-save-indicator): replace reserved `key` prop with `translationKey` in <Message /> components `<AutoSaveIndicator />` components from UI libraries have been using a `<Message />` component internally that uses a `key` prop. Since `key` is a reserved prop in React, it was causing a warning in the console. This change replaces the `key` prop with `translationKey` to avoid the warning. Resolves [#6067](https://github.com/refinedev/refine/issues/6067) - Updated dependencies []: - @refinedev/devtools-internal@1.1.13 ## 4.51.0 ### Minor Changes - [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046) Thanks [@BatuhanW](https://github.com/BatuhanW)! - Added ina and nina CrudOperators. Added filtering by these operators to Supabase data provider #5902 - [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046) Thanks [@BatuhanW](https://github.com/BatuhanW)! - feat(core): ability to pass global app title and icon Added ability to pass global app name and icon values through `<Refine />` component's `options` prop. Now `<Refine />` component accepts `options.title` prop that can be used to set app icon and app name globally. By default these values will be accessible through `useRefineOptions` hook and will be used in `<ThemedLayoutV2 />` and `<AuthPage />` components of the UI packages. ```tsx import { Refine } from "@refinedev/core"; const MyIcon = () => <svg>{/* ... */}</svg>; const App = () => { return ( <Refine options={{ title: { icon: <MyIcon />, text: "Refine App", }, }} > {/* ... */} </Refine> ); }; ``` ### Patch Changes - [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046) Thanks [@BatuhanW](https://github.com/BatuhanW)! - fix(core): update default titles Previously, default titles included lowercase "refine", which was not correct. This commit updates the default titles to include "Refine" instead. - [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046) Thanks [@BatuhanW](https://github.com/BatuhanW)! - refactor: omit `to` parameter if at root when unauthenticated If user is not authenticated, `<Authenticated />` redirects to the provided route and appends the current route to the `to` parameter. With this change, if the current route is the root (`/`), the `to` parameter will be omitted. - [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046) Thanks [@BatuhanW](https://github.com/BatuhanW)! - feat: `<GitHubBanner />` has `paddingLeft: 200px` by default to make space for the sidebar. This is not needed when the sidebar is not present. From on, `<GitHubBanner />` style property can be overridden by passing `containerStyle` prop. ```jsx <GitHubBanner containerStyle={{ paddingLeft: 0 }} /> ``` - [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046) Thanks [@BatuhanW](https://github.com/BatuhanW)! - chore: added `type` qualifier to imports used as type only. ```diff - import { A } from "./example.ts"; + import type { A } from "./example.ts"; ``` - Updated dependencies [[`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9afa2ec046), [`6bd14228760d3e1e205ea9248e427f9afa2ec046`](https://github.com/refinedev/refine/commit/6bd14228760d3e1e205ea9248e427f9af