@marigold/system 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/dist/Box.d.ts +14 -0
  3. package/dist/Global.d.ts +2 -0
  4. package/dist/SVG.d.ts +6 -0
  5. package/dist/index.d.ts +6 -4
  6. package/dist/normalize.d.ts +101 -67
  7. package/dist/system.cjs.development.js +299 -294
  8. package/dist/system.cjs.development.js.map +1 -1
  9. package/dist/system.cjs.production.min.js +1 -1
  10. package/dist/system.cjs.production.min.js.map +1 -1
  11. package/dist/system.esm.js +291 -289
  12. package/dist/system.esm.js.map +1 -1
  13. package/dist/theme.d.ts +136 -0
  14. package/dist/types.d.ts +1 -2
  15. package/dist/useTheme.d.ts +11 -5
  16. package/dist/variant.d.ts +29 -0
  17. package/package.json +4 -5
  18. package/src/Box.test.tsx +308 -0
  19. package/src/Box.tsx +199 -0
  20. package/src/Colors.stories.mdx +332 -456
  21. package/src/Global.test.tsx +57 -0
  22. package/src/Global.tsx +34 -0
  23. package/src/SVG.stories.mdx +55 -0
  24. package/src/SVG.test.tsx +82 -0
  25. package/src/SVG.tsx +24 -0
  26. package/src/index.ts +6 -4
  27. package/src/normalize.test.tsx +9 -36
  28. package/src/normalize.ts +51 -82
  29. package/src/theme.ts +157 -0
  30. package/src/types.ts +0 -2
  31. package/src/useTheme.test.tsx +22 -14
  32. package/src/useTheme.tsx +37 -9
  33. package/src/variant.test.ts +93 -0
  34. package/src/variant.ts +54 -0
  35. package/dist/Element.d.ts +0 -8
  36. package/dist/cache.d.ts +0 -4
  37. package/dist/reset.d.ts +0 -24
  38. package/dist/useClassname.d.ts +0 -2
  39. package/dist/useStyles.d.ts +0 -15
  40. package/src/Element.test.tsx +0 -203
  41. package/src/Element.tsx +0 -59
  42. package/src/cache.ts +0 -4
  43. package/src/reset.ts +0 -108
  44. package/src/useClassname.test.tsx +0 -70
  45. package/src/useClassname.ts +0 -23
  46. package/src/useStyles.stories.mdx +0 -24
  47. package/src/useStyles.test.tsx +0 -286
  48. package/src/useStyles.ts +0 -63
@@ -3,10 +3,10 @@
3
3
  function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
4
4
 
5
5
  var react = require('@emotion/react');
6
+ var css$1 = require('@theme-ui/css');
6
7
  var React = require('react');
7
8
  var React__default = _interopDefault(React);
8
- var css = require('@theme-ui/css');
9
- var css$1 = require('@emotion/css');
9
+ var system = require('@marigold/system');
10
10
 
