@atlaskit/app-provider 0.2.0 → 0.3.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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/app-provider
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#42091](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42091) [`4ec3142822b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4ec3142822b) - Add the `routerLinkComponent` prop to support router link configuration within the Design System.
8
+
3
9
  ## 0.2.0
4
10
 
5
11
  ### Minor Changes
@@ -4,6 +4,7 @@ order: 0
4
4
 
5
5
  import defaultExample from '../../examples/constellation/0-default';
6
6
  import themeSwitcherExample from '../../examples/constellation/1-theme-switcher';
7
+ import RouterLinkComponentExample from '../../examples/constellation/2-router-link-component';
7
8
 
8
9
  ## Theming
9
10
 
@@ -26,3 +27,17 @@ The `useTheme` hook can be used to get the active themes. The `useSetTheme` hook
26
27
  source={themeSwitcherExample.code}
27
28
  packageName="@atlaskit/app-provider"
28
29
  />
30
+
31
+ ## Router links
32
+
33
+ The `routerLinkComponent` prop provides support for configuring router links within Design System components.
34
+
35
+ Support for this is limited as Design System components are being updated, starting with `@atlaskit/button`.
36
+
37
+ This example shows how links can be configured to utilize the router link component supplied by [React Resource Router](https://github.com/atlassian-labs/react-resource-router), however any routing library can be used.
38
+
39
+ <Example
40
+ Component={RouterLinkComponentExample}
41
+ appearance="source-only"
42
+ packageName="@atlaskit/app-provider"
43
+ />
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.AppProvider = AppProvider;
9
9
  exports.default = void 0;
10
10
  var _react = _interopRequireWildcard(require("react"));
11
+ var _routerLinkProvider = _interopRequireDefault(require("./router-link-provider"));
11
12
  var _themeProvider = _interopRequireDefault(require("./theme-provider"));
12
13
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -23,7 +24,8 @@ function AppProvider(_ref) {
23
24
  var children = _ref.children,
24
25
  _ref$defaultColorMode = _ref.defaultColorMode,
25
26
  defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode,
26
- defaultTheme = _ref.defaultTheme;
27
+ defaultTheme = _ref.defaultTheme,
28
+ routerLinkComponent = _ref.routerLinkComponent;
27
29
  var isInsideAppProvider = (0, _react.useContext)(InsideAppProviderContext);
28
30
  if (isInsideAppProvider) {
29
31
  throw new Error('App provider should not be nested within another app provider.');
@@ -33,6 +35,8 @@ function AppProvider(_ref) {
33
35
  }, /*#__PURE__*/_react.default.createElement(_themeProvider.default, {
34
36
  defaultColorMode: defaultColorMode,
35
37
  defaultTheme: defaultTheme
36
- }, children));
38
+ }, /*#__PURE__*/_react.default.createElement(_routerLinkProvider.default, {
39
+ routerLinkComponent: routerLinkComponent
40
+ }, children)));
37
41
  }
38
42
  var _default = exports.default = AppProvider;
package/dist/cjs/index.js CHANGED
@@ -16,6 +16,12 @@ Object.defineProperty(exports, "useColorMode", {
16
16
  return _themeProvider.useColorMode;
17
17
  }
18
18
  });
