@atlaskit/primitives 0.14.3 → 0.15.1

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/constellation/responsive/examples.mdx +51 -0
  3. package/constellation/responsive/usage.mdx +1 -1
  4. package/dist/cjs/index.js +1 -1
  5. package/dist/cjs/{helpers/responsive → responsive}/build-media-query-css.js +41 -6
  6. package/dist/cjs/responsive/hide.js +35 -0
  7. package/dist/cjs/{helpers/responsive → responsive}/index.js +15 -1
  8. package/dist/cjs/responsive/show.js +38 -0
  9. package/dist/cjs/version.json +1 -1
  10. package/dist/cjs/xcss/style-maps.partial.js +2 -2
  11. package/dist/cjs/xcss/xcss.js +2 -2
  12. package/dist/es2019/index.js +1 -1
  13. package/dist/es2019/responsive/build-media-query-css.js +76 -0
  14. package/dist/es2019/responsive/hide.js +28 -0
  15. package/dist/es2019/{helpers/responsive → responsive}/index.js +3 -1
  16. package/dist/es2019/responsive/show.js +31 -0
  17. package/dist/es2019/version.json +1 -1
  18. package/dist/es2019/xcss/style-maps.partial.js +2 -2
  19. package/dist/es2019/xcss/xcss.js +1 -1
  20. package/dist/esm/index.js +1 -1
  21. package/dist/esm/{helpers/responsive → responsive}/build-media-query-css.js +39 -5
  22. package/dist/esm/responsive/hide.js +28 -0
  23. package/dist/esm/{helpers/responsive → responsive}/index.js +3 -1
  24. package/dist/esm/responsive/show.js +31 -0
  25. package/dist/esm/version.json +1 -1
  26. package/dist/esm/xcss/style-maps.partial.js +2 -2
  27. package/dist/esm/xcss/xcss.js +1 -1
  28. package/dist/types/index.d.ts +1 -1
  29. package/dist/types/responsive/build-media-query-css.d.ts +53 -0
  30. package/dist/types/responsive/hide.d.ts +39 -0
  31. package/dist/types/{helpers/responsive → responsive}/index.d.ts +2 -0
  32. package/dist/types/responsive/show.d.ts +39 -0
  33. package/dist/types/xcss/style-maps.partial.d.ts +2 -2
  34. package/dist/types/xcss/xcss.d.ts +1 -1
  35. package/dist/types-ts4.5/index.d.ts +1 -1
  36. package/dist/types-ts4.5/responsive/build-media-query-css.d.ts +53 -0
  37. package/dist/types-ts4.5/responsive/hide.d.ts +39 -0
  38. package/dist/types-ts4.5/{helpers/responsive → responsive}/index.d.ts +2 -0
  39. package/dist/types-ts4.5/responsive/show.d.ts +39 -0
  40. package/dist/types-ts4.5/xcss/style-maps.partial.d.ts +2 -2
  41. package/dist/types-ts4.5/xcss/xcss.d.ts +1 -1
  42. package/package.json +3 -3
  43. package/responsive/package.json +5 -5
  44. package/dist/es2019/helpers/responsive/build-media-query-css.js +0 -36
  45. package/dist/types/helpers/responsive/build-media-query-css.d.ts +0 -27
  46. package/dist/types-ts4.5/helpers/responsive/build-media-query-css.d.ts +0 -27
  47. /package/dist/cjs/{helpers/responsive → responsive}/constants.js +0 -0
  48. /package/dist/cjs/{helpers/responsive → responsive}/media-helper.js +0 -0
  49. /package/dist/cjs/{helpers/responsive → responsive}/types.js +0 -0
  50. /package/dist/cjs/{helpers/responsive → responsive}/use-media-query.js +0 -0
  51. /package/dist/es2019/{helpers/responsive → responsive}/constants.js +0 -0
  52. /package/dist/es2019/{helpers/responsive → responsive}/media-helper.js +0 -0
  53. /package/dist/es2019/{helpers/responsive → responsive}/types.js +0 -0
  54. /package/dist/es2019/{helpers/responsive → responsive}/use-media-query.js +0 -0
  55. /package/dist/esm/{helpers/responsive → responsive}/constants.js +0 -0
  56. /package/dist/esm/{helpers/responsive → responsive}/media-helper.js +0 -0
  57. /package/dist/esm/{helpers/responsive → responsive}/types.js +0 -0
  58. /package/dist/esm/{helpers/responsive → responsive}/use-media-query.js +0 -0
  59. /package/dist/types/{helpers/responsive → responsive}/constants.d.ts +0 -0
  60. /package/dist/types/{helpers/responsive → responsive}/media-helper.d.ts +0 -0
  61. /package/dist/types/{helpers/responsive → responsive}/types.d.ts +0 -0
  62. /package/dist/types/{helpers/responsive → responsive}/use-media-query.d.ts +0 -0
  63. /package/dist/types-ts4.5/{helpers/responsive → responsive}/constants.d.ts +0 -0
  64. /package/dist/types-ts4.5/{helpers/responsive → responsive}/media-helper.d.ts +0 -0
  65. /package/dist/types-ts4.5/{helpers/responsive → responsive}/types.d.ts +0 -0
  66. /package/dist/types-ts4.5/{helpers/responsive → responsive}/use-media-query.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/primitives
