@atlaskit/primitives 0.4.1 → 0.4.2

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/primitives
2
2
 
3
+ ## 0.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`fa26963628c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fa26963628c) - Removes `customStyles` in favour of `xcss`.
8
+
3
9
  ## 0.4.1
4
10
 
5
11
  ### Patch Changes
@@ -1,19 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = require("react");
11
+ var _react2 = require("@emotion/react");
12
+ var _xcss = require("../internal/xcss");
12
13
  var _baseBox = require("./internal/base-box.partial");
13
- var _excluded = ["as", "children", "color", "backgroundColor", "shadow", "borderStyle", "borderWidth", "borderRadius", "borderColor", "layer", "flex", "flexGrow", "flexShrink", "alignSelf", "overflow", "overflowInline", "overflowBlock", "padding", "paddingBlock", "paddingBlockStart", "paddingBlockEnd", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "height", "width", "display", "position", "customStyles", "testId"],
14
- _excluded2 = ["style", "className"];
15
- 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); }
16
- 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
+ var _excluded = ["as", "children", "color", "backgroundColor", "shadow", "borderStyle", "borderWidth", "borderRadius", "borderColor", "layer", "flex", "flexGrow", "flexShrink", "alignSelf", "overflow", "overflowInline", "overflowBlock", "padding", "paddingBlock", "paddingBlockStart", "paddingBlockEnd", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "height", "width", "display", "position", "style", "testId", "xcss"],
15
+ _excluded2 = ["className"];
17
16
  /**
18
17
  * __Box__
19
18
  *
@@ -55,13 +54,14 @@ var Box = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
55
54
  display = _ref$display === void 0 ? 'block' : _ref$display,
56
55
  _ref$position = _ref.position,
57
56
  position = _ref$position === void 0 ? 'static' : _ref$position,
58
- customStyles = _ref.customStyles,
57
+ style = _ref.style,
59
58
  testId = _ref.testId,
59
+ xcss = _ref.xcss,
60
60
  htmlAttributes = (0, _objectWithoutProperties2.default)(_ref, _excluded);
61
- var style = htmlAttributes.style,
62
- className = htmlAttributes.className,
61
+ var spreadClass = htmlAttributes.className,
63
62
  safeHtmlAttributes = (0, _objectWithoutProperties2.default)(htmlAttributes, _excluded2);
64
- return /*#__PURE__*/_react.default.createElement(_baseBox.BaseBox, (0, _extends2.default)({
63
+ var className = xcss && (0, _xcss.parseXcss)(xcss);
64
+ return (0, _react2.jsx)(_baseBox.BaseBox, (0, _extends2.default)({
65
65
  as: as,
66
66
  color: color,
67
67
  backgroundColor: backgroundColor,
@@ -89,10 +89,14 @@ var Box = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
89
89
  width: width,
90
90
  display: display,
91
91
  position: position,
92
- UNSAFE_style: customStyles,
92
+ style: style,
93
93
  testId: testId,
94
94
  ref: ref
95
+ // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
96
+ ,
97
+ css: className
95
98
  }, safeHtmlAttributes), children);
96
99
  });
100
+ Box.displayName = 'Box';
97
101
  var _default = Box;
98
102
  exports.default = _default;
@@ -15,7 +15,7 @@ var _constants = require("../../constants");
15
15
  var _responsive = require("../../helpers/responsive");
16
16
  var _types = require("./types");
17
17
  var _utils = require("./utils");
18
- var _excluded = ["as", "className", "children", "color", "backgroundColor", "shadow", "borderStyle", "borderWidth", "borderRadius", "borderColor", "layer", "flex", "flexGrow", "flexShrink", "alignSelf", "overflow", "overflowInline", "overflowBlock", "padding", "paddingBlock", "paddingBlockStart", "paddingBlockEnd", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "height", "width", "display", "position", "UNSAFE_style", "testId"];
18
+ var _excluded = ["as", "className", "children", "color", "backgroundColor", "shadow", "borderStyle", "borderWidth", "borderRadius", "borderColor", "layer", "flex", "flexGrow", "flexShrink", "alignSelf", "overflow", "overflowInline", "overflowBlock", "padding", "paddingBlock", "paddingBlockStart", "paddingBlockEnd", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "height", "width", "display", "position", "style", "testId"];
19
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
20
  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) { (0, _defineProperty2.default)(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; }
21
21
  var responsiveRules = _types.BOX_RESPONSIVE_PROPS.reduce(function (mapping, cssProperty) {
@@ -87,11 +87,11 @@ var BaseBox = /*#__PURE__*/(0, _react.forwardRef)(function (_ref3, ref) {
87
87
  display = _ref3$display === void 0 ? displayMap.block : _ref3$display,
88
88
  _ref3$position = _ref3.position,
89
89
  position = _ref3$position === void 0 ? 'static' : _ref3$position,
90
- UNSAFE_style = _ref3.UNSAFE_style,
90
+ style = _ref3.style,
91
91
  testId = _ref3.testId,
92
92
  htmlAttributes = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
93
93
  var Component = as || 'div';
94
- var inlineStyles = Object.assign({}, UNSAFE_style, getResponsiveVars('borderWidth', borderWidth, borderWidthMap), getResponsiveVars('display', display, displayMap), getResponsiveVars('padding', padding, paddingMap), getResponsiveVars('paddingBlock', paddingBlock, paddingMap), getResponsiveVars('paddingBlockStart', paddingBlockStart, paddingMap), getResponsiveVars('paddingBlockEnd', paddingBlockEnd, paddingMap), getResponsiveVars('paddingInline', paddingInline, paddingMap), getResponsiveVars('paddingInlineStart', paddingInlineStart, paddingMap), getResponsiveVars('paddingInlineEnd', paddingInlineEnd, paddingMap));
94
+ var inlineStyles = Object.assign({}, style, getResponsiveVars('borderWidth', borderWidth, borderWidthMap), getResponsiveVars('display', display, displayMap), getResponsiveVars('padding', padding, paddingMap), getResponsiveVars('paddingBlock', paddingBlock, paddingMap), getResponsiveVars('paddingBlockStart', paddingBlockStart, paddingMap), getResponsiveVars('paddingBlockEnd', paddingBlockEnd, paddingMap), getResponsiveVars('paddingInline', paddingInline, paddingMap), getResponsiveVars('paddingInlineStart', paddingInlineStart, paddingMap), getResponsiveVars('paddingInlineEnd', paddingInlineEnd, paddingMap));
95
95
  var node = (0, _react2.jsx)(Component, (0, _extends2.default)({
96
96
  style: inlineStyles,
97
97
  ref: ref
package/dist/cjs/index.js CHANGED
@@ -22,6 +22,13 @@ Object.defineProperty(exports, "Stack", {
22
22
  return _stack.default;
23
23
  }
24
24
  });
25
+ Object.defineProperty(exports, "xcss", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _xcss.xcss;
29
+ }
30
+ });
25
31
  var _box = _interopRequireDefault(require("./components/box"));
26
32
  var _inline = _interopRequireDefault(require("./components/inline.partial"));
33
+ var _xcss = require("./internal/xcss");
27
34
  var _stack = _interopRequireDefault(require("./components/stack.partial"));
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.textColorMap = exports.paddingMap = exports.dimensionMap = exports.borderWidthMap = exports.borderRadiusMap = exports.borderColorMap = exports.backgroundColorMap = void 0;
7
+ /* eslint-disable @atlaskit/design-system/no-unsafe-design-token-usage */
8
+
9
+ // TODO: All of these maps need to be codegen'd
10
+ var backgroundColorMap = {
11
+ disabled: "var(--ds-background-disabled, #091e4289)",
12
+ input: "var(--ds-background-input, #FAFBFC)",
13
+ 'inverse.subtle': "var(--ds-background-inverse-subtle, #00000029)",
14
+ neutral: "var(--ds-background-neutral, #DFE1E6)",
15
+ 'neutral.subtle': "var(--ds-background-neutral-subtle, transparent)",
16
+ 'neutral.bold': "var(--ds-background-neutral-bold, #42526E)",
17
+ selected: "var(--ds-background-selected, #DEEBFF)",
18
+ 'selected.bold': "var(--ds-background-selected-bold, #0052CC)",
19
+ 'brand.bold': "var(--ds-background-brand-bold, #0052CC)",
20
+ danger: "var(--ds-background-danger, #FFEBE6)",
21
+ 'danger.bold': "var(--ds-background-danger-bold, #DE350B)",
22
+ warning: "var(--ds-background-warning, #FFFAE6)",
23
+ 'warning.bold': "var(--ds-background-warning-bold, #FFAB00)",
24
+ success: "var(--ds-background-success, #E3FCEF)",
25
+ 'success.bold': "var(--ds-background-success-bold, #00875A)",
26
+ discovery: "var(--ds-background-discovery, #EAE6FF)",
27
+ 'discovery.bold': "var(--ds-background-discovery-bold, #5243AA)",
28
+ information: "var(--ds-background-information, #DEEBFF)",
29
+ 'information.bold': "var(--ds-background-information-bold, #0052CC)",
30
+ 'color.blanket': "var(--ds-blanket, #091e4289)",
31
+ 'color.blanket.selected': "var(--ds-blanket-selected, #388BFF14)",
32
+ 'color.blanket.danger': "var(--ds-blanket-danger, #EF5C4814)",
33
+ 'elevation.surface': "var(--ds-surface, #FFFFFF)",
34
+ 'elevation.surface.overlay': "var(--ds-surface-overlay, #FFFFFF)",
35
+ 'elevation.surface.raised': "var(--ds-surface-raised, #FFFFFF)",
36
+ 'elevation.surface.sunken': "var(--ds-surface-sunken, #F4F5F7)"
37
+ };
38
+ exports.backgroundColorMap = backgroundColorMap;
39
+ var borderColorMap = {
40
+ 'color.border': "var(--ds-border, #091e4221)",
41
+ disabled: "var(--ds-border-disabled, #FAFBFC)",
42
+ focused: "var(--ds-border-focused, #4C9AFF)",
43
+ input: "var(--ds-border-input, #FAFBFC)",
44
+ inverse: "var(--ds-border-inverse, #FFFFFF)",
45
+ selected: "var(--ds-border-selected, #0052CC)",
46
+ brand: "var(--ds-border-brand, #0052CC)",
47
+ danger: "var(--ds-border-danger, #FF5630)",
48
+ warning: "var(--ds-border-warning, #FFC400)",
49
+ success: "var(--ds-border-success, #00875A)",
50
+ discovery: "var(--ds-border-discovery, #998DD9)",
51
+ information: "var(--ds-border-information, #0065FF)",
52
+ bold: "var(--ds-border-bold, #344563)"
53
+ };
54
+ exports.borderColorMap = borderColorMap;
55
+ var borderWidthMap = {
56
+ 'size.0': "var(--ds-width-0, 0)",
57
+ 'size.050': "var(--ds-width-050, 1px)",
58
+ 'size.100': "var(--ds-width-100, 2px)"
59
+ };
60
+ exports.borderWidthMap = borderWidthMap;
61
+ var borderRadiusMap = {
62
+ 'radius.400': "var(--ds-radius-400, 16px)",
63
+ 'radius.300': "var(--ds-radius-300, 12px)",
64
+ 'radius.100': "var(--ds-radius-100, 4px)",
65
+ 'radius.050': "var(--ds-radius-050, 2px)",
66
+ 'radius.200': "var(--ds-radius-200, 8px)"
67
+ };
68
+ exports.borderRadiusMap = borderRadiusMap;
69
+ var paddingMap = {
70
+ 'space.0': "var(--ds-space-0, 0px)",
71
+ 'space.025': "var(--ds-space-025, 2px)",
72
+ 'space.050': "var(--ds-space-050, 4px)",
73
+ 'space.075': "var(--ds-space-075, 6px)",
74
+ 'space.100': "var(--ds-space-100, 8px)",
75
+ 'space.150': "var(--ds-space-150, 12px)",
76
+ 'space.200': "var(--ds-space-200, 16px)",
77
+ 'space.250': "var(--ds-space-250, 20px)",
78
+ 'space.300': "var(--ds-space-300, 24px)",
79
+ 'space.400': "var(--ds-space-400, 32px)",
80
+ 'space.500': "var(--ds-space-500, 40px)",
81
+ 'space.600': "var(--ds-space-600, 48px)",
82
+ 'space.800': "var(--ds-space-800, 64px)",
83
+ 'space.1000': "var(--ds-space-1000, 80px)"
84
+ };
85
+ exports.paddingMap = paddingMap;
86
+ var textColorMap = {
87
+ 'color.text': "var(--ds-text, #172B4D)",
88
+ 'accent.red': "var(--ds-text-accent-red, #DE350B)",
89
+ 'accent.red.bolder': "var(--ds-text-accent-red-bolder, #BF2600)",
90
+ 'accent.orange': "var(--ds-text-accent-orange, #F18D13)",
91
+ 'accent.orange.bolder': "var(--ds-text-accent-orange-bolder, #B65C02)",
92
+ 'accent.yellow': "var(--ds-text-accent-yellow, #FF991F)",
93
+ 'accent.yellow.bolder': "var(--ds-text-accent-yellow-bolder, #FF8B00)",
94
+ 'accent.green': "var(--ds-text-accent-green, #00875A)",
95
+ 'accent.green.bolder': "var(--ds-text-accent-green-bolder, #006644)",
96
+ 'accent.teal': "var(--ds-text-accent-teal, #00A3BF)",
97
+ 'accent.teal.bolder': "var(--ds-text-accent-teal-bolder, #008DA6)",
98
+ 'accent.blue': "var(--ds-text-accent-blue, #0052CC)",
99
+ 'accent.blue.bolder': "var(--ds-text-accent-blue-bolder, #0747A6)",
100
+ 'accent.purple': "var(--ds-text-accent-purple, #5243AA)",
101
+ 'accent.purple.bolder': "var(--ds-text-accent-purple-bolder, #403294)",
102
+ 'accent.magenta': "var(--ds-text-accent-magenta, #E774BB)",
103
+ 'accent.magenta.bolder': "var(--ds-text-accent-magenta-bolder, #DA62AC)",
104
+ 'accent.gray': "var(--ds-text-accent-gray, #505F79)",
105
+ 'accent.gray.bolder': "var(--ds-text-accent-gray-bolder, #172B4D)",
106
+ disabled: "var(--ds-text-disabled, #A5ADBA)",
107
+ inverse: "var(--ds-text-inverse, #FFFFFF)",
108
+ selected: "var(--ds-text-selected, #0052CC)",
109
+ brand: "var(--ds-text-brand, #0065FF)",
110
+ danger: "var(--ds-text-danger, #DE350B)",
111
+ warning: "var(--ds-text-warning, #974F0C)",
112
+ 'warning.inverse': "var(--ds-text-warning-inverse, #172B4D)",
113
+ success: "var(--ds-text-success, #006644)",
114
+ discovery: "var(--ds-text-discovery, #403294)",
115
+ information: "var(--ds-text-information, #0052CC)",
116
+ subtlest: "var(--ds-text-subtlest, #7A869A)",
117
+ subtle: "var(--ds-text-subtle, #42526E)"
118
+ };
119
+ exports.textColorMap = textColorMap;
120
+ var dimensionMap = {
121
+ '100%': '100%',
122
+ 'size.100': '16px',
123
+ 'size.200': '24px',
124
+ 'size.300': '32px',
125
+ 'size.400': '40px',
126
+ 'size.500': '48px',
127
+ 'size.600': '96px',
128
+ 'size.1000': '192px'
129
+ };
130
+ exports.dimensionMap = dimensionMap;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.xcss = exports.transformStyles = exports.parseXcss = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
+ var _react = require("@emotion/react");
11
+ var _styleMaps = require("./style-maps");
12
+ var tokensMap = {
13
+ backgroundColor: _styleMaps.backgroundColorMap,
14
+ borderColor: _styleMaps.borderColorMap,
15
+ borderRadius: _styleMaps.borderRadiusMap,
16
+ borderWidth: _styleMaps.borderWidthMap,
17
+ color: _styleMaps.textColorMap,
18
+ height: _styleMaps.dimensionMap,
19
+ maxHeight: _styleMaps.dimensionMap,
20
+ maxWidth: _styleMaps.dimensionMap,
21
+ minHeight: _styleMaps.dimensionMap,
22
+ minWidth: _styleMaps.dimensionMap,
23
+ padding: _styleMaps.paddingMap,
24
+ paddingBlock: _styleMaps.paddingMap,
25
+ paddingBlockEnd: _styleMaps.paddingMap,
26
+ paddingBlockStart: _styleMaps.paddingMap,
27
+ paddingInline: _styleMaps.paddingMap,
28
+ paddingInlineEnd: _styleMaps.paddingMap,
29
+ paddingInlineStart: _styleMaps.paddingMap,
30
+ width: _styleMaps.dimensionMap
31
+ };
32
+ var uniqueSymbol = Symbol('Internal symbol to verify xcss function is called safely');
33
+
34
+ /**
35
+ * Only exposed for testing.
36
+ * @internal
37
+ */
38
+ var transformStyles = function transformStyles(styleObj) {
39
+ if (!styleObj || (0, _typeof2.default)(styleObj) !== 'object') {
40
+ return styleObj;
41
+ }
42
+
43
+ // If styles are defined as an CSSObject[], recursively call on each element until we reach CSSObject
44
+ if (Array.isArray(styleObj)) {
45
+ return styleObj.map(transformStyles);
46
+ }
47
+
48
+ // Modifies styleObj in place. Be careful.
49
+ Object.entries(styleObj).forEach(function (_ref) {
50
+ var _process, _process$env;
51
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
52
+ key = _ref2[0],
53
+ value = _ref2[1];
54
+ if (((_process = process) === null || _process === void 0 ? void 0 : (_process$env = _process.env) === null || _process$env === void 0 ? void 0 : _process$env.NODE_ENV) === 'development') {
55
+ // We don't support `.class`, `[data-testid]`, `> *`, `#some-id`
56
+ if (/(\.|\s|&+|\*\>|#|\[.*\])/.test(key)) {
57
+ throw new Error("Styles not supported for key '".concat(key, "'."));
58
+ }
59
+ }
60
+
61
+ // If key is a pseudo class or a pseudo element, then value should be an object.
62
+ // So, call transformStyles on the value
63
+ if (/^::?.*$/.test(key)) {
64
+ styleObj[key] = transformStyles(value);
65
+ return;
66
+ }
67
+
68
+ // TODO: Deal with media queries
69
+
70
+ // We have now dealt with all the special cases, so,
71
+ // check whether what remains is a style property
72
+ // that can be transformed.
73
+ if (!(key in tokensMap)) {
74
+ return;
75
+ }
76
+ var tokenValue = tokensMap[key][value];
77
+ if (!tokenValue) {
78
+ throw new Error('Invalid Token');
79
+ }
80
+ styleObj[key] = tokenValue;
81
+ });
82
+ return styleObj;
83
+ };
84
+ exports.transformStyles = transformStyles;
85
+ var xcss = function xcss(style) {
86
+ var transformedStyles = transformStyles(style);
87
+ return {
88
+ symbol: uniqueSymbol,
89
+ styles: (0, _react.css)(transformedStyles)
90
+ };
91
+ };
92
+
93
+ /**
94
+ * @internal used in primitives
95
+ * @returns
96
+ */
97
+ exports.xcss = xcss;
98
+ var parseXcss = function parseXcss(args) {
99
+ if (Array.isArray(args)) {
100
+ // @ts-expect-error FIXME
101
+ return args.map(parseXcss);
102
+ }
103
+ var symbol = args.symbol,
104
+ styles = args.styles;
105
+ if ((typeof process === "undefined" ? "undefined" : (0, _typeof2.default)(process)) && process.env.NODE_ENV === 'development' && symbol !== uniqueSymbol) {
106
+ throw new Error('Styles generated from unsafe source, use the `xcss` export from `@atlaskit/primitives`.');
107
+ }
108
+ return styles;
109
+ };
110
+ exports.parseXcss = parseXcss;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/primitives",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React, { forwardRef } from 'react';
2
+ /** @jsx jsx */
3
+ import { forwardRef } from 'react';
4
+ import { jsx } from '@emotion/react';
5
+ import { parseXcss } from '../internal/xcss';
3
6
  import { BaseBox } from './internal/base-box.partial';
4
7
  /**
5
8
  * __Box__
@@ -40,16 +43,17 @@ const Box = /*#__PURE__*/forwardRef(({
40
43
  width,
41
44
  display = 'block',
42
45
  position = 'static',
43
- customStyles,
46
+ style,
44
47
  testId,
48
+ xcss,
45
49
  ...htmlAttributes
46
50
  }, ref) => {
47
51
  const {
48
- style,
49
- className,
52
+ className: spreadClass,
50
53
  ...safeHtmlAttributes
51
54
  } = htmlAttributes;
52
- return /*#__PURE__*/React.createElement(BaseBox, _extends({
55
+ const className = xcss && parseXcss(xcss);
56
+ return jsx(BaseBox, _extends({
53
57
  as: as,
54
58
  color: color,
55
59
  backgroundColor: backgroundColor,
@@ -77,9 +81,13 @@ const Box = /*#__PURE__*/forwardRef(({
77
81
  width: width,
78
82
  display: display,
79
83
  position: position,
80
- UNSAFE_style: customStyles,
84
+ style: style,
81
85
  testId: testId,
82
86
  ref: ref
87
+ // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
88
+ ,
89
+ css: className
83
90
  }, safeHtmlAttributes), children);
84
91
  });
92
+ Box.displayName = 'Box';
85
93
  export default Box;
@@ -80,12 +80,12 @@ export const BaseBox = /*#__PURE__*/forwardRef(({
80
80
  width,
81
81
  display = displayMap.block,
82
82
  position = 'static',
83
- UNSAFE_style,
83
+ style,
84
84
  testId,
85
85
  ...htmlAttributes
86
86
  }, ref) => {
87
87
  const Component = as || 'div';
88
- const inlineStyles = Object.assign({}, UNSAFE_style, getResponsiveVars('borderWidth', borderWidth, borderWidthMap), getResponsiveVars('display', display, displayMap), getResponsiveVars('padding', padding, paddingMap), getResponsiveVars('paddingBlock', paddingBlock, paddingMap), getResponsiveVars('paddingBlockStart', paddingBlockStart, paddingMap), getResponsiveVars('paddingBlockEnd', paddingBlockEnd, paddingMap), getResponsiveVars('paddingInline', paddingInline, paddingMap), getResponsiveVars('paddingInlineStart', paddingInlineStart, paddingMap), getResponsiveVars('paddingInlineEnd', paddingInlineEnd, paddingMap));
88
+ const inlineStyles = Object.assign({}, style, getResponsiveVars('borderWidth', borderWidth, borderWidthMap), getResponsiveVars('display', display, displayMap), getResponsiveVars('padding', padding, paddingMap), getResponsiveVars('paddingBlock', paddingBlock, paddingMap), getResponsiveVars('paddingBlockStart', paddingBlockStart, paddingMap), getResponsiveVars('paddingBlockEnd', paddingBlockEnd, paddingMap), getResponsiveVars('paddingInline', paddingInline, paddingMap), getResponsiveVars('paddingInlineStart', paddingInlineStart, paddingMap), getResponsiveVars('paddingInlineEnd', paddingInlineEnd, paddingMap));
89
89
  const node = jsx(Component, _extends({
90
90
  style: inlineStyles,
91
91
  ref: ref
@@ -1,3 +1,4 @@
1
1
  export { default as Box } from './components/box';
2
2
  export { default as Inline } from './components/inline.partial';
3
+ export { xcss } from './internal/xcss';
3
4
  export { default as Stack } from './components/stack.partial';
@@ -0,0 +1,117 @@
1
+ /* eslint-disable @atlaskit/design-system/no-unsafe-design-token-usage */
2
+
3
+ // TODO: All of these maps need to be codegen'd
4
+ export const backgroundColorMap = {
5
+ disabled: "var(--ds-background-disabled, #091e4289)",
6
+ input: "var(--ds-background-input, #FAFBFC)",
7
+ 'inverse.subtle': "var(--ds-background-inverse-subtle, #00000029)",
8
+ neutral: "var(--ds-background-neutral, #DFE1E6)",
9
+ 'neutral.subtle': "var(--ds-background-neutral-subtle, transparent)",
10
+ 'neutral.bold': "var(--ds-background-neutral-bold, #42526E)",
11
+ selected: "var(--ds-background-selected, #DEEBFF)",
12
+ 'selected.bold': "var(--ds-background-selected-bold, #0052CC)",
13
+ 'brand.bold': "var(--ds-background-brand-bold, #0052CC)",
14
+ danger: "var(--ds-background-danger, #FFEBE6)",
15
+ 'danger.bold': "var(--ds-background-danger-bold, #DE350B)",
16
+ warning: "var(--ds-background-warning, #FFFAE6)",
17
+ 'warning.bold': "var(--ds-background-warning-bold, #FFAB00)",
18
+ success: "var(--ds-background-success, #E3FCEF)",
19
+ 'success.bold': "var(--ds-background-success-bold, #00875A)",
20
+ discovery: "var(--ds-background-discovery, #EAE6FF)",
21
+ 'discovery.bold': "var(--ds-background-discovery-bold, #5243AA)",
22
+ information: "var(--ds-background-information, #DEEBFF)",
23
+ 'information.bold': "var(--ds-background-information-bold, #0052CC)",
24
+ 'color.blanket': "var(--ds-blanket, #091e4289)",
25
+ 'color.blanket.selected': "var(--ds-blanket-selected, #388BFF14)",
26
+ 'color.blanket.danger': "var(--ds-blanket-danger, #EF5C4814)",
27
+ 'elevation.surface': "var(--ds-surface, #FFFFFF)",
28
+ 'elevation.surface.overlay': "var(--ds-surface-overlay, #FFFFFF)",
29
+ 'elevation.surface.raised': "var(--ds-surface-raised, #FFFFFF)",
30
+ 'elevation.surface.sunken': "var(--ds-surface-sunken, #F4F5F7)"
31
+ };
32
+ export const borderColorMap = {
33
+ 'color.border': "var(--ds-border, #091e4221)",
34
+ disabled: "var(--ds-border-disabled, #FAFBFC)",
35
+ focused: "var(--ds-border-focused, #4C9AFF)",
36
+ input: "var(--ds-border-input, #FAFBFC)",
37
+ inverse: "var(--ds-border-inverse, #FFFFFF)",
38
+ selected: "var(--ds-border-selected, #0052CC)",
39
+ brand: "var(--ds-border-brand, #0052CC)",
40
+ danger: "var(--ds-border-danger, #FF5630)",
41
+ warning: "var(--ds-border-warning, #FFC400)",
42
+ success: "var(--ds-border-success, #00875A)",
43
+ discovery: "var(--ds-border-discovery, #998DD9)",
44
+ information: "var(--ds-border-information, #0065FF)",
45
+ bold: "var(--ds-border-bold, #344563)"
46
+ };
47
+ export const borderWidthMap = {
48
+ 'size.0': "var(--ds-width-0, 0)",
49
+ 'size.050': "var(--ds-width-050, 1px)",
50
+ 'size.100': "var(--ds-width-100, 2px)"
51
+ };
52
+ export const borderRadiusMap = {
53
+ 'radius.400': "var(--ds-radius-400, 16px)",
54
+ 'radius.300': "var(--ds-radius-300, 12px)",
55
+ 'radius.100': "var(--ds-radius-100, 4px)",
56
+ 'radius.050': "var(--ds-radius-050, 2px)",
57
+ 'radius.200': "var(--ds-radius-200, 8px)"
58
+ };
59
+ export const paddingMap = {
60
+ 'space.0': "var(--ds-space-0, 0px)",
61
+ 'space.025': "var(--ds-space-025, 2px)",
62
+ 'space.050': "var(--ds-space-050, 4px)",
63
+ 'space.075': "var(--ds-space-075, 6px)",
64
+ 'space.100': "var(--ds-space-100, 8px)",
65
+ 'space.150': "var(--ds-space-150, 12px)",
66
+ 'space.200': "var(--ds-space-200, 16px)",
67
+ 'space.250': "var(--ds-space-250, 20px)",
68
+ 'space.300': "var(--ds-space-300, 24px)",
69
+ 'space.400': "var(--ds-space-400, 32px)",
70
+ 'space.500': "var(--ds-space-500, 40px)",
71
+ 'space.600': "var(--ds-space-600, 48px)",
72
+ 'space.800': "var(--ds-space-800, 64px)",
73
+ 'space.1000': "var(--ds-space-1000, 80px)"
74
+ };
75
+ export const textColorMap = {
76
+ 'color.text': "var(--ds-text, #172B4D)",
77
+ 'accent.red': "var(--ds-text-accent-red, #DE350B)",
78
+ 'accent.red.bolder': "var(--ds-text-accent-red-bolder, #BF2600)",
79
+ 'accent.orange': "var(--ds-text-accent-orange, #F18D13)",
80
+ 'accent.orange.bolder': "var(--ds-text-accent-orange-bolder, #B65C02)",
81
+ 'accent.yellow': "var(--ds-text-accent-yellow, #FF991F)",
82
+ 'accent.yellow.bolder': "var(--ds-text-accent-yellow-bolder, #FF8B00)",
83
+ 'accent.green': "var(--ds-text-accent-green, #00875A)",
84
+ 'accent.green.bolder': "var(--ds-text-accent-green-bolder, #006644)",
85
+ 'accent.teal': "var(--ds-text-accent-teal, #00A3BF)",
86
+ 'accent.teal.bolder': "var(--ds-text-accent-teal-bolder, #008DA6)",
87
+ 'accent.blue': "var(--ds-text-accent-blue, #0052CC)",
88
+ 'accent.blue.bolder': "var(--ds-text-accent-blue-bolder, #0747A6)",
89
+ 'accent.purple': "var(--ds-text-accent-purple, #5243AA)",
90
+ 'accent.purple.bolder': "var(--ds-text-accent-purple-bolder, #403294)",
91
+ 'accent.magenta': "var(--ds-text-accent-magenta, #E774BB)",
92
+ 'accent.magenta.bolder': "var(--ds-text-accent-magenta-bolder, #DA62AC)",
93
+ 'accent.gray': "var(--ds-text-accent-gray, #505F79)",
94
+ 'accent.gray.bolder': "var(--ds-text-accent-gray-bolder, #172B4D)",
95
+ disabled: "var(--ds-text-disabled, #A5ADBA)",
96
+ inverse: "var(--ds-text-inverse, #FFFFFF)",
97
+ selected: "var(--ds-text-selected, #0052CC)",
98
+ brand: "var(--ds-text-brand, #0065FF)",
99
+ danger: "var(--ds-text-danger, #DE350B)",
100
+ warning: "var(--ds-text-warning, #974F0C)",
101
+ 'warning.inverse': "var(--ds-text-warning-inverse, #172B4D)",
102
+ success: "var(--ds-text-success, #006644)",
103
+ discovery: "var(--ds-text-discovery, #403294)",
104
+ information: "var(--ds-text-information, #0052CC)",
105
+ subtlest: "var(--ds-text-subtlest, #7A869A)",
106
+ subtle: "var(--ds-text-subtle, #42526E)"
107
+ };
108
+ export const dimensionMap = {
109
+ '100%': '100%',
110
+ 'size.100': '16px',
111
+ 'size.200': '24px',
112
+ 'size.300': '32px',
113
+ 'size.400': '40px',
114
+ 'size.500': '48px',
115
+ 'size.600': '96px',
116
+ 'size.1000': '192px'
117
+ };
@@ -0,0 +1,97 @@
1
+ import { css as cssEmotion } from '@emotion/react';
2
+ import { backgroundColorMap, borderColorMap, borderRadiusMap, borderWidthMap, dimensionMap, paddingMap, textColorMap } from './style-maps';
3
+ const tokensMap = {
4
+ backgroundColor: backgroundColorMap,
5
+ borderColor: borderColorMap,
6
+ borderRadius: borderRadiusMap,
7
+ borderWidth: borderWidthMap,
8
+ color: textColorMap,
9
+ height: dimensionMap,
10
+ maxHeight: dimensionMap,
11
+ maxWidth: dimensionMap,
12
+ minHeight: dimensionMap,
13
+ minWidth: dimensionMap,
14
+ padding: paddingMap,
15
+ paddingBlock: paddingMap,
16
+ paddingBlockEnd: paddingMap,
17
+ paddingBlockStart: paddingMap,
18
+ paddingInline: paddingMap,
19
+ paddingInlineEnd: paddingMap,
20
+ paddingInlineStart: paddingMap,
21
+ width: dimensionMap
22
+ };
23
+ const uniqueSymbol = Symbol('Internal symbol to verify xcss function is called safely');
24
+
25
+ /**
26
+ * Only exposed for testing.
27
+ * @internal
28
+ */
29
+ export const transformStyles = styleObj => {
30
+ if (!styleObj || typeof styleObj !== 'object') {
31
+ return styleObj;
32
+ }
33
+
34
+ // If styles are defined as an CSSObject[], recursively call on each element until we reach CSSObject
35
+ if (Array.isArray(styleObj)) {
36
+ return styleObj.map(transformStyles);
37
+ }
38
+
39
+ // Modifies styleObj in place. Be careful.
40
+ Object.entries(styleObj).forEach(([key, value]) => {
41
+ var _process, _process$env;
42
+ if (((_process = process) === null || _process === void 0 ? void 0 : (_process$env = _process.env) === null || _process$env === void 0 ? void 0 : _process$env.NODE_ENV) === 'development') {
43
+ // We don't support `.class`, `[data-testid]`, `> *`, `#some-id`
44
+ if (/(\.|\s|&+|\*\>|#|\[.*\])/.test(key)) {
45
+ throw new Error(`Styles not supported for key '${key}'.`);
46
+ }
47
+ }
48
+
49
+ // If key is a pseudo class or a pseudo element, then value should be an object.
50
+ // So, call transformStyles on the value
51
+ if (/^::?.*$/.test(key)) {
52
+ styleObj[key] = transformStyles(value);
53
+ return;
54
+ }
55
+
56
+ // TODO: Deal with media queries
57
+
58
+ // We have now dealt with all the special cases, so,
59
+ // check whether what remains is a style property
60
+ // that can be transformed.
61
+ if (!(key in tokensMap)) {
62
+ return;
63
+ }
64
+ const tokenValue = tokensMap[key][value];
65
+ if (!tokenValue) {
66
+ throw new Error('Invalid Token');
67
+ }
68
+ styleObj[key] = tokenValue;
69
+ });
70
+ return styleObj;
71
+ };
72
+ export const xcss = style => {
73
+ const transformedStyles = transformStyles(style);
74
+ return {
75
+ symbol: uniqueSymbol,
76
+ styles: cssEmotion(transformedStyles)
77
+ };
78
+ };
79
+
80
+ /**
81
+ * @internal used in primitives
82
+ * @returns
83
+ */
84
+ export const parseXcss = args => {
85
+ if (Array.isArray(args)) {
86
+ // @ts-expect-error FIXME
87
+ return args.map(parseXcss);
88
+ }
89
+ const {
90
+ symbol,
91
+ styles
92
+ } = args;
93
+ if (typeof process && process.env.NODE_ENV === 'development' && symbol !== uniqueSymbol) {
94
+ throw new Error('Styles generated from unsafe source, use the `xcss` export from `@atlaskit/primitives`.');
95
+ }
96
+ return styles;
97
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/primitives",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "sideEffects": false
5
5
  }