19
+ Object.defineProperty(exports, "useRouterLink", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _useRouterLink.default;
23
+ }
24
+ });
19
25
  Object.defineProperty(exports, "useSetColorMode", {
20
26
  enumerable: true,
21
27
  get: function get() {
@@ -35,4 +41,5 @@ Object.defineProperty(exports, "useTheme", {
35
41
  }
36
42
  });
37
43
  var _appProvider = _interopRequireDefault(require("./app-provider"));
38
- var _themeProvider = require("./theme-provider");
44
+ var _themeProvider = require("./theme-provider");
45
+ var _useRouterLink = _interopRequireDefault(require("./router-link-provider/hooks/use-router-link"));
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _index = require("../index");
9
+ /**
10
+ * __useRouterLink()__
11
+ *
12
+ * Hook: Returns app-configured router link component
13
+ */
14
+ var useRouterLink = function useRouterLink() {
15
+ var _useContext = (0, _react.useContext)(_index.RouterLinkProviderContext),
16
+ routerLinkComponent = _useContext.routerLinkComponent;
17
+ return routerLinkComponent;
18
+ };
19
+ var _default = exports.default = useRouterLink;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.RouterLinkProviderContext = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ var RouterLinkProviderContext = exports.RouterLinkProviderContext = /*#__PURE__*/(0, _react.createContext)({});
12
+ /**
13
+ * __RouterLinkProvider__
14
+ *
15
+ * Provides a configured router link component for use
16
+ * within Design System components.
17
+ */
18
+ var RouterLinkProvider = function RouterLinkProvider(_ref) {
19
+ var routerLinkComponent = _ref.routerLinkComponent,
20
+ children = _ref.children;
21
+ return /*#__PURE__*/_react.default.createElement(RouterLinkProviderContext.Provider, {
22
+ value: {
23
+ routerLinkComponent: routerLinkComponent
24
+ }
25
+ }, children);
26
+ };
27
+ var _default = exports.default = RouterLinkProvider;
@@ -1,4 +1,5 @@
1
1
  import React, { createContext, useContext } from 'react';
2
+ import RouterLinkProvider from './router-link-provider';
2
3
  import ThemeProvider from './theme-provider';
3
4
  const InsideAppProviderContext = /*#__PURE__*/createContext(false);
4
5
  /**
@@ -11,7 +12,8 @@ const InsideAppProviderContext = /*#__PURE__*/createContext(false);
11
12
  export function AppProvider({
12
13
  children,
13
14
  defaultColorMode = 'light',
14
- defaultTheme
15
+ defaultTheme,
16
+ routerLinkComponent
15
17
  }) {
16
18
  const isInsideAppProvider = useContext(InsideAppProviderContext);
17
19
  if (isInsideAppProvider) {
@@ -22,6 +24,8 @@ export function AppProvider({
22
24
  }, /*#__PURE__*/React.createElement(ThemeProvider, {
23
25
  defaultColorMode: defaultColorMode,
24
26
  defaultTheme: defaultTheme
25
- }, children));
27
+ }, /*#__PURE__*/React.createElement(RouterLinkProvider, {
28
+ routerLinkComponent: routerLinkComponent
29
+ }, children)));
26
30
  }
27
31
  export default AppProvider;
@@ -1,2 +1,4 @@
1
1
  export { default } from './app-provider';
2
- export { useColorMode, useSetColorMode, useSetTheme, useTheme } from './theme-provider';
2
+ export { useColorMode, useSetColorMode, useSetTheme, useTheme } from './theme-provider';
3
+ import useRouterLink from './router-link-provider/hooks/use-router-link';
4
+ export { useRouterLink };
@@ -0,0 +1,15 @@
1
+ import { useContext } from 'react';
2
+ import { RouterLinkProviderContext } from '../index';
3
+
4
+ /**
5
+ * __useRouterLink()__
6
+ *
7
+ * Hook: Returns app-configured router link component
8
+ */
9
+ const useRouterLink = () => {
10
+ const {
11
+ routerLinkComponent
12
+ } = useContext(RouterLinkProviderContext);
13
+ return routerLinkComponent;
14
+ };
15
+ export default useRouterLink;
@@ -0,0 +1,19 @@
1
+ import React, { createContext } from 'react';
2
+ export const RouterLinkProviderContext = /*#__PURE__*/createContext({});
3
+ /**
4
+ * __RouterLinkProvider__
5
+ *
6
+ * Provides a configured router link component for use
7
+ * within Design System components.
8
+ */
9
+ const RouterLinkProvider = ({
10
+ routerLinkComponent,
11
+ children
12
+ }) => {
13
+ return /*#__PURE__*/React.createElement(RouterLinkProviderContext.Provider, {
14
+ value: {
15
+ routerLinkComponent
16
+ }
17
+ }, children);
18
+ };
19
+ export default RouterLinkProvider;
@@ -1,4 +1,5 @@
1
1
  import React, { createContext, useContext } from 'react';
2
+ import RouterLinkProvider from './router-link-provider';
2
3
  import ThemeProvider from './theme-provider';
3
4
  var InsideAppProviderContext = /*#__PURE__*/createContext(false);