2
2
 
3
+ ## 0.15.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`7c1c449eb96`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7c1c449eb96) - Updated space token descriptions.
8
+
9
+ ## 0.15.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`8b04f3e78bd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8b04f3e78bd) - Adds basic `<Show>` and `<Hide>` responsive primitive components to make consistent, composable UIs without writing a dozen lines for just one `display: none` css rule.
14
+
15
+ Additionally:
16
+
17
+ - Adds some further examples, tests, and VRs.
18
+ - Tweaks some internals around building these reusable media query maps.
19
+
3
20
  ## 0.14.3
4
21
 
5
22
  ### Patch Changes
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: Responsive
3
+ description: Responsive helpers and primitives to build responsive UIs with
4
+ order: 1
5
+ ---
6
+
7
+ import CSSExample from '../../examples/constellation/responsive/css';
8
+ import XCSSExample from '../../examples/constellation/responsive/xcss';
9
+ import ShowExample from '../../examples/constellation/responsive/show';
10
+ import HideExample from '../../examples/constellation/responsive/hide';
11
+ import ShowHideExample from '../../examples/constellation/responsive/show-hide';
12
+
13
+ ## Responsive `css` or `xcss`
14
+
15
+ Utilize our media queries exposed in `css`, `styled`, or `xcss` as computed keys to build responsive UIs. Learn more about these media query exports in [usage](/components/primitives/responsive/usage).
16
+
17
+ ### Using with `xcss`
18
+
19
+ Please use `xcss` whenever possible to ensure consistency and safety with style overrides. Read more at [xcss](/components/primitives/xcss)
20
+
21
+ <Example Component={XCSSExample} packageName="@atlaskit/primitives/responsive" />
22
+
23
+ ### Using with `css`
24
+ <Example Component={CSSExample} packageName="@atlaskit/primitives/responsive" />
25
+
26
+
27
+ ## Responsive primitives
28
+
29
+ Consider these shortcuts to writing your own custom media queries. Composing with our primitives will be far quicker and consistent to implement, but may result in excess DOM nodes.
30
+
31
+ ### Show
32
+
33
+ This allows you to Show the children using CSS `display: …` either above or below a breakpoint. By default, unless the breakpoint is met, contents are hidden.
34
+
35
+ Note that this does not skip rendering of your children; the contents are rendered into the DOM at all times, so there is typically little performance savings—primarily that this is not painted.
36
+
37
+ <Example Component={ShowExample} packageName="@atlaskit/primitives/responsive" />
38
+
39
+ ### Hide
40
+
41
+ This allows you to Hide the children using CSS `display: none` either above or below a breakpoint. By default, unless the breakpoint is met, contents are hidden.
42
+
43
+ When hidden, this does not skip rendering of your children; the contents are rendered into the DOM at all times so there is typically little performance savings—primarily that this is not painted.
44
+
45
+ <Example Component={HideExample} packageName="@atlaskit/primitives/responsive" />
46
+
47
+ ### Mixing Show and Hide
48
+
49
+ Prefer using consistent `above` or `below` for readability and consistency.
50
+
51
+ <Example Component={ShowHideExample} packageName="@atlaskit/primitives/responsive" />
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Responsive
3
3
  description: Responsive helpers and primitives to build responsive UIs with
4
- order: 1
4
+ order: 2
5
5
  ---
6
6
 
7
7
  ## Media query helpers
package/dist/cjs/index.js CHANGED
@@ -44,4 +44,4 @@ var _box = _interopRequireDefault(require("./components/box"));
44
44
  var _inline = _interopRequireDefault(require("./components/inline"));
45
45
  var _xcss = require("./xcss/xcss");
46
46
  var _stack = _interopRequireDefault(require("./components/stack"));