11
11
  function _extends() {
12
12
  _extends = Object.assign || function (target) {
@@ -44,361 +44,366 @@ function _objectWithoutPropertiesLoose(source, excluded) {
44
44
  var base = {
45
45
  boxSizing: 'border-box',
46
46
  margin: 0,
47
- padding: 0,
48
- minWidth: 0,
49
- fontSize: '100%',
50
- fontFamily: 'inherit',
51
- verticalAlign: 'baseline',
52
- WebkitTapHighlightColor: 'transparent'
53
- }; // Content
54
- // ---------------
55
-
56
- var block = {
57
- display: 'block'
58
- };
59
- var list = {// empty
47
+ minWidth: 0
60
48
  };
61
- var table = {
62
- borderCollapse: 'collapse',
63
- borderSpacing: 0
64
- }; // Typography
65
- // ---------------
66
49
 
67
- var a = {
68
- textDecoration: 'none',
69
- touchAction: 'manipulation'
70
- };
71
- var quote = {
72
- quotes: 'none',
73
- selectors: {
74
- '&:before, &:after': {
75
- content: "''"
76
- }
77
- }
78
- }; // Form Elements
79
- // ---------------
50
+ var a = /*#__PURE__*/_extends({}, base, {
51
+ textDecoration: 'none'
52
+ });
80
53
 
81
- var button = {
54
+ var text = /*#__PURE__*/_extends({}, base, {
55
+ overflowWrap: 'break-word'
56
+ });
57
+
58
+ var media = /*#__PURE__*/_extends({}, base, {
59
+ display: 'block',
60
+ maxWidth: '100%'
61
+ });
62
+
63
+ var button = /*#__PURE__*/_extends({}, base, {
82
64
  display: 'block',
83
65
  appearance: 'none',
66
+ font: 'inherit',
84
67
  background: 'transparent',
85
- textAlign: 'center',
86
- touchAction: 'manipulation'
87
- };
88
- var input = {
68
+ textAlign: 'center'
69
+ });
70
+
71
+ var input = /*#__PURE__*/_extends({}, base, {
89
72
  display: 'block',
90
73
  appearance: 'none',
91
- selectors: {
92
- '&::-ms-clear': {
93
- display: 'none'
94
- },
95
- '&::-webkit-search-cancel-button': {
96
- WebkitAppearance: 'none'
97
- }
74
+ font: 'inherit',
75
+ '&::-ms-clear': {
76
+ display: 'none'
77
+ },
78
+ '&::-webkit-search-cancel-button': {
79
+ WebkitAppearance: 'none'
98
80
  }
99
- };
100
- var select = {
81
+ });
82
+
83
+ var select = /*#__PURE__*/_extends({}, base, {
101
84
  display: 'block',
102
85
  appearance: 'none',
103
- selectors: {
104
- '&::-ms-expand': {
105
- display: 'none'
106
- }
86
+ font: 'inherit',
87
+ '&::-ms-expand': {
88
+ display: 'none'
107
89
  }
108
- };
109
- var textarea = {
90
+ });
91
+
92
+ var textarea = /*#__PURE__*/_extends({}, base, {
110
93
  display: 'block',
111
- appearance: 'none'
112
- }; // Reset
94
+ appearance: 'none',
95
+ font: 'inherit'
96
+ }); // Normalize
113
97
  // ---------------
114
98
 
115
- var reset = {
116
- article: block,
117
- aside: block,
118
- details: block,
119
- figcaption: block,
120
- figure: block,
121
- footer: block,
122
- header: block,
123
- hgroup: block,
124
- menu: block,
125
- nav: block,
126
- section: block,
127
- ul: list,
128
- ol: list,
129
- blockquote: quote,
130
- q: quote,
131
- a: a,
99
+
100
+ var normalize = {
132
101
  base: base,
133
- table: table,
102
+ a: a,
103
+ p: text,
104
+ h1: text,
105
+ h2: text,
106
+ h3: text,
107
+ h4: text,
108
+ h5: text,
109
+ h6: text,
110
+ img: media,
111
+ picture: media,
112
+ video: media,
113
+ canvas: media,
114
+ svg: media,
134
115
  select: select,
135
116
  button: button,
136
117
  textarea: textarea,
137
118
  input: input
138
119
  };
120
+ /**
121
+ * Type-safe helper to get normalization. If no normalization is found,
122
+ * returns the *base* normalization.
123
+ */
139
124
 
140
- var isKnownElement = function isKnownElement(input) {
141
- return input in reset;
125
+ var getNormalizedStyles = function getNormalizedStyles(val) {
126
+ return typeof val === 'string' && val in normalize ? normalize[val] // Typescript doesn't infer this correctly
127
+ : normalize.base;
128
+ };
129
+
130
+ var _excluded = ["disabled"];
131
+
132
+ var isNil = function isNil(value) {
133
+ return value === null || value === undefined;
142
134
  };
143
135
  /**
144
- * Helper to conveniently get reset styles.
136
+ * Ensures that the `val` is an array. Will return an empty array if `val` is falsy.
145
137
  */
146
138
 
147
139
 
148
- var getNormalizedStyles = function getNormalizedStyles(input) {
149
- /**
150
- * If a React component is given, we don't apply any reset styles
151
- * and return the base reset.
152
- */
153
- if (typeof input !== 'string') {
154
- return reset.base;
155
- }
156
- /**
157
- * Try to find the reset style for a HTML element. If the element
158
- * is not included return empty styles.
159
- */
140
+ var ensureArray = function ensureArray(val) {
141
+ return isNil(val) ? [] : Array.isArray(val) ? val : [val];
142
+ };
143
+ /**
144
+ * Removes trailing dot from variant, if necessary. This is necessary to support
145
+ * `__default` styles. See https://github.com/system-ui/theme-ui/pull/951
146
+ */
160
147
 
148
+ var ensureVariantDefault = function ensureVariantDefault(val) {
149
+ return val.replace(/\.$/, '');
150
+ };
151
+ /**
152
+ * Ensures that the `variant` is an array and supports the `__default` key.
153
+ */
161
154
 
162
- return isKnownElement(input) ? reset[input] : {};
155
+ var ensureArrayVariant = function ensureArrayVariant(variant) {
156
+ return ensureArray(variant).map(ensureVariantDefault);
163
157
  };
158
+ /**
159
+ * Appends given `state` to a `variant`.
160
+ */
164
161
 
165
- var Context = /*#__PURE__*/React.createContext({});
166
- var useTheme = function useTheme() {
167
- var theme = React.useContext(Context);
168
- var css$1 = React.useCallback(function (style) {
169
- return css.css(style)(theme);
170
- }, [theme]);
171
- return {
172
- theme: theme,
173
- css: css$1
174
- };
162
+ var appendVariantState = function appendVariantState(variant, state) {
163
+ return ensureVariantDefault(variant) + ".:" + state;
175
164
  };
176
- var ThemeProvider = function ThemeProvider(_ref) {
177
- var theme = _ref.theme,
178
- children = _ref.children;
179
- return React__default.createElement(Context.Provider, {
180
- value: theme
181
- }, children);
165
+ /**
166
+ * Create a variant array from a `variant` and `state` containing
167
+ * passed states, if they are truthy.
168
+ */
169
+
170
+ var conditional = function conditional(variant, _ref) {
171
+ var _ref$disabled = _ref.disabled,
172
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
173
+ states = _objectWithoutPropertiesLoose(_ref, _excluded);
174
+
175
+ var entries = [].concat(Object.entries(states), [['disabled', disabled]]);
176
+ var stateVariants = entries.filter(function (_ref2) {
177
+ var val = _ref2[1];
178
+ return Boolean(val);
179
+ }).map(function (_ref3) {
180
+ var key = _ref3[0];
181
+ return appendVariantState(variant, key);
182
+ });
183
+ return [variant].concat(stateVariants);
182
184
  };
183
185
 
184
- var _excluded = ["as", "css", "variant", "children"];
186
+ var _excluded$1 = ["as", "children", "__baseCSS", "variant", "css", "display", "height", "width", "minWidth", "maxWidth", "position", "top", "bottom", "right", "left", "zIndex", "p", "px", "py", "pt", "pb", "pl", "pr", "m", "mx", "my", "mt", "mb", "ml", "mr", "flexDirection", "flexWrap", "flexShrink", "flexGrow", "alignItems", "justifyContent", "bg", "border", "borderRadius", "boxShadow", "opacity", "overflow", "transition"];
185
187
  /**
186
- * Function expression to check if there is any falsy value or empty object
188
+ * Check if there is any falsy value or empty object
187
189
  */
188
190
 
189
191
  var isNotEmpty = function isNotEmpty(val) {
190
192
  return !(val && Object.keys(val).length === 0 && val.constructor === Object);
191
193
  };
192
- /**
193
- * Get the normalized base styles
194
- */
195
-
196
194
 
197
- var baseStyles = /*#__PURE__*/getNormalizedStyles('base');
198
- var Element = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
199
- var _ref$as = _ref.as,
200
- as = _ref$as === void 0 ? 'div' : _ref$as,
201
- _ref$css = _ref.css,
202
- styles = _ref$css === void 0 ? {} : _ref$css,
195
+ var createThemedStyle = function createThemedStyle(_ref) {
196
+ var as = _ref.as,
197
+ __baseCSS = _ref.__baseCSS,
203
198
  variant = _ref.variant,
204
- children = _ref.children,
205
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
206
-
207
- var _useTheme = useTheme(),
208
- css = _useTheme.css;
209
- /**
210
- * Transform variant input for `@theme-ui/css`
211
- */
199
+ styles = _ref.styles,
200
+ css = _ref.css;
201
+ return function (theme) {
202
+ return [getNormalizedStyles(as), css$1.css(__baseCSS)(theme)].concat(ensureArrayVariant(variant).map(function (v) {
203
+ return css$1.css({
204
+ variant: v
205
+ })(theme);
206
+ }), [css$1.css(styles)(theme), css$1.css(css)(theme)]).filter(isNotEmpty);
207
+ };
208
+ };
212
209
 
210
+ var Box = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
211
+ var _ref2$as = _ref2.as,
212
+ as = _ref2$as === void 0 ? 'div' : _ref2$as,
213
+ children = _ref2.children,
214
+ __baseCSS = _ref2.__baseCSS,
215
+ variant = _ref2.variant,
216
+ _ref2$css = _ref2.css,
217
+ css = _ref2$css === void 0 ? {} : _ref2$css,
218
+ display = _ref2.display,
219
+ height = _ref2.height,
220
+ width = _ref2.width,
221
+ minWidth = _ref2.minWidth,
222
+ maxWidth = _ref2.maxWidth,
223
+ position = _ref2.position,
224
+ top = _ref2.top,
225
+ bottom = _ref2.bottom,
226
+ right = _ref2.right,
227
+ left = _ref2.left,
228
+ zIndex = _ref2.zIndex,
229
+ p = _ref2.p,
230
+ px = _ref2.px,
231
+ py = _ref2.py,
232
+ pt = _ref2.pt,
233
+ pb = _ref2.pb,
234
+ pl = _ref2.pl,
235
+ pr = _ref2.pr,
236
+ m = _ref2.m,
237
+ mx = _ref2.mx,
238
+ my = _ref2.my,
239
+ mt = _ref2.mt,
240
+ mb = _ref2.mb,
241
+ ml = _ref2.ml,
242
+ mr = _ref2.mr,
243
+ flexDirection = _ref2.flexDirection,
244
+ flexWrap = _ref2.flexWrap,
245
+ flexShrink = _ref2.flexShrink,
246
+ flexGrow = _ref2.flexGrow,
247
+ alignItems = _ref2.alignItems,
248
+ justifyContent = _ref2.justifyContent,
249
+ bg = _ref2.bg,
250
+ border = _ref2.border,
251
+ borderRadius = _ref2.borderRadius,
252
+ boxShadow = _ref2.boxShadow,
253
+ opacity = _ref2.opacity,
254
+ overflow = _ref2.overflow,
255
+ transition = _ref2.transition,
256
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded$1);
213
257
 
214
- var variants = Array.isArray(variant) ? variant.map(function (v) {
215
- return {
216
- variant: v
217
- };
218
- }) : [{
219
- variant: variant
220
- }];
221
258
  return react.jsx(as, _extends({}, props, {
222
- css: [baseStyles, getNormalizedStyles(as)].concat(variants.map(function (v) {
223
- return css(v);
224
- }), [css(styles)]).filter(isNotEmpty)
225
- }, {
259
+ css: createThemedStyle({
260
+ as: as,
261
+ __baseCSS: __baseCSS,
262
+ variant: variant,
263
+ css: css,
264
+ styles: {
265
+ display: display,
266
+ height: height,
267
+ width: width,
268
+ minWidth: minWidth,
269
+ maxWidth: maxWidth,
270
+ position: position,
271
+ top: top,
272
+ bottom: bottom,
273
+ right: right,
274
+ left: left,
275
+ zIndex: zIndex,
276
+ p: p,
277
+ px: px,
278
+ py: py,
279
+ pt: pt,
280
+ pb: pb,
281
+ pl: pl,
282
+ pr: pr,
283
+ m: m,
284
+ mx: mx,
285
+ my: my,
286
+ mt: mt,
287
+ mb: mb,
288
+ ml: ml,
289
+ mr: mr,
290
+ flexDirection: flexDirection,
291
+ flexWrap: flexWrap,
292
+ flexShrink: flexShrink,
293
+ flexGrow: flexGrow,
294
+ alignItems: alignItems,
295
+ justifyContent: justifyContent,
296
+ bg: bg,
297
+ border: border,
298
+ borderRadius: borderRadius,
299
+ boxShadow: boxShadow,
300
+ opacity: opacity,
301
+ overflow: overflow,
302
+ transition: transition
303
+ }
304
+ }),
226
305
  ref: ref
227
306
  }), children);
228
307
  });
229
308
 
230
- // lodash.isEmpty is tooo much KBs!
231
-
232
- var isEmpty = function isEmpty(val) {
233
- return val && Object.keys(val).length === 0 && val.constructor === Object;
234
- };
235
-
236
- var useClassname = function useClassname() {
237
- var _useTheme = useTheme(),
238
- css = _useTheme.css;
309
+ /**
310
+ * @internal
311
+ */
239
312
 
240
- for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {
241
- styles[_key] = arguments[_key];
242
- }
313
+ var __defaultTheme = {};
314
+ var InternalContext = /*#__PURE__*/React.createContext(__defaultTheme);
315
+ var useTheme = function useTheme() {
316
+ var theme = React.useContext(InternalContext);
317
+ /**
318
+ * We cast the theme here to `any` since our subset is not
319
+ * compatible with the typings of `theme-ui`, since they
320
+ * also support arrays as scale values, while we don't.
321
+ */
243
322
 
244
- return styles.map(function (style) {
245
- /**
246
- * emotion will create a `css-0` class whenever an empty object is
247
- * passed. Since this makes debugging harder we'll do not pass empty
248
- * objects to emotion.
249
- */
250
- var themedStyle = css(style);
251
- return isEmpty(themedStyle) ? '' : css$1.css(themedStyle);
252
- }).join(' ');
323
+ var css = React.useCallback(function (style) {
324
+ return css$1.css(style)(theme);
325
+ }, [theme]);
326
+ return {
327
+ theme: theme,
328
+ css: css
329
+ };
253
330
  };
331
+ function ThemeProvider(_ref) {
332
+ var theme = _ref.theme,
333
+ children = _ref.children;
334
+ return React__default.createElement(react.ThemeProvider, {
335
+ theme: theme
336
+ }, React__default.createElement(InternalContext.Provider, {
337
+ value: theme
338
+ }, children));
339
+ }
254
340
 
255
- var base$1 = /*#__PURE__*/css$1.css({
256
- boxSizing: 'border-box',
257
- margin: 0,
258
- padding: 0,
259
- minWidth: 0,
260
- fontSize: '100%',
261
- font: 'inherit',
262
- verticalAlign: 'baseline',
263
- WebkitTapHighlightColor: 'transparent'
264
- }); // Content
265
- // ---------------
266
-
267
- var block$1 = /*#__PURE__*/css$1.css({
268
- display: 'block'
269
- });
270
- var list$1 = /*#__PURE__*/css$1.css({// empty
271
- });
272
- var table$1 = /*#__PURE__*/css$1.css({
273
- borderCollapse: 'collapse',
274
- borderSpacing: 0
275
- }); // Typography
276
- // ---------------
341
+ /**
342
+ * CSS snippet and idea from:
343
+ * https://css-tricks.com/revisiting-prefers-reduced-motion-the-reduced-motion-media-query/
344
+ */
277
345
 
278
- var a$1 = /*#__PURE__*/css$1.css({
279
- textDecoration: 'none',
280
- touchAction: 'manipulation'
281
- });
282
- var quote$1 = /*#__PURE__*/css$1.css({
283
- quotes: 'none',
284
- selectors: {
285
- '&:before, &:after': {
286
- content: "''"
346
+ var reduceMotionStyles = {
347
+ '@media screen and (prefers-reduced-motion: reduce), (update: slow)': {
348
+ '*': {
349
+ animationDuration: '0.001ms !important',
350
+ animationIterationCount: '1 !important',
351
+ transitionDuration: '0.001ms !important'
287
352
  }
288
353
  }
289
- }); // Form Elements
290
- // ---------------
354
+ };
355
+ var Global = function Global() {
356
+ var _useTheme = useTheme(),
357
+ css = _useTheme.css;
291
358
 
292
- var button$1 = /*#__PURE__*/css$1.css({
293
- display: 'block',
294
- appearance: 'none',
295
- background: 'transparent',
296
- textAlign: 'center',
297
- touchAction: 'manipulation'
298
- });
299
- var input$1 = /*#__PURE__*/css$1.css({
300
- display: 'block',
301
- appearance: 'none',
302
- selectors: {
303
- '&::-ms-clear': {
304
- display: 'none'
359
+ var styles = css({
360
+ html: {
361
+ height: '100%',
362
+ variant: 'root.html'
305
363
  },
306
- '&::-webkit-search-cancel-button': {
307
- WebkitAppearance: 'none'
308
- }
309
- }
310
- });
311
- var select$1 = /*#__PURE__*/css$1.css({
312
- display: 'block',
313
- appearance: 'none',
314
- selectors: {
315
- '&::-ms-expand': {
316
- display: 'none'
364
+ body: {
365
+ height: '100%',
366
+ lineHeight: 1.5,
367
+ WebkitFontSmoothing: 'antialiased',
368
+ variant: 'root.body'
317
369
  }
318
- }
319
- });
320
- var textarea$1 = /*#__PURE__*/css$1.css({
321
- display: 'block',
322
- appearance: 'none'
323
- }); // Reset
324
- // ---------------
325
-
326
- var reset$1 = {
327
- article: block$1,
328
- aside: block$1,
329
- details: block$1,
330
- figcaption: block$1,
331
- figure: block$1,
332
- footer: block$1,
333
- header: block$1,
334
- hgroup: block$1,
335
- menu: block$1,
336
- nav: block$1,
337
- section: block$1,
338
- ul: list$1,
339
- ol: list$1,
340
- blockquote: quote$1,
341
- q: quote$1,
342
- a: a$1,
343
- base: base$1,
344
- table: table$1,
345
- select: select$1,
346
- button: button$1,
347
- textarea: textarea$1,
348
- input: input$1
370
+ });
371
+ return React__default.createElement(react.Global, {
372
+ styles: _extends({
373
+ reduceMotionStyles: reduceMotionStyles
374
+ }, styles)
375
+ });
349
376
  };
350
377
 
351
- /**
352
- * Hook that can adds base styles, reset for certain elements, variants and custom styles
353
- */
354
-
355
- var useStyles = function useStyles(_ref) {
356
- var element = _ref.element,
357
- _ref$css = _ref.css,
358
- styles = _ref$css === void 0 ? {} : _ref$css,
359
- variant = _ref.variant,
360
- _ref$className = _ref.className,
361
- className = _ref$className === void 0 ? '' : _ref$className;
362
-
363
- /**
364
- * Get reset styles. Base is always applied. An additional reset maybe applied
365
- * based on the passed element.
366
- *
367
- * We check the passed className if it already includes the reset styles so no
368
- * duplicates are applied.
369
- */
370
- var baseClassName = className.includes(reset$1.base) ? '' : reset$1.base;
371
- var resetClassName = typeof element === 'string' ? className.includes(reset$1[element]) ? '' : reset$1[element] : '';
372
- /**
373
- * Get variant styles (from theme).
374
- */
375
-
376
- var variants = Array.isArray(variant) ? variant.map(function (v) {
377
- return {
378
- variant: v
379
- };
380
- }) : [{
381
- variant: variant
382
- }];
383
- var variantsClassName = useClassname.apply(void 0, variants);
384
- /**
385
- * Custom styles are applied "on runtime". They are usually controlled via component
386
- * props and can change between component instances.
387
- */
388
-
389
- var customClassName = useClassname(styles);
390
- return [baseClassName, resetClassName, variantsClassName, customClassName, className].filter(Boolean).join(' ');
378
+ var _excluded$2 = ["size", "children"];
379
+ var css = /*#__PURE__*/system.getNormalizedStyles('svg');
380
+ var SVG = function SVG(_ref) {
381
+ var _ref$size = _ref.size,
382
+ size = _ref$size === void 0 ? 24 : _ref$size,
383
+ children = _ref.children,
384
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
385
+
386
+ return react.jsx('svg', _extends({
387
+ width: size,
388
+ height: size,
389
+ viewBox: '0 0 24 24',
390
+ fill: 'currentcolor'
391
+ }, props, {
392
+ css: css
393
+ }), children);
391
394
  };
392
395
 
393
- Object.defineProperty(exports, 'cache', {
394
- enumerable: true,
395
- get: function () {
396
- return css$1.cache;
397
- }
398
- });
399
- exports.Element = Element;
396
+ exports.Box = Box;
397
+ exports.Global = Global;
398
+ exports.SVG = SVG;
400
399
  exports.ThemeProvider = ThemeProvider;
401
- exports.useClassname = useClassname;
402
- exports.useStyles = useStyles;
400
+ exports.__defaultTheme = __defaultTheme;
401
+ exports.appendVariantState = appendVariantState;
402
+ exports.conditional = conditional;
403
+ exports.ensureArray = ensureArray;
404
+ exports.ensureArrayVariant = ensureArrayVariant;
405
+ exports.ensureVariantDefault = ensureVariantDefault;
406
+ exports.getNormalizedStyles = getNormalizedStyles;
407
+ exports.normalize = normalize;
403
408
  exports.useTheme = useTheme;
404
409
  //# sourceMappingURL=system.cjs.development.js.map