4
5
  /**
@@ -12,7 +13,8 @@ export function AppProvider(_ref) {
12
13
  var children = _ref.children,
13
14
  _ref$defaultColorMode = _ref.defaultColorMode,
14
15
  defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode,
15
- defaultTheme = _ref.defaultTheme;
16
+ defaultTheme = _ref.defaultTheme,
17
+ routerLinkComponent = _ref.routerLinkComponent;
16
18
  var isInsideAppProvider = useContext(InsideAppProviderContext);
17
19
  if (isInsideAppProvider) {
18
20
  throw new Error('App provider should not be nested within another app provider.');
@@ -22,6 +24,8 @@ export function AppProvider(_ref) {
22
24
  }, /*#__PURE__*/React.createElement(ThemeProvider, {
23
25
  defaultColorMode: defaultColorMode,
24
26
  defaultTheme: defaultTheme
25
- }, children));
27
+ }, /*#__PURE__*/React.createElement(RouterLinkProvider, {
28
+ routerLinkComponent: routerLinkComponent
29
+ }, children)));
26
30
  }
27
31
  export default AppProvider;
package/dist/esm/index.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { default } from './app-provider';
2
- export { useColorMode, useSetColorMode, useSetTheme, useTheme } from './theme-provider';
2
+ export { useColorMode, useSetColorMode, useSetTheme, useTheme } from './theme-provider';
3
+ import useRouterLink from './router-link-provider/hooks/use-router-link';
4
+ export { useRouterLink };
@@ -0,0 +1,14 @@
1
+ import { useContext } from 'react';
2
+ import { RouterLinkProviderContext } from '../index';
3
+
4
+ /**
5
+ * __useRouterLink()__
6
+ *
7
+ * Hook: Returns app-configured router link component
8
+ */
9
+ var useRouterLink = function useRouterLink() {
10
+ var _useContext = useContext(RouterLinkProviderContext),
11
+ routerLinkComponent = _useContext.routerLinkComponent;
12
+ return routerLinkComponent;
13
+ };
14
+ export default useRouterLink;
@@ -0,0 +1,18 @@
1
+ import React, { createContext } from 'react';
2
+ export var RouterLinkProviderContext = /*#__PURE__*/createContext({});
3
+ /**
4
+ * __RouterLinkProvider__
5
+ *
6
+ * Provides a configured router link component for use
7
+ * within Design System components.
8
+ */
9
+ var RouterLinkProvider = function RouterLinkProvider(_ref) {
10
+ var routerLinkComponent = _ref.routerLinkComponent,
11
+ children = _ref.children;
12
+ return /*#__PURE__*/React.createElement(RouterLinkProviderContext.Provider, {
13
+ value: {
14
+ routerLinkComponent: routerLinkComponent
15
+ }
16
+ }, children);
17
+ };
18
+ export default RouterLinkProvider;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { type RouterLinkComponent } from './router-link-provider';
2
3
  import { type ColorMode, type Theme } from './theme-provider';
3
4
  interface AppProviderProps {
4
5
  /**
@@ -9,6 +10,10 @@ interface AppProviderProps {
9
10
  * Theme settings.
10
11
  */
11
12
  defaultTheme?: Partial<Theme>;
13
+ /**
14
+ * A configured router link component.
15
+ */
16
+ routerLinkComponent?: RouterLinkComponent<any>;
12
17
  /**
13
18
  * App content.
14
19
  */
@@ -21,5 +26,5 @@ interface AppProviderProps {
21
26
  *
22
27
  * Place it at the root of your application.
23
28
  */
24
- export declare function AppProvider({ children, defaultColorMode, defaultTheme, }: AppProviderProps): JSX.Element;
29
+ export declare function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, }: AppProviderProps): JSX.Element;
25
30
  export default AppProvider;
@@ -1,2 +1,5 @@
1
1
  export { default } from './app-provider';
2
2
  export { useColorMode, useSetColorMode, useSetTheme, useTheme, } from './theme-provider';