47
- var _responsive = require("./helpers/responsive");
47
+ var _responsive = require("./responsive");
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.UNSAFE_buildAboveMediaQueryCSS = void 0;
7
+ exports.UNSAFE_buildBelowMediaQueryCSS = exports.UNSAFE_buildAboveMediaQueryCSS = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _react = require("@emotion/react");
10
10
  var _constants = require("./constants");
@@ -14,7 +14,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
14
14
  /**
15
15
  * Build a map of breakpoints to css with media queries and nested styles.
16
16
  *
17
- * @experimental Unsafe for usage as the API is not finalized.
17
+ * @internal Not intended to be used outside of DST at this stage.
18
+ * @experimental Not intended to be used outside of DST at this stage.
18
19
  *
19
20
  * @example
20
21
  * A map to build optional `display:none` for consumption on a div.
@@ -29,9 +30,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
29
30
  * This roughly builds a map that will look roughly like this (if done manually):
30
31
  * ```ts
31
32
  * {
32
- * xxs: css({ '@media (min-width: 0px)': { display: 'none' } }),
33
- * xs: css({ '@media (min-width: …px)': { display: 'none' } }),
34
- * sm: css({ '@media (min-width: …px)': { display: 'none' } }),
33
+ * xxs: css({ '@media all': { display: 'none' } }),
34
+ * xs: css({ '@media (min-width: 30rem)': { display: 'none' } }),
35
+ * sm: css({ '@media (min-width: 48rem)': { display: 'none' } }),
35
36
  * }
36
37
  * ```
37
38
  */
@@ -40,4 +41,38 @@ var UNSAFE_buildAboveMediaQueryCSS = function UNSAFE_buildAboveMediaQueryCSS(inp
40
41
  return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2.default)({}, breakpoint, (0, _react.css)((0, _defineProperty2.default)({}, _mediaHelper.media.above[breakpoint], typeof input === 'function' ? input(breakpoint) : input))));
41
42
  }, {});
42
43
  };
