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