3
+ export { type RouterLinkComponentProps } from './router-link-provider';
4
+ import useRouterLink from './router-link-provider/hooks/use-router-link';
5
+ export { useRouterLink };
@@ -0,0 +1,8 @@
1
+ import { type RouterLinkComponent } from '../index';
2
+ /**
3
+ * __useRouterLink()__
4
+ *
5
+ * Hook: Returns app-configured router link component
6
+ */
7
+ declare const useRouterLink: () => RouterLinkComponent | undefined;
8
+ export default useRouterLink;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ export type RouterLinkComponent<RouterLinkConfig extends {} = {}> = React.ComponentType<RouterLinkComponentProps<RouterLinkConfig>>;
3
+ export type RouterLinkComponentProps<RouterLinkConfig extends {} = {}> = {
4
+ /**
5
+ * A string which can be mapped to the underlying router link,
6
+ * or optionally a custom object defined in the generic type for advanced use.
7
+ *
8
+ * @example
9
+ * ```
10
+ * const MyRouterLink: RouterLinkComponent<{
11
+ * to: string;
12
+ * replace?: boolean;
13
+ * }> ...
14
+ * ```
15
+ */
16
+ href: string | RouterLinkConfig;
17
+ children: React.ReactNode;
18
+ };
19
+ export type RouterLinkProviderContextProps<RouterLinkConfig extends {} = {}> = {
20
+ routerLinkComponent?: RouterLinkComponent<RouterLinkConfig>;
21
+ };
22
+ export declare const RouterLinkProviderContext: React.Context<RouterLinkProviderContextProps<{}>>;
23
+ export type RouterLinkProviderProps = {
24
+ /**
25
+ * The rendering mechanism of router links within Design System components.
26
+ */
27
+ routerLinkComponent?: RouterLinkComponent<any>;
28
+ };
29
+ /**
30
+ * __RouterLinkProvider__
31
+ *
32
+ * Provides a configured router link component for use
33
+ * within Design System components.
34
+ */
35
+ declare const RouterLinkProvider: ({ routerLinkComponent, children, }: RouterLinkProviderProps & {
36
+ children: React.ReactNode;
37
+ }) => JSX.Element;
38
+ export default RouterLinkProvider;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { type RouterLinkComponent } from './router-link-provider';
2
3
  import { type ColorMode, type Theme } from './theme-provider';
3
4
  interface AppProviderProps {
4
5
  /**
@@ -9,6 +10,10 @@ interface AppProviderProps {
9
10
  * Theme settings.
10
11
  */
11
12
  defaultTheme?: Partial<Theme>;
13
+ /**
14
+ * A configured router link component.
15
+ */
16
+ routerLinkComponent?: RouterLinkComponent<any>;
12
17
  /**
13
18
  * App content.
14
19
  */
@@ -21,5 +26,5 @@ interface AppProviderProps {
21
26
  *
22
27
  * Place it at the root of your application.
23
28
  */
24
- export declare function AppProvider({ children, defaultColorMode, defaultTheme, }: AppProviderProps): JSX.Element;
29
+ export declare function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, }: AppProviderProps): JSX.Element;
25
30
  export default AppProvider;
@@ -1,2 +1,5 @@
1
1
  export { default } from './app-provider';
2
2
  export { useColorMode, useSetColorMode, useSetTheme, useTheme, } from './theme-provider';
3
+ export { type RouterLinkComponentProps } from './router-link-provider';
4
+ import useRouterLink from './router-link-provider/hooks/use-router-link';
5
+ export { useRouterLink };
@@ -0,0 +1,8 @@
1
+ import { type RouterLinkComponent } from '../index';
2
+ /**
3
+ * __useRouterLink()__
4
+ *
5
+ * Hook: Returns app-configured router link component
6
+ */
7
+ declare const useRouterLink: () => RouterLinkComponent | undefined;
8
+ export default useRouterLink;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ export type RouterLinkComponent<RouterLinkConfig extends {} = {}> = React.ComponentType<RouterLinkComponentProps<RouterLinkConfig>>;
3
+ export type RouterLinkComponentProps<RouterLinkConfig extends {} = {}> = {
4
+ /**
5
+ * A string which can be mapped to the underlying router link,
6
+ * or optionally a custom object defined in the generic type for advanced use.
7
+ *
8
+ * @example
9
+ * ```
10
+ * const MyRouterLink: RouterLinkComponent<{
11
+ * to: string;
12
+ * replace?: boolean;
13
+ * }> ...
14
+ * ```
15
+ */
16
+ href: string | RouterLinkConfig;
17
+ children: React.ReactNode;
18
+ };
19
+ export type RouterLinkProviderContextProps<RouterLinkConfig extends {} = {}> = {
20
+ routerLinkComponent?: RouterLinkComponent<RouterLinkConfig>;
21
+ };
22
+ export declare const RouterLinkProviderContext: React.Context<RouterLinkProviderContextProps<{}>>;
23
+ export type RouterLinkProviderProps = {
24
+ /**
25
+ * The rendering mechanism of router links within Design System components.
26
+ */
27
+ routerLinkComponent?: RouterLinkComponent<any>;
28
+ };
29
+ /**
30
+ * __RouterLinkProvider__
31
+ *
32
+ * Provides a configured router link component for use
33
+ * within Design System components.
34
+ */
35
+ declare const RouterLinkProvider: ({ routerLinkComponent, children, }: RouterLinkProviderProps & {
36
+ children: React.ReactNode;
37
+ }) => JSX.Element;
38
+ export default RouterLinkProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/app-provider",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "A top level provider for the Design System.",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -57,6 +57,8 @@
57
57
  "@testing-library/react-hooks": "^8.0.1",
