@atlaskit/app-provider 0.1.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 +12 -0
- package/constellation/index/examples.mdx +24 -4
- package/dist/cjs/app-provider.js +6 -8
- 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/cjs/theme-provider.js +22 -2
- package/dist/es2019/app-provider.js +6 -7
- 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/es2019/theme-provider.js +19 -2
- package/dist/esm/app-provider.js +6 -8
- 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/esm/theme-provider.js +22 -2
- package/dist/types/app-provider.d.ts +7 -2
- 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/theme-provider.d.ts +3 -3
- package/dist/types-ts4.5/app-provider.d.ts +7 -2
- 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/dist/types-ts4.5/theme-provider.d.ts +3 -3
- package/package.json +4 -2
- package/report.api.md +17 -2
- package/tmp/api-report-tmp.d.ts +16 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
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
|
+
|
|
9
|
+
## 0.2.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#41931](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/41931) [`5df5614a6b5`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5df5614a6b5) - defaultTheme now applies default sub-themes when ommited.
|
|
14
|
+
|
|
3
15
|
## 0.1.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -2,14 +2,19 @@
|
|
|
2
2
|
order: 0
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import defaultExample from '../../examples/constellation/0-default';
|
|
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
|
|
|
10
11
|
AppProvider sets up theming for an app, enabling [design tokens](/tokens/design-tokens) to be used.
|
|
11
12
|
|
|
12
|
-
<Example
|
|
13
|
+
<Example
|
|
14
|
+
Component={defaultExample.example}
|
|
15
|
+
source={defaultExample.code}
|
|
16
|
+
packageName="@atlaskit/app-provider"
|
|
17
|
+
/>
|
|
13
18
|
|
|
14
19
|
## Color mode and theme switching
|
|
15
20
|
|
|
@@ -18,6 +23,21 @@ The `useColorMode` hook can be used to get the active color mode. When the color
|
|
|
18
23
|
The `useTheme` hook can be used to get the active themes. The `useSetTheme` hook can be used to change themes.
|
|
19
24
|
|
|
20
25
|
<Example
|
|
21
|
-
Component={
|
|
26
|
+
Component={themeSwitcherExample.example}
|
|
27
|
+
source={themeSwitcherExample.code}
|
|
28
|
+
packageName="@atlaskit/app-provider"
|
|
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"
|
|
22
42
|
packageName="@atlaskit/app-provider"
|
|
23
43
|
/>
|
package/dist/cjs/app-provider.js
CHANGED
|
@@ -8,15 +8,11 @@ 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; }
|
|
14
15
|
var InsideAppProviderContext = /*#__PURE__*/(0, _react.createContext)(false);
|
|
15
|
-
var defaultThemeSettings = {
|
|
16
|
-
dark: 'dark',
|
|
17
|
-
light: 'light',
|
|
18
|
-
spacing: 'spacing'
|
|
19
|
-
};
|
|
20
16
|
/**
|
|
21
17
|
* __App provider__
|
|
22
18
|
*
|
|
@@ -28,8 +24,8 @@ function AppProvider(_ref) {
|
|
|
28
24
|
var children = _ref.children,
|
|
29
25
|
_ref$defaultColorMode = _ref.defaultColorMode,
|
|
30
26
|
defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode,
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
defaultTheme = _ref.defaultTheme,
|
|
28
|
+
routerLinkComponent = _ref.routerLinkComponent;
|
|
33
29
|
var isInsideAppProvider = (0, _react.useContext)(InsideAppProviderContext);
|
|
34
30
|
if (isInsideAppProvider) {
|
|
35
31
|
throw new Error('App provider should not be nested within another app provider.');
|
|
@@ -39,6 +35,8 @@ function AppProvider(_ref) {
|
|
|
39
35
|
}, /*#__PURE__*/_react.default.createElement(_themeProvider.default, {
|
|
40
36
|
defaultColorMode: defaultColorMode,
|
|
41
37
|
defaultTheme: defaultTheme
|
|
42
|
-
},
|
|
38
|
+
}, /*#__PURE__*/_react.default.createElement(_routerLinkProvider.default, {
|
|
39
|
+
routerLinkComponent: routerLinkComponent
|
|
40
|
+
}, children)));
|
|
43
41
|
}
|
|
44
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;
|
|
@@ -20,6 +20,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
20
20
|
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; }
|
|
21
21
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
22
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
var defaultThemeSettings = {
|
|
24
|
+
dark: 'dark',
|
|
25
|
+
light: 'light',
|
|
26
|
+
spacing: 'spacing'
|
|
27
|
+
};
|
|
23
28
|
var ColorModeContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
24
29
|
var SetColorModeContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
25
30
|
var ThemeContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
@@ -97,7 +102,16 @@ function getReconciledColorMode(colorMode) {
|
|
|
97
102
|
function ThemeProvider(_ref) {
|
|
98
103
|
var children = _ref.children,
|
|
99
104
|
defaultColorMode = _ref.defaultColorMode,
|
|
100
|
-
defaultTheme = _ref.defaultTheme
|
|
105
|
+
_ref$defaultTheme = _ref.defaultTheme,
|
|
106
|
+
_ref$defaultTheme2 = _ref$defaultTheme === void 0 ? defaultThemeSettings : _ref$defaultTheme,
|
|
107
|
+
_ref$defaultTheme2$da = _ref$defaultTheme2.dark,
|
|
108
|
+
dark = _ref$defaultTheme2$da === void 0 ? 'dark' : _ref$defaultTheme2$da,
|
|
109
|
+
_ref$defaultTheme2$li = _ref$defaultTheme2.light,
|
|
110
|
+
light = _ref$defaultTheme2$li === void 0 ? 'light' : _ref$defaultTheme2$li,
|
|
111
|
+
_ref$defaultTheme2$sp = _ref$defaultTheme2.spacing,
|
|
112
|
+
spacing = _ref$defaultTheme2$sp === void 0 ? 'spacing' : _ref$defaultTheme2$sp,
|
|
113
|
+
typography = _ref$defaultTheme2.typography,
|
|
114
|
+
shape = _ref$defaultTheme2.shape;
|
|
101
115
|
var _useState = (0, _react.useState)(defaultColorMode),
|
|
102
116
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
103
117
|
chosenColorMode = _useState2[0],
|
|
@@ -106,7 +120,13 @@ function ThemeProvider(_ref) {
|
|
|
106
120
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
107
121
|
reconciledColorMode = _useState4[0],
|
|
108
122
|
setReconciledColorMode = _useState4[1];
|
|
109
|
-
var _useState5 = (0, _react.useState)(
|
|
123
|
+
var _useState5 = (0, _react.useState)({
|
|
124
|
+
dark: dark,
|
|
125
|
+
light: light,
|
|
126
|
+
spacing: spacing,
|
|
127
|
+
typography: typography,
|
|
128
|
+
shape: shape
|
|
129
|
+
}),
|
|
110
130
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
111
131
|
theme = _useState6[0],
|
|
112
132
|
setTheme = _useState6[1];
|
|
@@ -1,11 +1,7 @@
|
|
|
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
|
-
const defaultThemeSettings = {
|
|
5
|
-
dark: 'dark',
|
|
6
|
-
light: 'light',
|
|
7
|
-
spacing: 'spacing'
|
|
8
|
-
};
|
|
9
5
|
/**
|
|
10
6
|
* __App provider__
|
|
11
7
|
*
|
|
@@ -16,7 +12,8 @@ const defaultThemeSettings = {
|
|
|
16
12
|
export function AppProvider({
|
|
17
13
|
children,
|
|
18
14
|
defaultColorMode = 'light',
|
|
19
|
-
defaultTheme
|
|
15
|
+
defaultTheme,
|
|
16
|
+
routerLinkComponent
|
|
20
17
|
}) {
|
|
21
18
|
const isInsideAppProvider = useContext(InsideAppProviderContext);
|
|
22
19
|
if (isInsideAppProvider) {
|
|
@@ -27,6 +24,8 @@ export function AppProvider({
|
|
|
27
24
|
}, /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
28
25
|
defaultColorMode: defaultColorMode,
|
|
29
26
|
defaultTheme: defaultTheme
|
|
30
|
-
},
|
|
27
|
+
}, /*#__PURE__*/React.createElement(RouterLinkProvider, {
|
|
28
|
+
routerLinkComponent: routerLinkComponent
|
|
29
|
+
}, children)));
|
|
31
30
|
}
|
|
32
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;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
|
|
2
2
|
import { bind } from 'bind-event-listener';
|
|
3
3
|
import { setGlobalTheme } from '@atlaskit/tokens';
|
|
4
|
+
const defaultThemeSettings = {
|
|
5
|
+
dark: 'dark',
|
|
6
|
+
light: 'light',
|
|
7
|
+
spacing: 'spacing'
|
|
8
|
+
};
|
|
4
9
|
const ColorModeContext = /*#__PURE__*/createContext(undefined);
|
|
5
10
|
const SetColorModeContext = /*#__PURE__*/createContext(undefined);
|
|
6
11
|
const ThemeContext = /*#__PURE__*/createContext(undefined);
|
|
@@ -78,11 +83,23 @@ function getReconciledColorMode(colorMode) {
|
|
|
78
83
|
export function ThemeProvider({
|
|
79
84
|
children,
|
|
80
85
|
defaultColorMode,
|
|
81
|
-
defaultTheme
|
|
86
|
+
defaultTheme: {
|
|
87
|
+
dark = 'dark',
|
|
88
|
+
light = 'light',
|
|
89
|
+
spacing = 'spacing',
|
|
90
|
+
typography,
|
|
91
|
+
shape
|
|
92
|
+
} = defaultThemeSettings
|
|
82
93
|
}) {
|
|
83
94
|
const [chosenColorMode, setChosenColorMode] = useState(defaultColorMode);
|
|
84
95
|
const [reconciledColorMode, setReconciledColorMode] = useState(getReconciledColorMode(defaultColorMode));
|
|
85
|
-
const [theme, setTheme] = useState(
|
|
96
|
+
const [theme, setTheme] = useState({
|
|
97
|
+
dark,
|
|
98
|
+
light,
|
|
99
|
+
spacing,
|
|
100
|
+
typography,
|
|
101
|
+
shape
|
|
102
|
+
});
|
|
86
103
|
const setColorMode = useCallback(colorMode => {
|
|
87
104
|
setChosenColorMode(colorMode);
|
|
88
105
|
setReconciledColorMode(getReconciledColorMode(colorMode));
|
package/dist/esm/app-provider.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
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
|
-
var defaultThemeSettings = {
|
|
5
|
-
dark: 'dark',
|
|
6
|
-
light: 'light',
|
|
7
|
-
spacing: 'spacing'
|
|
8
|
-
};
|
|
9
5
|
/**
|
|
10
6
|
* __App provider__
|
|
11
7
|
*
|
|
@@ -17,8 +13,8 @@ export function AppProvider(_ref) {
|
|
|
17
13
|
var children = _ref.children,
|
|
18
14
|
_ref$defaultColorMode = _ref.defaultColorMode,
|
|
19
15
|
defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode,
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
defaultTheme = _ref.defaultTheme,
|
|
17
|
+
routerLinkComponent = _ref.routerLinkComponent;
|
|
22
18
|
var isInsideAppProvider = useContext(InsideAppProviderContext);
|
|
23
19
|
if (isInsideAppProvider) {
|
|
24
20
|
throw new Error('App provider should not be nested within another app provider.');
|
|
@@ -28,6 +24,8 @@ export function AppProvider(_ref) {
|
|
|
28
24
|
}, /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
29
25
|
defaultColorMode: defaultColorMode,
|
|
30
26
|
defaultTheme: defaultTheme
|
|
31
|
-
},
|
|
27
|
+
}, /*#__PURE__*/React.createElement(RouterLinkProvider, {
|
|
28
|
+
routerLinkComponent: routerLinkComponent
|
|
29
|
+
}, children)));
|
|
32
30
|
}
|
|
33
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;
|
|
@@ -5,6 +5,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
5
5
|
import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
|
|
6
6
|
import { bind } from 'bind-event-listener';
|
|
7
7
|
import { setGlobalTheme } from '@atlaskit/tokens';
|
|
8
|
+
var defaultThemeSettings = {
|
|
9
|
+
dark: 'dark',
|
|
10
|
+
light: 'light',
|
|
11
|
+
spacing: 'spacing'
|
|
12
|
+
};
|
|
8
13
|
var ColorModeContext = /*#__PURE__*/createContext(undefined);
|
|
9
14
|
var SetColorModeContext = /*#__PURE__*/createContext(undefined);
|
|
10
15
|
var ThemeContext = /*#__PURE__*/createContext(undefined);
|
|
@@ -82,7 +87,16 @@ function getReconciledColorMode(colorMode) {
|
|
|
82
87
|
export function ThemeProvider(_ref) {
|
|
83
88
|
var children = _ref.children,
|
|
84
89
|
defaultColorMode = _ref.defaultColorMode,
|
|
85
|
-
defaultTheme = _ref.defaultTheme
|
|
90
|
+
_ref$defaultTheme = _ref.defaultTheme,
|
|
91
|
+
_ref$defaultTheme2 = _ref$defaultTheme === void 0 ? defaultThemeSettings : _ref$defaultTheme,
|
|
92
|
+
_ref$defaultTheme2$da = _ref$defaultTheme2.dark,
|
|
93
|
+
dark = _ref$defaultTheme2$da === void 0 ? 'dark' : _ref$defaultTheme2$da,
|
|
94
|
+
_ref$defaultTheme2$li = _ref$defaultTheme2.light,
|
|
95
|
+
light = _ref$defaultTheme2$li === void 0 ? 'light' : _ref$defaultTheme2$li,
|
|
96
|
+
_ref$defaultTheme2$sp = _ref$defaultTheme2.spacing,
|
|
97
|
+
spacing = _ref$defaultTheme2$sp === void 0 ? 'spacing' : _ref$defaultTheme2$sp,
|
|
98
|
+
typography = _ref$defaultTheme2.typography,
|
|
99
|
+
shape = _ref$defaultTheme2.shape;
|
|
86
100
|
var _useState = useState(defaultColorMode),
|
|
87
101
|
_useState2 = _slicedToArray(_useState, 2),
|
|
88
102
|
chosenColorMode = _useState2[0],
|
|
@@ -91,7 +105,13 @@ export function ThemeProvider(_ref) {
|
|
|
91
105
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
92
106
|
reconciledColorMode = _useState4[0],
|
|
93
107
|
setReconciledColorMode = _useState4[1];
|
|
94
|
-
var _useState5 = useState(
|
|
108
|
+
var _useState5 = useState({
|
|
109
|
+
dark: dark,
|
|
110
|
+
light: light,
|
|
111
|
+
spacing: spacing,
|
|
112
|
+
typography: typography,
|
|
113
|
+
shape: shape
|
|
114
|
+
}),
|
|
95
115
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
96
116
|
theme = _useState6[0],
|
|
97
117
|
setTheme = _useState6[1];
|
|
@@ -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
|
/**
|
|
@@ -8,7 +9,11 @@ interface AppProviderProps {
|
|
|
8
9
|
/**
|
|
9
10
|
* Theme settings.
|
|
10
11
|
*/
|
|
11
|
-
defaultTheme?: Theme
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ThemeState } from '@atlaskit/tokens';
|
|
3
|
-
export type Theme = Omit<ThemeState, 'colorMode'>;
|
|
3
|
+
export type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
|
|
4
4
|
export type ColorMode = 'light' | 'dark' | 'auto';
|
|
5
5
|
export type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
|
|
6
6
|
/**
|
|
@@ -29,7 +29,7 @@ export declare function useTheme(): Theme;
|
|
|
29
29
|
export declare function useSetTheme(): (value: Partial<Theme>) => void;
|
|
30
30
|
interface ThemeProviderProps {
|
|
31
31
|
defaultColorMode: ColorMode;
|
|
32
|
-
defaultTheme
|
|
32
|
+
defaultTheme?: Partial<Theme>;
|
|
33
33
|
children: React.ReactNode;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
@@ -39,5 +39,5 @@ interface ThemeProviderProps {
|
|
|
39
39
|
*
|
|
40
40
|
* @internal
|
|
41
41
|
*/
|
|
42
|
-
export declare function ThemeProvider({ children, defaultColorMode, defaultTheme, }: ThemeProviderProps): JSX.Element;
|
|
42
|
+
export declare function ThemeProvider({ children, defaultColorMode, defaultTheme: { dark, light, spacing, typography, shape, }, }: ThemeProviderProps): JSX.Element;
|
|
43
43
|
export default ThemeProvider;
|
|
@@ -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
|
/**
|
|
@@ -8,7 +9,11 @@ interface AppProviderProps {
|
|
|
8
9
|
/**
|
|
9
10
|
* Theme settings.
|
|
10
11
|
*/
|
|
11
|
-
defaultTheme?: Theme
|
|
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;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ThemeState } from '@atlaskit/tokens';
|
|
3
|
-
export type Theme = Omit<ThemeState, 'colorMode'>;
|
|
3
|
+
export type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
|
|
4
4
|
export type ColorMode = 'light' | 'dark' | 'auto';
|
|
5
5
|
export type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
|
|
6
6
|
/**
|
|
@@ -29,7 +29,7 @@ export declare function useTheme(): Theme;
|
|
|
29
29
|
export declare function useSetTheme(): (value: Partial<Theme>) => void;
|
|
30
30
|
interface ThemeProviderProps {
|
|
31
31
|
defaultColorMode: ColorMode;
|
|
32
|
-
defaultTheme
|
|
32
|
+
defaultTheme?: Partial<Theme>;
|
|
33
33
|
children: React.ReactNode;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
@@ -39,5 +39,5 @@ interface ThemeProviderProps {
|
|
|
39
39
|
*
|
|
40
40
|
* @internal
|
|
41
41
|
*/
|
|
42
|
-
export declare function ThemeProvider({ children, defaultColorMode, defaultTheme, }: ThemeProviderProps): JSX.Element;
|
|
42
|
+
export declare function ThemeProvider({ children, defaultColorMode, defaultTheme: { dark, light, spacing, typography, shape, }, }: ThemeProviderProps): JSX.Element;
|
|
43
43
|
export default ThemeProvider;
|
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",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
".": "./src/index.tsx"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@atlaskit/tokens": "^1.
|
|
41
|
+
"@atlaskit/tokens": "^1.28.0",
|
|
42
42
|
"@babel/runtime": "^7.0.0",
|
|
43
43
|
"bind-event-listener": "^2.1.1"
|
|
44
44
|
},
|
|
@@ -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
|
|
|
@@ -30,7 +31,8 @@ export default AppProvider;
|
|
|
30
31
|
interface AppProviderProps {
|
|
31
32
|
children: React_2.ReactNode;
|
|
32
33
|
defaultColorMode?: ColorMode;
|
|
33
|
-
defaultTheme?: Theme
|
|
34
|
+
defaultTheme?: Partial<Theme>;
|
|
35
|
+
routerLinkComponent?: RouterLinkComponent<any>;
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
// @public (undocumented)
|
|
@@ -40,11 +42,24 @@ type ColorMode = 'auto' | 'dark' | 'light';
|
|
|
40
42
|
type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
|
|
41
43
|
|
|
42
44
|
// @public (undocumented)
|
|
43
|
-
type
|
|
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
|
+
|
|
54
|
+
// @public (undocumented)
|
|
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,14 +8,15 @@ 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)
|
|
15
15
|
interface AppProviderProps {
|
|
16
16
|
children: React_2.ReactNode;
|
|
17
17
|
defaultColorMode?: ColorMode;
|
|
18
|
-
defaultTheme?: Theme
|
|
18
|
+
defaultTheme?: Partial<Theme>;
|
|
19
|
+
routerLinkComponent?: RouterLinkComponent<any>;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
// @public (undocumented)
|
|
@@ -25,11 +26,23 @@ type ColorMode = 'auto' | 'dark' | 'light';
|
|
|
25
26
|
type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
|
|
26
27
|
|
|
27
28
|
// @public (undocumented)
|
|
28
|
-
type
|
|
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
|
+
|
|
37
|
+
// @public (undocumented)
|
|
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
|
|