43
- exports.UNSAFE_buildAboveMediaQueryCSS = UNSAFE_buildAboveMediaQueryCSS;
44
+
45
+ /**
46
+ * Build a map of breakpoints to css with media queries and nested styles.
47
+ *
48
+ * @internal Not intended to be used outside of DST at this stage.
49
+ * @experimental Not intended to be used outside of DST at this stage.
50
+ *
51
+ * @example
52
+ * A map to build optional `display:none` for consumption on a div.
53
+ * ```ts
54
+ * const hideMediaQueries = buildBelowMediaQueryCSS({ display: 'none' });
55
+ *
56
+ * const Component = ({ hideAtBreakpoints: ('xs' | 'sm')[], children: ReactNode }) => {
57
+ * return <div css={hideAtBreakpoints.map(b => hideMediaQueries[b])}>{children}</div>;
58
+ * }
59
+ * ```
60
+ *
61
+ * This roughly builds a map that will look roughly like this (if done manually):
62
+ * ```ts
63
+ * {
64
+ * xs: css({ '@media not all and (min-width: 30rem)': { display: 'none' } }),
65
+ * sm: css({ '@media not all and (min-width: 48rem)': { display: 'none' } }),
66
+ * }
67
+ * ```
68
+ */
69
+ exports.UNSAFE_buildAboveMediaQueryCSS = UNSAFE_buildAboveMediaQueryCSS;
70
+ var UNSAFE_buildBelowMediaQueryCSS = function UNSAFE_buildBelowMediaQueryCSS(input) {
71
+ return _constants.UNSAFE_BREAKPOINTS_ORDERED_LIST.reduce(function (acc, breakpoint) {
72
+ if (breakpoint === 'xxs') {
73
+ return acc;
74
+ }
75
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2.default)({}, breakpoint, (0, _react.css)((0, _defineProperty2.default)({}, _mediaHelper.UNSAFE_media.below[breakpoint], typeof input === 'function' ? input(breakpoint) : input))));
76
+ }, {});
77
+ };
78
+ exports.UNSAFE_buildBelowMediaQueryCSS = UNSAFE_buildBelowMediaQueryCSS;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Hide = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _buildMediaQueryCss = require("./build-media-query-css");
9
+ /** @jsx jsx */
10
+
11
+ var hideAboveQueries = (0, _buildMediaQueryCss.UNSAFE_buildAboveMediaQueryCSS)({
12
+ display: 'none'
13
+ });
14
+ var hideBelowQueries = (0, _buildMediaQueryCss.UNSAFE_buildBelowMediaQueryCSS)({
15
+ display: 'none'
16
+ });
17
+ /**
18
+ * Hides the content at a given breakpoint. By default, content is shown. The primary use case is for visual presentation.
19
+ * Mix `<Hide above="md">` with `<Show above="md">` to achieve content that shifts at a breakpoint.
20
+ *
21
+ * Please note:
22
+ * - This only uses `display: none` hide, it does not skip rendering of children trees.
23
+ * - As this is rendered at all times, there is little performance savings here (just that this is not painted).
24
+ */
25
+ var Hide = function Hide(_ref) {
26
+ var above = _ref.above,
27
+ below = _ref.below,
28
+ children = _ref.children,
29
+ _ref$as = _ref.as,
30
+ AsElement = _ref$as === void 0 ? 'div' : _ref$as;
31
+ return (0, _react.jsx)(AsElement, {
32
+ css: [above && hideAboveQueries[above], below && hideBelowQueries[below]]
33
+ }, children);
34
+ };
35
+ exports.Hide = Hide;
@@ -3,6 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "Hide", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _hide.Hide;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Show", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _show.Show;
16
+ }
17
+ });
6
18
  Object.defineProperty(exports, "UNSAFE_BREAKPOINTS_CONFIG", {
7
19
  enumerable: true,
8
20
  get: function get() {
@@ -42,4 +54,6 @@ Object.defineProperty(exports, "media", {
42
54
  var _mediaHelper = require("./media-helper");
43
55
  var _buildMediaQueryCss = require("./build-media-query-css");
44
56
  var _constants = require("./constants");
45
- var _useMediaQuery = require("./use-media-query");
57
+ var _useMediaQuery = require("./use-media-query");
58
+ var _show = require("./show");
59
+ var _hide = require("./hide");
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Show = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _buildMediaQueryCss = require("./build-media-query-css");
9
+ /** @jsx jsx */
10
+
11
+ var showAboveQueries = (0, _buildMediaQueryCss.UNSAFE_buildAboveMediaQueryCSS)({
12
+ display: 'revert'
13
+ });
14
+ var showBelowQueries = (0, _buildMediaQueryCss.UNSAFE_buildBelowMediaQueryCSS)({
15
+ display: 'revert'
16
+ });
17
+ var defaultHiddenStyles = (0, _react.css)({
18
+ display: 'none'
19
+ });
20
+ /**
21
+ * Shows the content at a given breakpoint. By default, content is hidden. The primary use case is for visual presentation.
22
+ * Mix `<Show above="md">` with `<Hide above="md">` to achieve content that shifts at a breakpoint.
23
+ *
24
+ * Please note:
25
+ * - This only uses `display: none` and `display: revert` to show/hide, it does not skip rendering of children trees.
26
+ * - As this is rendered at all times, there is little performance savings here (just that this is not painted).
27
+ */
28
+ var Show = function Show(_ref) {
29
+ var above = _ref.above,
30
+ below = _ref.below,
31
+ children = _ref.children,
32
+ _ref$as = _ref.as,
33
+ AsElement = _ref$as === void 0 ? 'div' : _ref$as;
34
+ return (0, _react.jsx)(AsElement, {
35
+ css: [defaultHiddenStyles, above && showAboveQueries[above], below && showBelowQueries[below]]
36
+ }, children);
37
+ };
38
+ exports.Show = Show;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/primitives",
3
- "version": "0.14.3",
3
+ "version": "0.15.1",
4
4
  "sideEffects": false
5
5
  }
@@ -32,10 +32,10 @@ exports.dimensionMap = dimensionMap;
32
32
 
33
33
  /**
34
34
  * THIS SECTION WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
35
- * @codegen <<SignedSource::0233b43df51e5fcf058349b5bff46ee3>>
35
+ * @codegen <<SignedSource::429dca3ce1fa6d723cb98e2468802267>>
36
36
  * @codegenId spacing
37
37
  * @codegenCommand yarn workspace @atlaskit/primitives codegen-styles
38
- * @codegenDependency ../../../tokens/src/artifacts/tokens-raw/atlassian-spacing.tsx <<SignedSource::16655ab13ccb56521faa354636af2c8e>>
38
+ * @codegenDependency ../../../tokens/src/artifacts/tokens-raw/atlassian-spacing.tsx <<SignedSource::68f6bde7e6b186964ee53458284bbb90>>
39
39
  */
40
40
  var spaceMap = {
41
41
  'space.0': "var(--ds-space-0, 0px)",
@@ -11,7 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
12
  var _react = require("@emotion/react");
13
13
  var _warnOnce = _interopRequireDefault(require("@atlaskit/ds-lib/warn-once"));
14
- var _responsive = require("../helpers/responsive");
14
+ var _mediaHelper = require("../responsive/media-helper");
15
15
  var _styleMaps = require("./style-maps.partial");
16
16
  /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
17
17
 
@@ -82,7 +82,7 @@ var reMediaQuery = /^@media .*$/;
82
82
  /**
83
83
  * Reduce our media queries into a safe string for regex comparison.
84
84
  */
85
- var reValidMediaQuery = new RegExp("^(".concat(Object.values(_responsive.media.above).map(function (mediaQuery) {
85
+ var reValidMediaQuery = new RegExp("^(".concat(Object.values(_mediaHelper.media.above).map(function (mediaQuery) {
86
86
  return mediaQuery.replace(/[.()]/g, '\\$&');
87
87
  } // Escape the ".", "(", and ")" in the media query syntax.
88
88
  ).join('|'), ")$"));
@@ -2,4 +2,4 @@ export { default as Box } from './components/box';
2
2
  export { default as Inline } from './components/inline';
3
3
  export { xcss } from './xcss/xcss';
4
4
  export { default as Stack } from './components/stack';
5
- export { UNSAFE_media, UNSAFE_BREAKPOINTS_CONFIG } from './helpers/responsive';
5
+ export { UNSAFE_media, UNSAFE_BREAKPOINTS_CONFIG } from './responsive';
@@ -0,0 +1,76 @@
1
+ import { css } from '@emotion/react';
2
+ import { UNSAFE_BREAKPOINTS_ORDERED_LIST } from './constants';
3
+ import { media, UNSAFE_media } from './media-helper';
4
+ /**
5
+ * Build a map of breakpoints to css with media queries and nested styles.
6
+ *
7
+ * @internal Not intended to be used outside of DST at this stage.
8
+ * @experimental Not intended to be used outside of DST at this stage.
9
+ *
10
+ * @example
11
+ * A map to build optional `display:none` for consumption on a div.
12
+ * ```ts
13
+ * const hideMediaQueries = buildAboveMediaQueryCSS({ display: 'none' });
14
+ *
15
+ * const Component = ({ hideAtBreakpoints: ('xs' | 'sm')[], children: ReactNode }) => {
16
+ * return <div css={hideAtBreakpoints.map(b => hideMediaQueries[b])}>{children}</div>;
17
+ * }
18
+ * ```
19
+ *
20
+ * This roughly builds a map that will look roughly like this (if done manually):
21
+ * ```ts
22
+ * {
23
+ * xxs: css({ '@media all': { display: 'none' } }),
24
+ * xs: css({ '@media (min-width: 30rem)': { display: 'none' } }),
25
+ * sm: css({ '@media (min-width: 48rem)': { display: 'none' } }),
26
+ * }
27
+ * ```
28
+ */
29
+ export const UNSAFE_buildAboveMediaQueryCSS = input => {
30
+ return UNSAFE_BREAKPOINTS_ORDERED_LIST.reduce((acc, breakpoint) => ({
31
+ ...acc,
32
+ [breakpoint]: css({
33
+ // eslint-disable-next-line @repo/internal/styles/no-nested-styles
34
+ [media.above[breakpoint]]: typeof input === 'function' ? input(breakpoint) : input
35
+ })
36
+ }), {});
37
+ };
38
+
39
+ /**
40
+ * Build a map of breakpoints to css with media queries and nested styles.
41
+ *
42
+ * @internal Not intended to be used outside of DST at this stage.
43
+ * @experimental Not intended to be used outside of DST at this stage.
44
+ *
45
+ * @example
46
+ * A map to build optional `display:none` for consumption on a div.
47
+ * ```ts
48
+ * const hideMediaQueries = buildBelowMediaQueryCSS({ display: 'none' });
49
+ *
50
+ * const Component = ({ hideAtBreakpoints: ('xs' | 'sm')[], children: ReactNode }) => {
51
+ * return <div css={hideAtBreakpoints.map(b => hideMediaQueries[b])}>{children}</div>;
52
+ * }
53
+ * ```
54
+ *
55
+ * This roughly builds a map that will look roughly like this (if done manually):
56
+ * ```ts
57
+ * {
58
+ * xs: css({ '@media not all and (min-width: 30rem)': { display: 'none' } }),
59
+ * sm: css({ '@media not all and (min-width: 48rem)': { display: 'none' } }),
60
+ * }
61
+ * ```
62
+ */
63
+ export const UNSAFE_buildBelowMediaQueryCSS = input => {
64
+ return UNSAFE_BREAKPOINTS_ORDERED_LIST.reduce((acc, breakpoint) => {
65
+ if (breakpoint === 'xxs') {
66
+ return acc;
67
+ }
68
+ return {
69
+ ...acc,
70
+ [breakpoint]: css({
71
+ // eslint-disable-next-line @repo/internal/styles/no-nested-styles
72
+ [UNSAFE_media.below[breakpoint]]: typeof input === 'function' ? input(breakpoint) : input
73
+ })
74
+ };
75
+ }, {});
76
+ };
@@ -0,0 +1,28 @@
1
+ /** @jsx jsx */
2
+
3
+ import { jsx } from '@emotion/react';
4
+ import { UNSAFE_buildAboveMediaQueryCSS, UNSAFE_buildBelowMediaQueryCSS } from './build-media-query-css';
5
+ const hideAboveQueries = UNSAFE_buildAboveMediaQueryCSS({
6
+ display: 'none'
7
+ });
8
+ const hideBelowQueries = UNSAFE_buildBelowMediaQueryCSS({
9
+ display: 'none'
10
+ });
11
+ /**
12
+ * Hides the content at a given breakpoint. By default, content is shown. The primary use case is for visual presentation.
13
+ * Mix `<Hide above="md">` with `<Show above="md">` to achieve content that shifts at a breakpoint.
14
+ *
15
+ * Please note:
16
+ * - This only uses `display: none` hide, it does not skip rendering of children trees.
17
+ * - As this is rendered at all times, there is little performance savings here (just that this is not painted).
18
+ */
19
+ export const Hide = ({
20
+ above,
21
+ below,
22
+ children,
23
+ as: AsElement = 'div'
24
+ }) => {
25
+ return jsx(AsElement, {
26
+ css: [above && hideAboveQueries[above], below && hideBelowQueries[below]]
27
+ }, children);
28
+ };
@@ -1,4 +1,6 @@
1
1
  export { media, UNSAFE_media } from './media-helper';
2
2
  export { UNSAFE_buildAboveMediaQueryCSS } from './build-media-query-css';
3
3
  export { UNSAFE_BREAKPOINTS_ORDERED_LIST, UNSAFE_BREAKPOINTS_CONFIG } from './constants';
4
- export { UNSAFE_useMediaQuery } from './use-media-query';
4
+ export { UNSAFE_useMediaQuery } from './use-media-query';
5
+ export { Show } from './show';
6
+ export { Hide } from './hide';
@@ -0,0 +1,31 @@
1
+ /** @jsx jsx */
2
+
3
+ import { css, jsx } from '@emotion/react';
4
+ import { UNSAFE_buildAboveMediaQueryCSS, UNSAFE_buildBelowMediaQueryCSS } from './build-media-query-css';
5
+ const showAboveQueries = UNSAFE_buildAboveMediaQueryCSS({
6
+ display: 'revert'
7
+ });
8
+ const showBelowQueries = UNSAFE_buildBelowMediaQueryCSS({
9
+ display: 'revert'
10
+ });
11
+ const defaultHiddenStyles = css({
12
+ display: 'none'
13
+ });
14
+ /**
15
+ * Shows the content at a given breakpoint. By default, content is hidden. The primary use case is for visual presentation.
16
+ * Mix `<Show above="md">` with `<Hide above="md">` to achieve content that shifts at a breakpoint.
17
+ *
18
+ * Please note:
19
+ * - This only uses `display: none` and `display: revert` to show/hide, it does not skip rendering of children trees.
20
+ * - As this is rendered at all times, there is little performance savings here (just that this is not painted).
21
+ */
22
+ export const Show = ({
23
+ above,
24
+ below,
25
+ children,
26
+ as: AsElement = 'div'
27
+ }) => {
28
+ return jsx(AsElement, {
29
+ css: [defaultHiddenStyles, above && showAboveQueries[above], below && showBelowQueries[below]]
30
+ }, children);
31
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/primitives",
3
- "version": "0.14.3",
3
+ "version": "0.15.1",
4
4
  "sideEffects": false
5
5
  }
@@ -22,10 +22,10 @@ export const dimensionMap = {
22
22
  */
23
23
  /**
24
24
  * THIS SECTION WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
25
- * @codegen <<SignedSource::0233b43df51e5fcf058349b5bff46ee3>>
25
+ * @codegen <<SignedSource::429dca3ce1fa6d723cb98e2468802267>>
26
26
  * @codegenId spacing
27
27
  * @codegenCommand yarn workspace @atlaskit/primitives codegen-styles
28
- * @codegenDependency ../../../tokens/src/artifacts/tokens-raw/atlassian-spacing.tsx <<SignedSource::16655ab13ccb56521faa354636af2c8e>>
28
+ * @codegenDependency ../../../tokens/src/artifacts/tokens-raw/atlassian-spacing.tsx <<SignedSource::68f6bde7e6b186964ee53458284bbb90>>
29
29
  */
30
30
  export const spaceMap = {
31
31
  'space.0': "var(--ds-space-0, 0px)",
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
2
2
  import { css as cssEmotion } from '@emotion/react';
3
3
  import warnOnce from '@atlaskit/ds-lib/warn-once';
4
- import { media } from '../helpers/responsive';
4
+ import { media } from '../responsive/media-helper';
5
5
  import { backgroundColorMap, borderColorMap, borderRadiusMap, borderWidthMap, dimensionMap, layerMap, shadowMap, spaceMap, textColorMap } from './style-maps.partial';
6
6
  const tokensMap = {
7
7
  backgroundColor: backgroundColorMap,
package/dist/esm/index.js CHANGED
@@ -2,4 +2,4 @@ export { default as Box } from './components/box';
2
2
  export { default as Inline } from './components/inline';
3
3
  export { xcss } from './xcss/xcss';
4
4
  export { default as Stack } from './components/stack';
5
- export { UNSAFE_media, UNSAFE_BREAKPOINTS_CONFIG } from './helpers/responsive';
5
+ export { UNSAFE_media, UNSAFE_BREAKPOINTS_CONFIG } from './responsive';
@@ -3,11 +3,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
  import { css } from '@emotion/react';
5
5
  import { UNSAFE_BREAKPOINTS_ORDERED_LIST } from './constants';
6
- import { media } from './media-helper';
6
+ import { media, UNSAFE_media } from './media-helper';
7
7
  /**
8
8
  * Build a map of breakpoints to css with media queries and nested styles.
9
9
  *
10
- * @experimental Unsafe for usage as the API is not finalized.
10
+ * @internal Not intended to be used outside of DST at this stage.
11
+ * @experimental Not intended to be used outside of DST at this stage.
11
12
  *
12
13
  * @example
13
14
  * A map to build optional `display:none` for consumption on a div.
@@ -22,9 +23,9 @@ import { media } from './media-helper';
22
23
  * This roughly builds a map that will look roughly like this (if done manually):
23
24
  * ```ts
24
25
  * {
25
- * xxs: css({ '@media (min-width: 0px)': { display: 'none' } }),
26
- * xs: css({ '@media (min-width: …px)': { display: 'none' } }),
27
- * sm: css({ '@media (min-width: …px)': { display: 'none' } }),
26
+ * xxs: css({ '@media all': { display: 'none' } }),
27
+ * xs: css({ '@media (min-width: 30rem)': { display: 'none' } }),
28
+ * sm: css({ '@media (min-width: 48rem)': { display: 'none' } }),
28
29
  * }
29
30
  * ```
30
31
  */
@@ -32,4 +33,37 @@ export var UNSAFE_buildAboveMediaQueryCSS = function UNSAFE_buildAboveMediaQuery
32
33
  return UNSAFE_BREAKPOINTS_ORDERED_LIST.reduce(function (acc, breakpoint) {
33
34
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, breakpoint, css(_defineProperty({}, media.above[breakpoint], typeof input === 'function' ? input(breakpoint) : input))));
34
35
  }, {});
36
+ };
37
+
38
+ /**
39
+ * Build a map of breakpoints to css with media queries and nested styles.
40
+ *
41
+ * @internal Not intended to be used outside of DST at this stage.
42
+ * @experimental Not intended to be used outside of DST at this stage.
43
+ *
44
+ * @example
45
+ * A map to build optional `display:none` for consumption on a div.
46
+ * ```ts
47
+ * const hideMediaQueries = buildBelowMediaQueryCSS({ display: 'none' });
48
+ *
49
+ * const Component = ({ hideAtBreakpoints: ('xs' | 'sm')[], children: ReactNode }) => {
50
+ * return <div css={hideAtBreakpoints.map(b => hideMediaQueries[b])}>{children}</div>;
51
+ * }
52
+ * ```
53
+ *
54
+ * This roughly builds a map that will look roughly like this (if done manually):
55
+ * ```ts
56
+ * {
57
+ * xs: css({ '@media not all and (min-width: 30rem)': { display: 'none' } }),
58
+ * sm: css({ '@media not all and (min-width: 48rem)': { display: 'none' } }),
59
+ * }
60
+ * ```
61
+ */
62
+ export var UNSAFE_buildBelowMediaQueryCSS = function UNSAFE_buildBelowMediaQueryCSS(input) {
63
+ return UNSAFE_BREAKPOINTS_ORDERED_LIST.reduce(function (acc, breakpoint) {
64
+ if (breakpoint === 'xxs') {
65
+ return acc;
66
+ }
67
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, breakpoint, css(_defineProperty({}, UNSAFE_media.below[breakpoint], typeof input === 'function' ? input(breakpoint) : input))));
68
+ }, {});
35
69
  };
@@ -0,0 +1,28 @@
1
+ /** @jsx jsx */
2
+
3
+ import { jsx } from '@emotion/react';
4
+ import { UNSAFE_buildAboveMediaQueryCSS, UNSAFE_buildBelowMediaQueryCSS } from './build-media-query-css';
5
+ var hideAboveQueries = UNSAFE_buildAboveMediaQueryCSS({
6
+ display: 'none'
7
+ });
8
+ var hideBelowQueries = UNSAFE_buildBelowMediaQueryCSS({
9
+ display: 'none'
10
+ });
11
+ /**
12
+ * Hides the content at a given breakpoint. By default, content is shown. The primary use case is for visual presentation.
13
+ * Mix `<Hide above="md">` with `<Show above="md">` to achieve content that shifts at a breakpoint.
14
+ *
15
+ * Please note:
16
+ * - This only uses `display: none` hide, it does not skip rendering of children trees.
17
+ * - As this is rendered at all times, there is little performance savings here (just that this is not painted).
18
+ */
19
+ export var Hide = function Hide(_ref) {
20
+ var above = _ref.above,
21
+ below = _ref.below,
22
+ children = _ref.children,
23
+ _ref$as = _ref.as,
24
+ AsElement = _ref$as === void 0 ? 'div' : _ref$as;
25
+ return jsx(AsElement, {
26
+ css: [above && hideAboveQueries[above], below && hideBelowQueries[below]]
27
+ }, children);
28
+ };
@@ -1,4 +1,6 @@
1
1
  export { media, UNSAFE_media } from './media-helper';
2
2
  export { UNSAFE_buildAboveMediaQueryCSS } from './build-media-query-css';
3
3
  export { UNSAFE_BREAKPOINTS_ORDERED_LIST, UNSAFE_BREAKPOINTS_CONFIG } from './constants';
4
- export { UNSAFE_useMediaQuery } from './use-media-query';
4
+ export { UNSAFE_useMediaQuery } from './use-media-query';
5
+ export { Show } from './show';
6
+ export { Hide } from './hide';
@@ -0,0 +1,31 @@
1
+ /** @jsx jsx */
2
+
3
+ import { css, jsx } from '@emotion/react';
4
+ import { UNSAFE_buildAboveMediaQueryCSS, UNSAFE_buildBelowMediaQueryCSS } from './build-media-query-css';
5
+ var showAboveQueries = UNSAFE_buildAboveMediaQueryCSS({
6
+ display: 'revert'
7
+ });
8
+ var showBelowQueries = UNSAFE_buildBelowMediaQueryCSS({
9
+ display: 'revert'
10
+ });
11
+ var defaultHiddenStyles = css({
12
+ display: 'none'
13
+ });
14
+ /**
15
+ * Shows the content at a given breakpoint. By default, content is hidden. The primary use case is for visual presentation.
16
+ * Mix `<Show above="md">` with `<Hide above="md">` to achieve content that shifts at a breakpoint.
17
+ *
18
+ * Please note:
19
+ * - This only uses `display: none` and `display: revert` to show/hide, it does not skip rendering of children trees.
20
+ * - As this is rendered at all times, there is little performance savings here (just that this is not painted).
21
+ */
22
+ export var Show = function Show(_ref) {
23
+ var above = _ref.above,
24
+ below = _ref.below,
25
+ children = _ref.children,
26
+ _ref$as = _ref.as,
27
+ AsElement = _ref$as === void 0 ? 'div' : _ref$as;
28
+ return jsx(AsElement, {
29
+ css: [defaultHiddenStyles, above && showAboveQueries[above], below && showBelowQueries[below]]
30
+ }, children);
31
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/primitives",
3
- "version": "0.14.3",
3
+ "version": "0.15.1",
4
4
  "sideEffects": false
5
5
  }