58
58
  "@testing-library/user-event": "^14.4.3",
59
59
  "react-dom": "^16.8.0",
60
+ "react-resource-router": "^0.20.0",
61
+ "react-router-dom": "^4.2.2",
60
62
  "typescript": "~4.9.5",
61
63
  "wait-for-expect": "^1.2.0"
62
64
  },
package/report.api.md CHANGED
@@ -23,6 +23,7 @@ function AppProvider({
23
23
  children,
24
24
  defaultColorMode,
25
25
  defaultTheme,
26
+ routerLinkComponent,
26
27
  }: AppProviderProps): JSX.Element;
27
28
  export default AppProvider;
28
29
 
@@ -31,6 +32,7 @@ interface AppProviderProps {
31
32
  children: React_2.ReactNode;
32
33
  defaultColorMode?: ColorMode;
33
34
  defaultTheme?: Partial<Theme>;
35
+ routerLinkComponent?: RouterLinkComponent<any>;
34
36
  }
35
37
 
36
38
  // @public (undocumented)
@@ -39,12 +41,25 @@ type ColorMode = 'auto' | 'dark' | 'light';
39
41
  // @public (undocumented)
40
42
  type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
41
43
 
44
+ // @public (undocumented)
45
+ type RouterLinkComponent<RouterLinkConfig extends {} = {}> =
46
+ React_2.ComponentType<RouterLinkComponentProps<RouterLinkConfig>>;
47
+
48
+ // @public (undocumented)
49
+ export type RouterLinkComponentProps<RouterLinkConfig extends {} = {}> = {
50
+ href: RouterLinkConfig | string;
51
+ children: React_2.ReactNode;
52
+ };
53
+
42
54
  // @public (undocumented)
43
55
  type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
44
56
 
45
57
  // @public
46
58
  export function useColorMode(): ReconciledColorMode;
47
59
 
60
+ // @public
61
+ export const useRouterLink: () => RouterLinkComponent | undefined;
62
+
48
63
  // @public
49
64
  export function useSetColorMode(): (value: ColorMode) => void;
50
65
 
@@ -8,7 +8,7 @@ import { default as React_2 } from 'react';
8
8
  import { ThemeState } from '@atlaskit/tokens';
9
9
 
10
10
  // @public
11
- function AppProvider({ children, defaultColorMode, defaultTheme, }: AppProviderProps): JSX.Element;
11
+ function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, }: AppProviderProps): JSX.Element;
12
12
  export default AppProvider;
13
13
 
14
14
  // @public (undocumented)
@@ -16,6 +16,7 @@ interface AppProviderProps {
16
16
  children: React_2.ReactNode;
17
17
  defaultColorMode?: ColorMode;
18
18
  defaultTheme?: Partial<Theme>;
19
+ routerLinkComponent?: RouterLinkComponent<any>;
19
20
  }
20
21
 
21
22
  // @public (undocumented)
@@ -24,12 +25,24 @@ type ColorMode = 'auto' | 'dark' | 'light';
24
25
  // @public (undocumented)
25
26
  type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
26
27
 
28
+ // @public (undocumented)
29
+ type RouterLinkComponent<RouterLinkConfig extends {} = {}> = React_2.ComponentType<RouterLinkComponentProps<RouterLinkConfig>>;
30
+
31
+ // @public (undocumented)
32
+ export type RouterLinkComponentProps<RouterLinkConfig extends {} = {}> = {
33
+ href: RouterLinkConfig | string;
34
+ children: React_2.ReactNode;
35
+ };
36
+
27
37
  // @public (undocumented)
28
38
  type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
29
39
 
30
40
  // @public
31
41
  export function useColorMode(): ReconciledColorMode;
32
42
 
43
+ // @public
44
+ export const useRouterLink: () => RouterLinkComponent | undefined;
45
+
33
46
  // @public
34
47
  export function useSetColorMode(): (value: ColorMode) => void;
35
48