@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 +6 -0
- package/constellation/index/examples.mdx +15 -0
- package/dist/cjs/app-provider.js +6 -2
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/router-link-provider/hooks/use-router-link.js +19 -0
- package/dist/cjs/router-link-provider/index.js +27 -0
- package/dist/es2019/app-provider.js +6 -2
- package/dist/es2019/index.js +3 -1
- package/dist/es2019/router-link-provider/hooks/use-router-link.js +15 -0
- package/dist/es2019/router-link-provider/index.js +19 -0
- package/dist/esm/app-provider.js +6 -2
- package/dist/esm/index.js +3 -1
- package/dist/esm/router-link-provider/hooks/use-router-link.js +14 -0
- package/dist/esm/router-link-provider/index.js +18 -0
- package/dist/types/app-provider.d.ts +6 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/router-link-provider/hooks/use-router-link.d.ts +8 -0
- package/dist/types/router-link-provider/index.d.ts +38 -0
- package/dist/types-ts4.5/app-provider.d.ts +6 -1
- package/dist/types-ts4.5/index.d.ts +3 -0
- package/dist/types-ts4.5/router-link-provider/hooks/use-router-link.d.ts +8 -0
- package/dist/types-ts4.5/router-link-provider/index.d.ts +38 -0
- package/package.json +3 -1
- package/report.api.md +15 -0
- package/tmp/api-report-tmp.d.ts +14 -1
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
|
+
/>
|
package/dist/cjs/app-provider.js
CHANGED
|
@@ -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
|
-
},
|
|
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
|
-
},
|
|
27
|
+
}, /*#__PURE__*/React.createElement(RouterLinkProvider, {
|
|
28
|
+
routerLinkComponent: routerLinkComponent
|
|
29
|
+
}, children)));
|
|
26
30
|
}
|
|
27
31
|
export default AppProvider;
|
package/dist/es2019/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,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;
|
package/dist/esm/app-provider.js
CHANGED
|
@@ -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
|
-
},
|
|
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;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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,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,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.
|
|
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
|
|
package/tmp/api-report-tmp.d.ts
CHANGED
|
@@ -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
|
|