@atlaskit/app-provider 0.1.0 → 0.2.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.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#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.
8
+
3
9
  ## 0.1.0
4
10
 
5
11
  ### Minor Changes
@@ -2,14 +2,18 @@
2
2
  order: 0
3
3
  ---
4
4
 
5
- import AppProviderDefault from '../../examples/constellation/0-default';
6
- import AppProviderThemeSwitcher from '../../examples/constellation/1-theme-switcher';
5
+ import defaultExample from '../../examples/constellation/0-default';
6
+ import themeSwitcherExample from '../../examples/constellation/1-theme-switcher';
7
7
 
8
8
  ## Theming
9
9
 
10
10
  AppProvider sets up theming for an app, enabling [design tokens](/tokens/design-tokens) to be used.
11
11
 
12
- <Example Component={AppProviderDefault} packageName="@atlaskit/app-provider" />
12
+ <Example
13
+ Component={defaultExample.example}
14
+ source={defaultExample.code}
15
+ packageName="@atlaskit/app-provider"
16
+ />
13
17
 
14
18
  ## Color mode and theme switching
15
19
 
@@ -18,6 +22,7 @@ The `useColorMode` hook can be used to get the active color mode. When the color
18
22
  The `useTheme` hook can be used to get the active themes. The `useSetTheme` hook can be used to change themes.
19
23
 
20
24
  <Example
21
- Component={AppProviderThemeSwitcher}
25
+ Component={themeSwitcherExample.example}
26
+ source={themeSwitcherExample.code}
22
27
  packageName="@atlaskit/app-provider"
23
28
  />
@@ -12,11 +12,6 @@ var _themeProvider = _interopRequireDefault(require("./theme-provider"));
12
12
  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
13
  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
14
  var InsideAppProviderContext = /*#__PURE__*/(0, _react.createContext)(false);
15
- var defaultThemeSettings = {
16
- dark: 'dark',
17
- light: 'light',
18
- spacing: 'spacing'
19
- };
20
15
  /**
21
16
  * __App provider__
22
17
  *
@@ -28,8 +23,7 @@ function AppProvider(_ref) {
28
23
  var children = _ref.children,
29
24
  _ref$defaultColorMode = _ref.defaultColorMode,
30
25
  defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode,
31
- _ref$defaultTheme = _ref.defaultTheme,
32
- defaultTheme = _ref$defaultTheme === void 0 ? defaultThemeSettings : _ref$defaultTheme;
26
+ defaultTheme = _ref.defaultTheme;
33
27
  var isInsideAppProvider = (0, _react.useContext)(InsideAppProviderContext);
34
28
  if (isInsideAppProvider) {
35
29
  throw new Error('App provider should not be nested within another app provider.');
@@ -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)(defaultTheme),
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,6 @@
1
1
  import React, { createContext, useContext } from 'react';
2
2
  import ThemeProvider from './theme-provider';
3
3
  const InsideAppProviderContext = /*#__PURE__*/createContext(false);
4
- const defaultThemeSettings = {
5
- dark: 'dark',
6
- light: 'light',
7
- spacing: 'spacing'
8
- };
9
4
  /**
10
5
  * __App provider__
11
6
  *
@@ -16,7 +11,7 @@ const defaultThemeSettings = {
16
11
  export function AppProvider({
17
12
  children,
18
13
  defaultColorMode = 'light',
19
- defaultTheme = defaultThemeSettings
14
+ defaultTheme
20
15
  }) {
21
16
  const isInsideAppProvider = useContext(InsideAppProviderContext);
22
17
  if (isInsideAppProvider) {
@@ -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(defaultTheme);
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));
@@ -1,11 +1,6 @@
1
1
  import React, { createContext, useContext } from 'react';
2
2
  import ThemeProvider from './theme-provider';
3
3
  var InsideAppProviderContext = /*#__PURE__*/createContext(false);
4
- var defaultThemeSettings = {
5
- dark: 'dark',
6
- light: 'light',
7
- spacing: 'spacing'
8
- };
9
4
  /**
10
5
  * __App provider__
11
6
  *
@@ -17,8 +12,7 @@ export function AppProvider(_ref) {
17
12
  var children = _ref.children,
18
13
  _ref$defaultColorMode = _ref.defaultColorMode,
19
14
  defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode,
20
- _ref$defaultTheme = _ref.defaultTheme,
21
- defaultTheme = _ref$defaultTheme === void 0 ? defaultThemeSettings : _ref$defaultTheme;
15
+ defaultTheme = _ref.defaultTheme;
22
16
  var isInsideAppProvider = useContext(InsideAppProviderContext);
23
17
  if (isInsideAppProvider) {
24
18
  throw new Error('App provider should not be nested within another app provider.');
@@ -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(defaultTheme),
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];
@@ -8,7 +8,7 @@ interface AppProviderProps {
8
8
  /**
9
9
  * Theme settings.
10
10
  */
11
- defaultTheme?: Theme;
11
+ defaultTheme?: Partial<Theme>;
12
12
  /**
13
13
  * App content.
14
14
  */
@@ -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: Theme;
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;
@@ -8,7 +8,7 @@ interface AppProviderProps {
8
8
  /**
9
9
  * Theme settings.
10
10
  */
11
- defaultTheme?: Theme;
11
+ defaultTheme?: Partial<Theme>;
12
12
  /**
13
13
  * App content.
14
14
  */
@@ -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: Theme;
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.1.0",
3
+ "version": "0.2.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.19.0",
41
+ "@atlaskit/tokens": "^1.28.0",
42
42
  "@babel/runtime": "^7.0.0",
43
43
  "bind-event-listener": "^2.1.1"
44
44
  },
package/report.api.md CHANGED
@@ -30,7 +30,7 @@ export default AppProvider;
30
30
  interface AppProviderProps {
31
31
  children: React_2.ReactNode;
32
32
  defaultColorMode?: ColorMode;
33
- defaultTheme?: Theme;
33
+ defaultTheme?: Partial<Theme>;
34
34
  }
35
35
 
36
36
  // @public (undocumented)
@@ -40,7 +40,7 @@ type ColorMode = 'auto' | 'dark' | 'light';
40
40
  type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
41
41
 
42
42
  // @public (undocumented)
43
- type Theme = Omit<ThemeState, 'colorMode'>;
43
+ type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
44
44
 
45
45
  // @public
46
46
  export function useColorMode(): ReconciledColorMode;
@@ -15,7 +15,7 @@ export default AppProvider;
15
15
  interface AppProviderProps {
16
16
  children: React_2.ReactNode;
17
17
  defaultColorMode?: ColorMode;
18
- defaultTheme?: Theme;
18
+ defaultTheme?: Partial<Theme>;
19
19
  }
20
20
 
21
21
  // @public (undocumented)
@@ -25,7 +25,7 @@ type ColorMode = 'auto' | 'dark' | 'light';
25
25
  type ReconciledColorMode = Exclude<ColorMode, 'auto'>;
26
26
 
27
27
  // @public (undocumented)
28
- type Theme = Omit<ThemeState, 'colorMode'>;
28
+ type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
29
29
 
30
30
  // @public
31
31
  export function useColorMode(): ReconciledColorMode;