@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.
@@ -1,8 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- 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"],
4
- _excluded2 = ["style", "className"];
5
- import React, { forwardRef } from 'react';
3
+ 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"],
4
+ _excluded2 = ["className"];
5
+ /** @jsx jsx */
6
+ import { forwardRef } from 'react';
7
+ import { jsx } from '@emotion/react';
8
+ import { parseXcss } from '../internal/xcss';
6
9
  import { BaseBox } from './internal/base-box.partial';
7
10
  /**
8
11
  * __Box__
@@ -45,13 +48,14 @@ var Box = /*#__PURE__*/forwardRef(function (_ref, ref) {
45
48
  display = _ref$display === void 0 ? 'block' : _ref$display,
46
49
  _ref$position = _ref.position,
47
50
  position = _ref$position === void 0 ? 'static' : _ref$position,
48
- customStyles = _ref.customStyles,
51
+ style = _ref.style,
49
52
  testId = _ref.testId,
53
+ xcss = _ref.xcss,
50
54
  htmlAttributes = _objectWithoutProperties(_ref, _excluded);
51
- var style = htmlAttributes.style,
52
- className = htmlAttributes.className,
55
+ var spreadClass = htmlAttributes.className,
53
56
  safeHtmlAttributes = _objectWithoutProperties(htmlAttributes, _excluded2);
54
- return /*#__PURE__*/React.createElement(BaseBox, _extends({
57
+ var className = xcss && parseXcss(xcss);
58
+ return jsx(BaseBox, _extends({
55
59
  as: as,
56
60
  color: color,
57
61
  backgroundColor: backgroundColor,
@@ -79,9 +83,13 @@ var Box = /*#__PURE__*/forwardRef(function (_ref, ref) {
79
83
  width: width,
80
84
  display: display,
81
85
  position: position,
82
- UNSAFE_style: customStyles,
86
+ style: style,
83
87
  testId: testId,
84
88
  ref: ref
89
+ // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
90
+ ,
91
+ css: className
85
92
  }, safeHtmlAttributes), children);
86
93
  });
94
+ Box.displayName = 'Box';
87
95
  export default Box;
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- 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"];
4
+ 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"];
5
5
  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; }
6
6
  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; }
7
7
  /** @jsx jsx */
@@ -81,11 +81,11 @@ export var BaseBox = /*#__PURE__*/forwardRef(function (_ref3, ref) {
81
81
  display = _ref3$display === void 0 ? displayMap.block : _ref3$display,
82
82
  _ref3$position = _ref3.position,
83
83
  position = _ref3$position === void 0 ? 'static' : _ref3$position,
84
- UNSAFE_style = _ref3.UNSAFE_style,
84
+ style = _ref3.style,
85
85
  testId = _ref3.testId,
86
86
  htmlAttributes = _objectWithoutProperties(_ref3, _excluded);
87
87
  var Component = as || 'div';
88
- 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));
88
+ 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));
89
89
  var node = jsx(Component, _extends({
90
90
  style: inlineStyles,
91
91
  ref: ref
package/dist/esm/index.js CHANGED
@@ -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 var 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 var 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 var 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 var 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 var 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 var 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 var 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,100 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _typeof from "@babel/runtime/helpers/typeof";
3
+ import { css as cssEmotion } from '@emotion/react';
4
+ import { backgroundColorMap, borderColorMap, borderRadiusMap, borderWidthMap, dimensionMap, paddingMap, textColorMap } from './style-maps';
5
+ var tokensMap = {
6
+ backgroundColor: backgroundColorMap,
7
+ borderColor: borderColorMap,
8
+ borderRadius: borderRadiusMap,
9
+ borderWidth: borderWidthMap,
10
+ color: textColorMap,
11
+ height: dimensionMap,
12
+ maxHeight: dimensionMap,
13
+ maxWidth: dimensionMap,
14
+ minHeight: dimensionMap,
15
+ minWidth: dimensionMap,
16
+ padding: paddingMap,
17
+ paddingBlock: paddingMap,
18
+ paddingBlockEnd: paddingMap,
19
+ paddingBlockStart: paddingMap,
20
+ paddingInline: paddingMap,
21
+ paddingInlineEnd: paddingMap,
22
+ paddingInlineStart: paddingMap,
23
+ width: dimensionMap
24
+ };
25
+ var uniqueSymbol = Symbol('Internal symbol to verify xcss function is called safely');
26
+
27
+ /**
28
+ * Only exposed for testing.
29
+ * @internal
30
+ */
31
+ export var transformStyles = function transformStyles(styleObj) {
32
+ if (!styleObj || _typeof(styleObj) !== 'object') {
33
+ return styleObj;
34
+ }
35
+
36
+ // If styles are defined as an CSSObject[], recursively call on each element until we reach CSSObject
37
+ if (Array.isArray(styleObj)) {
38
+ return styleObj.map(transformStyles);
39
+ }
40
+
41
+ // Modifies styleObj in place. Be careful.
42
+ Object.entries(styleObj).forEach(function (_ref) {
43
+ var _process, _process$env;
44
+ var _ref2 = _slicedToArray(_ref, 2),
45
+ key = _ref2[0],
46
+ value = _ref2[1];
47
+ 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') {
48
+ // We don't support `.class`, `[data-testid]`, `> *`, `#some-id`
49
+ if (/(\.|\s|&+|\*\>|#|\[.*\])/.test(key)) {
50
+ throw new Error("Styles not supported for key '".concat(key, "'."));
51
+ }
52
+ }
53
+
54
+ // If key is a pseudo class or a pseudo element, then value should be an object.
55
+ // So, call transformStyles on the value
56
+ if (/^::?.*$/.test(key)) {
57
+ styleObj[key] = transformStyles(value);
58
+ return;
59
+ }
60
+
61
+ // TODO: Deal with media queries
62
+
63
+ // We have now dealt with all the special cases, so,
64
+ // check whether what remains is a style property
65
+ // that can be transformed.
66
+ if (!(key in tokensMap)) {
67
+ return;
68
+ }
69
+ var tokenValue = tokensMap[key][value];
70
+ if (!tokenValue) {
71
+ throw new Error('Invalid Token');
72
+ }
73
+ styleObj[key] = tokenValue;
74
+ });
75
+ return styleObj;
76
+ };
77
+ export var xcss = function xcss(style) {
78
+ var transformedStyles = transformStyles(style);
79
+ return {
80
+ symbol: uniqueSymbol,
81
+ styles: cssEmotion(transformedStyles)
82
+ };
83
+ };
84
+
85
+ /**
86
+ * @internal used in primitives
87
+ * @returns
88
+ */
89
+ export var parseXcss = function parseXcss(args) {
90
+ if (Array.isArray(args)) {
91
+ // @ts-expect-error FIXME
92
+ return args.map(parseXcss);
93
+ }
94
+ var symbol = args.symbol,
95
+ styles = args.styles;
96
+ if ((typeof process === "undefined" ? "undefined" : _typeof(process)) && process.env.NODE_ENV === 'development' && symbol !== uniqueSymbol) {
97
+ throw new Error('Styles generated from unsafe source, use the `xcss` export from `@atlaskit/primitives`.');
98
+ }
99
+ return styles;
100
+ };
@@ -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,8 +1,9 @@
1
+ /** @jsx jsx */
1
2
  import { ElementType, FC, ReactElement } from 'react';
2
3
  import { BaseBoxProps } from './internal/base-box.partial';
3
- import { BoxResponsiveProp } from './internal/types';
4
- import { PublicBoxPropsBase } from './types';
5
- export declare type BoxProps<T extends ElementType = 'div'> = Omit<BaseBoxProps<T>, 'className' | 'UNSAFE_style' | BoxResponsiveProp> & PublicBoxPropsBase;
4
+ import type { BoxResponsiveProp } from './internal/types';
5
+ import type { PublicBoxPropsBase } from './types';
6
+ export declare type BoxProps<T extends ElementType = 'div'> = Omit<BaseBoxProps<T>, 'className' | BoxResponsiveProp> & PublicBoxPropsBase;
6
7
  declare type BoxComponent<T extends ElementType = 'div'> = (<T extends ElementType = 'div'>(props: BoxProps<T>) => ReactElement | null) & FC<BoxProps<T>>;
7
8
  /**
8
9
  * __Box__
@@ -3,7 +3,7 @@ import { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, FC, React
3
3
  import { Layer } from '../../constants';
4
4
  import { ResponsiveObject } from '../../helpers/responsive';
5
5
  import type { BasePrimitiveProps } from '../types';
6
- export declare type BaseBoxProps<T extends ElementType = 'div'> = Omit<ComponentPropsWithoutRef<T>, 'as' | 'className' | 'style'> & BasePrimitiveProps & BaseBoxPropsFoundation<T>;
6
+ export declare type BaseBoxProps<T extends ElementType = 'div'> = Omit<ComponentPropsWithoutRef<T>, 'as' | 'className'> & BasePrimitiveProps & BaseBoxPropsFoundation<T>;
7
7
  declare type BaseBoxPropsFoundation<T extends ElementType> = {
8
8
  /**
9
9
  * The DOM element to render as the Box. Defaults to `div`.
@@ -26,54 +26,80 @@ declare type BaseBoxPropsFoundation<T extends ElementType> = {
26
26
  */
27
27
  children?: ReactNode;
28
28
  /**
29
+ * @private
30
+ * @deprecated Use `xcss` to achieve this functionality.
29
31
  * Token representing color with a fallback.
30
32
  */
31
33
  color?: TextColor;
32
34
  /**
35
+ * @private
36
+ * @deprecated Use `xcss` to achieve this functionality.
33
37
  * Token representing background color with a fallback.
34
38
  */
35
39
  backgroundColor?: BackgroundColor;
36
40
  /**
41
+ * @private
42
+ * @deprecated Use `xcss` to achieve this functionality.
37
43
  * Token representing shadow with a fallback
38
44
  */
39
45
  shadow?: Shadow;
40
46
  /**
47
+ * @private
48
+ * @deprecated Use `xcss` to achieve this functionality.
41
49
  * Defines border style.
42
50
  */
43
51
  borderStyle?: BorderStyle;
44
52
  /**
53
+ * @private
54
+ * @deprecated Use `xcss` to achieve this functionality.
45
55
  * Defines border width.
46
56
  */
47
57
  borderWidth?: BorderWidth | ResponsiveObject<BorderWidth>;
48
58
  /**
59
+ * @private
60
+ * @deprecated Use `xcss` to achieve this functionality.
49
61
  * Token representing border color with a fallback.
50
62
  */
51
63
  borderColor?: BorderColor;
52
64
  /**
65
+ * @private
66
+ * @deprecated Use `xcss` to achieve this functionality.
53
67
  * Defines border radius.
54
68
  */
55
69
  borderRadius?: BorderRadius;
56
70
  /**
71
+ * @private
72
+ * @deprecated Use `xcss` to achieve this functionality.
57
73
  * Used for providing a z-index.
58
74
  */
59
75
  layer?: Layer;
60
76
  /**
77
+ * @private
78
+ * @deprecated Use `xcss` to achieve this functionality.
61
79
  * Shorthand `flex` property.
62
80
  */
63
81
  flex?: Flex;
64
82
  /**
83
+ * @private
84
+ * @deprecated Use `xcss` to achieve this functionality.
65
85
  * Defines the flex grow factor -- how much remaining space should be taken up.
66
86
  */
67
87
  flexGrow?: FlexGrow;
68
88
  /**
89
+ * @private
90
+ * @deprecated Use `xcss` to achieve this functionality.
69
91
  * Defines the flex shrink factor -- how the item will shrink relative to other flex items in the container.
70
92
  */
71
93
  flexShrink?: FlexShrink;
72
94
  /**
95
+ * @private
96
+ * @deprecated Use `xcss` to achieve this functionality.
73
97
  * Overrides the `align-items` value.
74
98
  */
75
99
  alignSelf?: AlignSelf;
76
100
  /**
101
+ * @private
102
+ * @deprecated Use `xcss` to achieve this functionality.
77
103
  * Defines what happens if content overflows the box.
78
104
  * Shorthand for overflow-inline and overflow-block.
79
105
  *
@@ -82,10 +108,14 @@ declare type BaseBoxPropsFoundation<T extends ElementType> = {
82
108
  */
83
109
  overflow?: Overflow;
84
110
  /**
111
+ * @private
112
+ * @deprecated Use `xcss` to achieve this functionality.
85
113
  * Defines what happens if content overflows the box in the horizontal direction (inline).
86
114
  */
87
115
  overflowInline?: OverflowInline;
88
116
  /**
117
+ * @private
118
+ * @deprecated Use `xcss` to achieve this functionality.
89
119
  * Defines what happens if content overflows the box in the vertical direction (block).
90
120
  */
91
121
  overflowBlock?: OverflowBlock;
@@ -127,23 +157,32 @@ declare type BaseBoxPropsFoundation<T extends ElementType> = {
127
157
  */
128
158
  paddingInlineEnd?: PaddingInlineEnd | ResponsiveObject<PaddingInlineEnd>;
129
159
  /**
160
+ * @private
161
+ * @deprecated Use `xcss` to achieve this functionality.
130
162
  * Token representing width.
131
- * @experimental The existing tokens will be replaced to better reflect dimensions.
132
163
  */
133
164
  width?: Width;
134
165
  /**
166
+ * @private
167
+ * @deprecated Use `xcss` to achieve this functionality.
135
168
  * Token representing height.
136
- * @experimental The existing tokens will be replaced to better reflect dimensions.
137
169
  */
138
170
  height?: Height;
139
171
  /**
172
+ * @private
173
+ * @deprecated Use `xcss` to achieve this functionality.
140
174
  * Defines display type and layout. Defaults to `block`.
141
175
  */
142
176
  display?: Display | ResponsiveObject<Display>;
143
177
  /**
178
+ * @private
179
+ * @deprecated Use `xcss` to achieve this functionality.
144
180
  * CSS position property.
145
181
  */
146
182
  position?: Position;
183
+ /**
184
+ * Forwarded ref element
185
+ */
147
186
  ref?: ComponentPropsWithRef<T>['ref'];
148
187
  };
149
188
  export declare type BaseBoxComponent<T extends ElementType = 'div'> = (<T extends ElementType = 'div'>(props: BaseBoxProps<T>) => ReactElement | null) & FC<BaseBoxProps<T>>;
@@ -1,24 +1,16 @@
1
1
  import type { CSSProperties } from 'react';
2
- import { BorderWidth, Display, Padding, PaddingBlock, PaddingBlockEnd, PaddingBlockStart, PaddingInline, PaddingInlineEnd, PaddingInlineStart } from './internal/base-box.partial';
3
- /**
4
- * Restricted set of inline styles to be applied to the primitive.
5
- * Should be avoided where possible, in favor of the pre-defined props and values on the primitive itself.
6
- * Tokens should be used where possible.
7
- */
8
- export declare type CustomStyles = Pick<CSSProperties, 'flexBasis' | 'flex' | 'width' | 'height' | 'minWidth' | 'maxWidth' | 'minHeight' | 'maxHeight' | 'insetInlineStart' | 'insetInlineEnd' | 'insetBlockStart' | 'float' | 'margin' | 'marginInlineStart' | 'marginInlineEnd' | 'marginBlockStart' | 'marginBlockEnd' | 'marginInline' | 'marginBlock' | 'paddingLeft' | 'paddingRight' | 'paddingTop' | 'paddingBottom'>;
9
- export interface BasePrimitiveProps {
2
+ import type { SafeCSS } from '../internal/xcss';
3
+ import type { BorderWidth, Display, Padding, PaddingBlock, PaddingBlockEnd, PaddingBlockStart, PaddingInline, PaddingInlineEnd, PaddingInlineStart } from './internal/base-box.partial';
4
+ export declare type BasePrimitiveProps = {
10
5
  /**
11
6
  * A unique string that appears as data attribute `data-testid` in the rendered code, serving as a hook for automated tests.
12
7
  */
13
8
  testId?: string;
14
9
  /**
15
10
  * Inline styles to be applied to the primitive.
16
- * Marked as "unsafe" because any CSS properties can be provided here without any extra control or validation, including those that would be better managed by the primitive itself via props.
17
- * Effectively equivalent to the standard `style` prop but marked with a special name.
18
- * Used only internally.
19
11
  */
20
- UNSAFE_style?: CSSProperties;
21
- }
12
+ style?: CSSProperties;
13
+ };
22
14
  export declare type PublicBoxPropsBase = {
23
15
  /**
24
16
  * Defines border width.
@@ -65,5 +57,8 @@ export declare type PublicBoxPropsBase = {
65
57
  * Tokens representing CSS `paddingInlineEnd`.
66
58
  */
67
59
  paddingInlineEnd?: PaddingInlineEnd;
68
- customStyles?: CustomStyles;
60
+ /**
61
+ * Safe subset of styles that can be applied as a classname.
62
+ */
63
+ xcss?: SafeCSS;
69
64
  };
@@ -1,3 +1,4 @@
1
1
  export { default as Box, type BoxProps } from './components/box';
2
2
  export { default as Inline, type InlineProps, } from './components/inline.partial';
3
+ export { xcss } from './internal/xcss';
3
4
  export { default as Stack, type StackProps } from './components/stack.partial';
@@ -0,0 +1,151 @@
1
+ export declare const backgroundColorMap: {
2
+ readonly disabled: "var(--ds-background-disabled)";
3
+ readonly input: "var(--ds-background-input)";
4
+ readonly 'inverse.subtle': "var(--ds-background-inverse-subtle)";
5
+ readonly neutral: "var(--ds-background-neutral)";
6
+ readonly 'neutral.subtle': "var(--ds-background-neutral-subtle)";
7
+ readonly 'neutral.bold': "var(--ds-background-neutral-bold)";
8
+ readonly selected: "var(--ds-background-selected)";
9
+ readonly 'selected.bold': "var(--ds-background-selected-bold)";
10
+ readonly 'brand.bold': "var(--ds-background-brand-bold)";
11
+ readonly danger: "var(--ds-background-danger)";
12
+ readonly 'danger.bold': "var(--ds-background-danger-bold)";
13
+ readonly warning: "var(--ds-background-warning)";
14
+ readonly 'warning.bold': "var(--ds-background-warning-bold)";
15
+ readonly success: "var(--ds-background-success)";
16
+ readonly 'success.bold': "var(--ds-background-success-bold)";
17
+ readonly discovery: "var(--ds-background-discovery)";
18
+ readonly 'discovery.bold': "var(--ds-background-discovery-bold)";
19
+ readonly information: "var(--ds-background-information)";
20
+ readonly 'information.bold': "var(--ds-background-information-bold)";
21
+ readonly 'color.blanket': "var(--ds-blanket)";
22
+ readonly 'color.blanket.selected': "var(--ds-blanket-selected)";
23
+ readonly 'color.blanket.danger': "var(--ds-blanket-danger)";
24
+ readonly 'elevation.surface': "var(--ds-surface)";
25
+ readonly 'elevation.surface.overlay': "var(--ds-surface-overlay)";
26
+ readonly 'elevation.surface.raised': "var(--ds-surface-raised)";
27
+ readonly 'elevation.surface.sunken': "var(--ds-surface-sunken)";
28
+ };
29
+ export declare type BackgroundColor = keyof typeof backgroundColorMap;
30
+ export declare const borderColorMap: {
31
+ readonly 'color.border': "var(--ds-border)";
32
+ readonly disabled: "var(--ds-border-disabled)";
33
+ readonly focused: "var(--ds-border-focused)";
34
+ readonly input: "var(--ds-border-input)";
35
+ readonly inverse: "var(--ds-border-inverse)";
36
+ readonly selected: "var(--ds-border-selected)";
37
+ readonly brand: "var(--ds-border-brand)";
38
+ readonly danger: "var(--ds-border-danger)";
39
+ readonly warning: "var(--ds-border-warning)";
40
+ readonly success: "var(--ds-border-success)";
41
+ readonly discovery: "var(--ds-border-discovery)";
42
+ readonly information: "var(--ds-border-information)";
43
+ readonly bold: "var(--ds-border-bold)";
44
+ };
45
+ export declare type BorderColor = keyof typeof borderColorMap;
46
+ export declare const borderWidthMap: {
47
+ readonly 'size.0': "var(--ds-width-0)";
48
+ readonly 'size.050': "var(--ds-width-050)";
49
+ readonly 'size.100': "var(--ds-width-100)";
50
+ };
51
+ export declare type BorderWidth = keyof typeof borderWidthMap;
52
+ export declare const borderRadiusMap: {
53
+ readonly 'radius.400': "var(--ds-radius-400)";
54
+ readonly 'radius.300': "var(--ds-radius-300)";
55
+ readonly 'radius.100': "var(--ds-radius-100)";
56
+ readonly 'radius.050': "var(--ds-radius-050)";
57
+ readonly 'radius.200': "var(--ds-radius-200)";
58
+ };
59
+ export declare type BorderRadius = keyof typeof borderRadiusMap;
60
+ export declare const paddingMap: {
61
+ readonly 'space.0': "var(--ds-space-0)";
62
+ readonly 'space.025': "var(--ds-space-025)";
63
+ readonly 'space.050': "var(--ds-space-050)";
64
+ readonly 'space.075': "var(--ds-space-075)";
65
+ readonly 'space.100': "var(--ds-space-100)";
66
+ readonly 'space.150': "var(--ds-space-150)";
67
+ readonly 'space.200': "var(--ds-space-200)";
68
+ readonly 'space.250': "var(--ds-space-250)";
69
+ readonly 'space.300': "var(--ds-space-300)";
70
+ readonly 'space.400': "var(--ds-space-400)";
71
+ readonly 'space.500': "var(--ds-space-500)";
72
+ readonly 'space.600': "var(--ds-space-600)";
73
+ readonly 'space.800': "var(--ds-space-800)";
74
+ readonly 'space.1000': "var(--ds-space-1000)";
75
+ };
76
+ export declare type Padding = keyof typeof paddingMap;
77
+ export declare type PaddingBlock = keyof typeof paddingMap;
78
+ export declare type PaddingBlockStart = keyof typeof paddingMap;
79
+ export declare type PaddingBlockEnd = keyof typeof paddingMap;
80
+ export declare type PaddingInline = keyof typeof paddingMap;
81
+ export declare type PaddingInlineStart = keyof typeof paddingMap;
82
+ export declare type PaddingInlineEnd = keyof typeof paddingMap;
83
+ export declare const textColorMap: {
84
+ readonly 'color.text': "var(--ds-text)";
85
+ readonly 'accent.red': "var(--ds-text-accent-red)";
86
+ readonly 'accent.red.bolder': "var(--ds-text-accent-red-bolder)";
87
+ readonly 'accent.orange': "var(--ds-text-accent-orange)";
88
+ readonly 'accent.orange.bolder': "var(--ds-text-accent-orange-bolder)";
89
+ readonly 'accent.yellow': "var(--ds-text-accent-yellow)";
90
+ readonly 'accent.yellow.bolder': "var(--ds-text-accent-yellow-bolder)";
91
+ readonly 'accent.green': "var(--ds-text-accent-green)";
92
+ readonly 'accent.green.bolder': "var(--ds-text-accent-green-bolder)";
93
+ readonly 'accent.teal': "var(--ds-text-accent-teal)";
94
+ readonly 'accent.teal.bolder': "var(--ds-text-accent-teal-bolder)";
95
+ readonly 'accent.blue': "var(--ds-text-accent-blue)";
96
+ readonly 'accent.blue.bolder': "var(--ds-text-accent-blue-bolder)";
97
+ readonly 'accent.purple': "var(--ds-text-accent-purple)";
98
+ readonly 'accent.purple.bolder': "var(--ds-text-accent-purple-bolder)";
99
+ readonly 'accent.magenta': "var(--ds-text-accent-magenta)";
100
+ readonly 'accent.magenta.bolder': "var(--ds-text-accent-magenta-bolder)";
101
+ readonly 'accent.gray': "var(--ds-text-accent-gray)";
102
+ readonly 'accent.gray.bolder': "var(--ds-text-accent-gray-bolder)";
103
+ readonly disabled: "var(--ds-text-disabled)";
104
+ readonly inverse: "var(--ds-text-inverse)";
105
+ readonly selected: "var(--ds-text-selected)";
106
+ readonly brand: "var(--ds-text-brand)";
107
+ readonly danger: "var(--ds-text-danger)";
108
+ readonly warning: "var(--ds-text-warning)";
109
+ readonly 'warning.inverse': "var(--ds-text-warning-inverse)";
110
+ readonly success: "var(--ds-text-success)";
111
+ readonly discovery: "var(--ds-text-discovery)";
112
+ readonly information: "var(--ds-text-information)";
113
+ readonly subtlest: "var(--ds-text-subtlest)";
114
+ readonly subtle: "var(--ds-text-subtle)";
115
+ };
116
+ export declare type TextColor = keyof typeof textColorMap;
117
+ export declare const dimensionMap: {
118
+ readonly '100%': "100%";
119
+ readonly 'size.100': "16px";
120
+ readonly 'size.200': "24px";
121
+ readonly 'size.300': "32px";
122
+ readonly 'size.400': "40px";
123
+ readonly 'size.500': "48px";
124
+ readonly 'size.600': "96px";
125
+ readonly 'size.1000': "192px";
126
+ };
127
+ export declare type Width = keyof typeof dimensionMap;
128
+ export declare type Height = keyof typeof dimensionMap;
129
+ export declare type MinWidth = keyof typeof dimensionMap;
130
+ export declare type MaxWidth = keyof typeof dimensionMap;
131
+ export declare type MinHeight = keyof typeof dimensionMap;
132
+ export declare type MaxHeight = keyof typeof dimensionMap;
133
+ export declare type TokenisedProps = {
134
+ backgroundColor?: BackgroundColor;
135
+ borderColor?: BorderColor;
136
+ borderWidth?: BorderWidth;
137
+ color?: TextColor;
138
+ height?: Height;
139
+ minHeight?: MinHeight;
140
+ minWidth?: MinWidth;
141
+ maxHeight?: MaxHeight;
142
+ maxWidth?: MaxWidth;
143
+ padding?: Padding;
144
+ paddingBlock?: Padding;
145
+ paddingInline?: Padding;
146
+ paddingBlockStart?: Padding;
147
+ paddingBlockEnd?: Padding;
148
+ paddingInlineStart?: Padding;
149
+ paddingInlineEnd?: Padding;
150
+ width?: Width;
151
+ };