@marigold/system 0.1.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"system.cjs.production.min.js","sources":["../src/useTheme.tsx","../src/useClassname.ts","../src/reset.ts","../src/useStyles.ts"],"sourcesContent":["import React, { createContext, useCallback, useContext } from 'react';\nimport { css as themeUi } from '@theme-ui/css';\nimport { Theme } from '@marigold/system';\n\nimport { StyleObject } from './types';\n\nconst Context = createContext<Theme>({});\n\nexport const useTheme = () => {\n const theme = useContext(Context);\n const css = useCallback(\n (style: StyleObject) => themeUi(style)(theme),\n [theme]\n );\n return { theme, css };\n};\n\nexport type ThemeProviderProps = { theme: any };\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme,\n children,\n}) => <Context.Provider value={theme}>{children}</Context.Provider>;\n","import { css as emotion } from '@emotion/css';\nimport { StyleObject } from './types';\nimport { useTheme } from './useTheme';\n\n// 🤫 https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n// lodash.isEmpty is tooo much KBs!\nconst isEmpty = (val: any) =>\n val && Object.keys(val).length === 0 && val.constructor === Object;\n\nexport const useClassname = (...styles: StyleObject[]) => {\n const { css } = useTheme();\n return styles\n .map(style => {\n /**\n * emotion will create a `css-0` class whenever an empty object is\n * passed. Since this makes debugging harder we'll do not pass empty\n * objects to emotion.\n */\n const themedStyle = css(style);\n return isEmpty(themedStyle) ? '' : emotion(themedStyle);\n })\n .join(' ');\n};\n","import { css } from '@emotion/css';\n\nconst base = css({\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n minWidth: 0,\n fontSize: '100%',\n font: 'inherit',\n verticalAlign: 'baseline',\n WebkitTapHighlightColor: 'transparent',\n});\n\n// Content\n// ---------------\nconst block = css({\n display: 'block',\n});\n\nconst list = css({\n listStyle: 'none',\n});\n\nconst table = css({\n borderCollapse: 'collapse',\n borderSpacing: 0,\n});\n\n// Typography\n// ---------------\nconst a = css({\n textDecoration: 'none',\n touchAction: 'manipulation'\n});\n\nconst quote = css({\n quotes: 'none',\n selectors: {\n '&:before, &:after': {\n content: \"''\",\n },\n },\n});\n\n// Form Elements\n// ---------------\nconst button = css({\n display: 'block',\n appearance: 'none',\n background: 'transparent',\n textAlign: 'center',\n touchAction: 'manipulation'\n});\n\nconst input = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-clear': {\n display: 'none',\n },\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n});\n\nconst select = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-expand': {\n display: 'none',\n },\n },\n});\n\nconst textarea = css({\n display: 'block',\n appearance: 'none',\n});\n\n// Reset\n// ---------------\nexport const reset = {\n article: block,\n aside: block,\n details: block,\n figcaption: block,\n figure: block,\n footer: block,\n header: block,\n hgroup: block,\n menu: block,\n nav: block,\n section: block,\n ul: list,\n ol: list,\n blockquote: quote,\n q: quote,\n a,\n base,\n table,\n select,\n button,\n textarea,\n input,\n} as const;\n","import { ElementType } from 'react';\nimport { reset } from './reset';\nimport { CSSObject } from './types';\nimport { useClassname } from './useClassname';\n\nexport type UseStyleInput = {\n element?: ElementType;\n css?: Omit<CSSObject, 'variant' | 'element'> & {\n variant?: never;\n element?: never;\n };\n variant?: string | string[];\n className?: string;\n};\n\n/**\n * Hook that can adds base styles, reset for certain elements, variants and custom styles\n */\nexport const useStyles = ({\n element,\n css: styles = {},\n variant,\n className = '',\n}: UseStyleInput) => {\n /**\n * Get reset styles. Base is always applied. An additional reset maybe applied\n * based on the passed element.\n *\n * We check the passed className if it already includes the reset styles so no\n * duplicates are applied.\n */\n const baseClassName = className.includes(reset.base) ? '' : reset.base;\n const resetClassName =\n typeof element === 'string'\n ? className.includes((reset as { [key: string]: string })[element])\n ? ''\n : (reset as { [key: string]: string })[element]\n : '';\n\n /**\n * Get variant styles (from theme).\n */\n const variants = Array.isArray(variant)\n ? variant.map(v => ({ variant: v }))\n : [{ variant }];\n const variantsClassName = useClassname(...variants);\n\n /**\n * Custom styles are applied \"on runtime\". They are usually controlled via component\n * props and can change between component instances.\n */\n const customClassName = useClassname(styles);\n\n return [\n baseClassName,\n resetClassName,\n variantsClassName,\n customClassName,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n};\n"],"names":["Context","createContext","useTheme","theme","useContext","css","useCallback","style","themeUi","isEmpty","val","Object","keys","length","constructor","useClassname","styles","map","themedStyle","emotion","join","base","boxSizing","margin","padding","minWidth","fontSize","font","verticalAlign","WebkitTapHighlightColor","block","display","list","listStyle","table","borderCollapse","borderSpacing","a","textDecoration","touchAction","quote","quotes","selectors","content","button","appearance","background","textAlign","input","WebkitAppearance","reset","article","aside","details","figcaption","figure","footer","header","hgroup","menu","nav","section","ul","ol","blockquote","q","select","textarea","React","Provider","value","children","element","variant","className","baseClassName","includes","resetClassName","variants","Array","isArray","v","filter","Boolean"],"mappings":"kJAMMA,EAAUC,gBAAqB,IAExBC,EAAW,eAChBC,EAAQC,aAAWJ,GACnBK,EAAMC,eACV,SAACC,UAAuBC,MAAQD,EAARC,CAAeL,KACvC,CAACA,UAEI,CAAEA,MAAAA,EAAOE,IAAAA,ICRZI,EAAU,SAACC,UACfA,GAAmC,IAA5BC,OAAOC,KAAKF,GAAKG,QAAgBH,EAAII,cAAgBH,QAEjDI,EAAe,qBACVb,IAARG,IAAAA,uBADsBW,2BAAAA,yBAEvBA,EACJC,KAAI,SAAAV,OAMGW,EAAcb,EAAIE,UACjBE,EAAQS,GAAe,GAAKC,MAAQD,MAE5CE,KAAK,MCnBJC,EAAOhB,MAAI,CACfiB,UAAW,aACXC,OAAQ,EACRC,QAAS,EACTC,SAAU,EACVC,SAAU,OACVC,KAAM,UACNC,cAAe,WACfC,wBAAyB,gBAKrBC,EAAQzB,MAAI,CAChB0B,QAAS,UAGLC,EAAO3B,MAAI,CACf4B,UAAW,SAGPC,EAAQ7B,MAAI,CAChB8B,eAAgB,WAChBC,cAAe,IAKXC,EAAIhC,MAAI,CACZiC,eAAgB,OAChBC,YAAa,iBAGTC,EAAQnC,MAAI,CAChBoC,OAAQ,OACRC,UAAW,qBACY,CACnBC,QAAS,SAOTC,EAASvC,MAAI,CACjB0B,QAAS,QACTc,WAAY,OACZC,WAAY,cACZC,UAAW,SACXR,YAAa,iBAGTS,EAAQ3C,MAAI,CAChB0B,QAAS,QACTc,WAAY,OACZH,UAAW,gBACO,CACdX,QAAS,0CAEwB,CACjCkB,iBAAkB,WAsBXC,EAAQ,CACnBC,QAASrB,EACTsB,MAAOtB,EACPuB,QAASvB,EACTwB,WAAYxB,EACZyB,OAAQzB,EACR0B,OAAQ1B,EACR2B,OAAQ3B,EACR4B,OAAQ5B,EACR6B,KAAM7B,EACN8B,IAAK9B,EACL+B,QAAS/B,EACTgC,GAAI9B,EACJ+B,GAAI/B,EACJgC,WAAYxB,EACZyB,EAAGzB,EACHH,EAAAA,EACAhB,KAAAA,EACAa,MAAAA,EACAgC,OApCa7D,MAAI,CACjB0B,QAAS,QACTc,WAAY,OACZH,UAAW,iBACQ,CACfX,QAAS,WAgCba,OAAAA,EACAuB,SA5Be9D,MAAI,CACnB0B,QAAS,QACTc,WAAY,SA2BZG,MAAAA,+GFxFyD,mBAGrDoB,gBAACpE,EAAQqE,UAASC,QAFtBnE,SACAoE,oDGFuB,gBACvBC,IAAAA,YACAnE,IAAKW,aAAS,KACdyD,IAAAA,YACAC,UAAAA,aAAY,KASNC,EAAgBD,EAAUE,SAAS1B,EAAM7B,MAAQ,GAAK6B,EAAM7B,KAC5DwD,EACe,iBAAZL,EACHE,EAAUE,SAAU1B,EAAoCsB,IACtD,GACCtB,EAAoCsB,GACvC,GAKAM,EAAWC,MAAMC,QAAQP,GAC3BA,EAAQxD,KAAI,SAAAgE,SAAM,CAAER,QAASQ,MAC7B,CAAC,CAAER,QAAAA,UASA,CACLE,EACAE,EAVwB9D,eAAgB+D,GAMlB/D,EAAaC,GAOnC0D,GAECQ,OAAOC,SACP/D,KAAK"}
1
+ {"version":3,"file":"system.cjs.production.min.js","sources":["../src/normalize.ts","../src/useTheme.tsx","../src/Element.tsx","../src/useClassname.ts","../src/reset.ts","../src/useStyles.ts"],"sourcesContent":["import { ElementType } from 'react';\n\nconst base = {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n minWidth: 0,\n fontSize: '100%',\n fontFamily: 'inherit',\n verticalAlign: 'baseline',\n WebkitTapHighlightColor: 'transparent',\n} as const;\n\n// Content\n// ---------------\nconst block = {\n display: 'block',\n} as const;\n\nconst list = {\n // empty\n} as const;\n\nconst table = {\n borderCollapse: 'collapse',\n borderSpacing: 0,\n} as const;\n\n// Typography\n// ---------------\nconst a = {\n textDecoration: 'none',\n touchAction: 'manipulation',\n} as const;\n\nconst quote = {\n quotes: 'none',\n selectors: {\n '&:before, &:after': {\n content: \"''\",\n },\n },\n} as const;\n\n// Form Elements\n// ---------------\nconst button = {\n display: 'block',\n appearance: 'none',\n background: 'transparent',\n textAlign: 'center',\n touchAction: 'manipulation',\n} as const;\n\nconst input = {\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-clear': {\n display: 'none',\n },\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n} as const;\n\nconst select = {\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-expand': {\n display: 'none',\n },\n },\n} as const;\n\nconst textarea = {\n display: 'block',\n appearance: 'none',\n} as const;\n\n// Reset\n// ---------------\nconst reset = {\n article: block,\n aside: block,\n details: block,\n figcaption: block,\n figure: block,\n footer: block,\n header: block,\n hgroup: block,\n menu: block,\n nav: block,\n section: block,\n ul: list,\n ol: list,\n blockquote: quote,\n q: quote,\n a,\n base,\n table,\n select,\n button,\n textarea,\n input,\n} as const;\n\nexport type NormalizedElement = keyof typeof reset;\nconst isKnownElement = (input: string): input is NormalizedElement =>\n input in reset;\n\n/**\n * Helper to conveniently get reset styles.\n */\nexport const getNormalizedStyles = (input?: ElementType): object => {\n /**\n * If a React component is given, we don't apply any reset styles\n * and return the base reset.\n */\n if (typeof input !== 'string') {\n return reset.base;\n }\n\n /**\n * Try to find the reset style for a HTML element. If the element\n * is not included return empty styles.\n */\n return isKnownElement(input) ? reset[input] : {};\n};\n","import React, { createContext, useCallback, useContext } from 'react';\nimport { css as themeUi } from '@theme-ui/css';\nimport { Theme } from '@marigold/system';\n\nimport { StyleObject } from './types';\n\nconst Context = createContext<Theme>({});\n\nexport const useTheme = () => {\n const theme = useContext(Context);\n const css = useCallback(\n (style: StyleObject) => themeUi(style)(theme),\n [theme]\n );\n return { theme, css };\n};\n\nexport type ThemeProviderProps = { theme: any };\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme,\n children,\n}) => <Context.Provider value={theme}>{children}</Context.Provider>;\n","import { jsx } from '@emotion/react';\nimport { forwardRef } from 'react';\nimport {\n PolymorphicPropsWithRef,\n PolymorphicComponentWithRef,\n} from '@marigold/types';\n\nimport { getNormalizedStyles } from './normalize';\nimport { CSSObject } from './types';\nimport { useTheme } from './useTheme';\n\nexport type ElementOwnProps = {\n css?: CSSObject;\n variant?: string | string[];\n};\n\nexport type ElementProps = PolymorphicPropsWithRef<ElementOwnProps, 'div'>;\n\n/**\n * Function expression to check if there is any falsy value or empty object\n */\nconst isNotEmpty = (val: any) =>\n !(val && Object.keys(val).length === 0 && val.constructor === Object);\n\n/**\n * Get the normalized base styles\n */\nconst baseStyles = getNormalizedStyles('base');\n\nexport const Element: PolymorphicComponentWithRef<ElementOwnProps, 'div'> =\n forwardRef(\n ({ as = 'div', css: styles = {}, variant, children, ...props }, ref) => {\n const { css } = useTheme();\n\n /**\n * Transform variant input for `@theme-ui/css`\n */\n const variants = Array.isArray(variant)\n ? variant.map(v => ({ variant: v }))\n : [{ variant }];\n\n return jsx(\n as,\n {\n ...props,\n ...{\n css: [\n baseStyles,\n getNormalizedStyles(as),\n ...variants.map(v => css(v)),\n css(styles),\n ].filter(isNotEmpty),\n },\n ref,\n },\n children\n );\n }\n );\n","import { css as emotion } from '@emotion/css';\nimport { StyleObject } from './types';\nimport { useTheme } from './useTheme';\n\n// 🤫 https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n// lodash.isEmpty is tooo much KBs!\nconst isEmpty = (val: any) =>\n val && Object.keys(val).length === 0 && val.constructor === Object;\n\nexport const useClassname = (...styles: StyleObject[]) => {\n const { css } = useTheme();\n return styles\n .map(style => {\n /**\n * emotion will create a `css-0` class whenever an empty object is\n * passed. Since this makes debugging harder we'll do not pass empty\n * objects to emotion.\n */\n const themedStyle = css(style);\n return isEmpty(themedStyle) ? '' : emotion(themedStyle);\n })\n .join(' ');\n};\n","import { css } from '@emotion/css';\n\nconst base = css({\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n minWidth: 0,\n fontSize: '100%',\n font: 'inherit',\n verticalAlign: 'baseline',\n WebkitTapHighlightColor: 'transparent',\n});\n\n// Content\n// ---------------\nconst block = css({\n display: 'block',\n});\n\nconst list = css({\n // empty\n});\n\nconst table = css({\n borderCollapse: 'collapse',\n borderSpacing: 0,\n});\n\n// Typography\n// ---------------\nconst a = css({\n textDecoration: 'none',\n touchAction: 'manipulation',\n});\n\nconst quote = css({\n quotes: 'none',\n selectors: {\n '&:before, &:after': {\n content: \"''\",\n },\n },\n});\n\n// Form Elements\n// ---------------\nconst button = css({\n display: 'block',\n appearance: 'none',\n background: 'transparent',\n textAlign: 'center',\n touchAction: 'manipulation',\n});\n\nconst input = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-clear': {\n display: 'none',\n },\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n});\n\nconst select = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-expand': {\n display: 'none',\n },\n },\n});\n\nconst textarea = css({\n display: 'block',\n appearance: 'none',\n});\n\n// Reset\n// ---------------\nexport const reset = {\n article: block,\n aside: block,\n details: block,\n figcaption: block,\n figure: block,\n footer: block,\n header: block,\n hgroup: block,\n menu: block,\n nav: block,\n section: block,\n ul: list,\n ol: list,\n blockquote: quote,\n q: quote,\n a,\n base,\n table,\n select,\n button,\n textarea,\n input,\n} as const;\n","import { ElementType } from 'react';\nimport { reset } from './reset';\nimport { CSSObject } from './types';\nimport { useClassname } from './useClassname';\n\nexport type UseStyleInput = {\n element?: ElementType;\n css?: Omit<CSSObject, 'variant' | 'element'> & {\n variant?: never;\n element?: never;\n };\n variant?: string | string[];\n className?: string;\n};\n\n/**\n * Hook that can adds base styles, reset for certain elements, variants and custom styles\n */\nexport const useStyles = ({\n element,\n css: styles = {},\n variant,\n className = '',\n}: UseStyleInput) => {\n /**\n * Get reset styles. Base is always applied. An additional reset maybe applied\n * based on the passed element.\n *\n * We check the passed className if it already includes the reset styles so no\n * duplicates are applied.\n */\n const baseClassName = className.includes(reset.base) ? '' : reset.base;\n const resetClassName =\n typeof element === 'string'\n ? className.includes((reset as { [key: string]: string })[element])\n ? ''\n : (reset as { [key: string]: string })[element]\n : '';\n\n /**\n * Get variant styles (from theme).\n */\n const variants = Array.isArray(variant)\n ? variant.map(v => ({ variant: v }))\n : [{ variant }];\n const variantsClassName = useClassname(...variants);\n\n /**\n * Custom styles are applied \"on runtime\". They are usually controlled via component\n * props and can change between component instances.\n */\n const customClassName = useClassname(styles);\n\n return [\n baseClassName,\n resetClassName,\n variantsClassName,\n customClassName,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n};\n"],"names":["block","display","list","quote","quotes","selectors","content","reset","article","aside","details","figcaption","figure","footer","header","hgroup","menu","nav","section","ul","ol","blockquote","q","a","textDecoration","touchAction","base","boxSizing","margin","padding","minWidth","fontSize","fontFamily","verticalAlign","WebkitTapHighlightColor","table","borderCollapse","borderSpacing","select","appearance","button","background","textAlign","textarea","input","WebkitAppearance","getNormalizedStyles","isKnownElement","Context","createContext","useTheme","theme","useContext","css","useCallback","style","themeUi","isNotEmpty","val","Object","keys","length","constructor","baseStyles","Element","forwardRef","ref","as","styles","variant","children","props","variants","Array","isArray","map","v","jsx","filter","isEmpty","useClassname","themedStyle","emotion","join","font","React","Provider","value","element","className","baseClassName","includes","resetClassName","Boolean"],"mappings":"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"}
@@ -1,7 +1,162 @@
1
+ import { jsx } from '@emotion/react';
2
+ import React, { useContext, useCallback, createContext, forwardRef } from 'react';
3
+ import { css } from '@theme-ui/css';
1
4
  import { css as css$1 } from '@emotion/css';
2
5
  export { cache } from '@emotion/css';
3
- import React, { useContext, useCallback, createContext } from 'react';
4
- import { css } from '@theme-ui/css';
6
+
7
+ function _extends() {
8
+ _extends = Object.assign || function (target) {
9
+ for (var i = 1; i < arguments.length; i++) {
10
+ var source = arguments[i];
11
+
12
+ for (var key in source) {
13
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
14
+ target[key] = source[key];
15
+ }
16
+ }
17
+ }
18
+
19
+ return target;
20
+ };
21
+
22
+ return _extends.apply(this, arguments);
23
+ }
24
+
25
+ function _objectWithoutPropertiesLoose(source, excluded) {
26
+ if (source == null) return {};
27
+ var target = {};
28
+ var sourceKeys = Object.keys(source);
29
+ var key, i;
30
+
31
+ for (i = 0; i < sourceKeys.length; i++) {
32
+ key = sourceKeys[i];
33
+ if (excluded.indexOf(key) >= 0) continue;
34
+ target[key] = source[key];
35
+ }
36
+
37
+ return target;
38
+ }
39
+
40
+ var base = {
41
+ boxSizing: 'border-box',
42
+ 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
56
+ };
57
+ var table = {
58
+ borderCollapse: 'collapse',
59
+ borderSpacing: 0
60
+ }; // Typography
61
+ // ---------------
62
+
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
+ // ---------------
76
+
77
+ var button = {
78
+ display: 'block',
79
+ appearance: 'none',
80
+ background: 'transparent',
81
+ textAlign: 'center',
82
+ touchAction: 'manipulation'
83
+ };
84
+ var input = {
85
+ display: 'block',
86
+ appearance: 'none',
87
+ selectors: {
88
+ '&::-ms-clear': {
89
+ display: 'none'
90
+ },
91
+ '&::-webkit-search-cancel-button': {
92
+ WebkitAppearance: 'none'
93
+ }
94
+ }
95
+ };
96
+ var select = {
97
+ display: 'block',
98
+ appearance: 'none',
99
+ selectors: {
100
+ '&::-ms-expand': {
101
+ display: 'none'
102
+ }
103
+ }
104
+ };
105
+ var textarea = {
106
+ display: 'block',
107
+ appearance: 'none'
108
+ }; // Reset
109
+ // ---------------
110
+
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,
128
+ base: base,
129
+ table: table,
130
+ select: select,
131
+ button: button,
132
+ textarea: textarea,
133
+ input: input
134
+ };
135
+
136
+ var isKnownElement = function isKnownElement(input) {
137
+ return input in reset;
138
+ };
139
+ /**
140
+ * Helper to conveniently get reset styles.
141
+ */
142
+
143
+
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
+ */
156
+
157
+
158
+ return isKnownElement(input) ? reset[input] : {};
159
+ };
5
160
 
6
161
  var Context = /*#__PURE__*/createContext({});
7
162
  var useTheme = function useTheme() {
@@ -22,6 +177,52 @@ var ThemeProvider = function ThemeProvider(_ref) {
22
177
  }, children);
23
178
  };
24
179
 
180
+ var _excluded = ["as", "css", "variant", "children"];
181
+ /**
182
+ * Function expression to check if there is any falsy value or empty object
183
+ */
184
+
185
+ var isNotEmpty = function isNotEmpty(val) {
186
+ return !(val && Object.keys(val).length === 0 && val.constructor === Object);
187
+ };
188
+ /**
189
+ * Get the normalized base styles
190
+ */
191
+
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,
199
+ 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
+ */
208
+
209
+
210
+ var variants = Array.isArray(variant) ? variant.map(function (v) {
211
+ return {
212
+ variant: v
213
+ };
214
+ }) : [{
215
+ variant: variant
216
+ }];
217
+ 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
+ }, {
222
+ ref: ref
223
+ }), children);
224
+ });
225
+
25
226
  // lodash.isEmpty is tooo much KBs!
26
227
 
27
228
  var isEmpty = function isEmpty(val) {
@@ -47,7 +248,7 @@ var useClassname = function useClassname() {
47
248
  }).join(' ');
48
249
  };
49
250
 
50
- var base = /*#__PURE__*/css$1({
251
+ var base$1 = /*#__PURE__*/css$1({
51
252
  boxSizing: 'border-box',
52
253
  margin: 0,
53
254
  padding: 0,
@@ -59,23 +260,22 @@ var base = /*#__PURE__*/css$1({
59
260
  }); // Content
60
261
  // ---------------
61
262
 
62
- var block = /*#__PURE__*/css$1({
263
+ var block$1 = /*#__PURE__*/css$1({
63
264
  display: 'block'
64
265
  });
65
- var list = /*#__PURE__*/css$1({
66
- listStyle: 'none'
266
+ var list$1 = /*#__PURE__*/css$1({// empty
67
267
  });
68
- var table = /*#__PURE__*/css$1({
268
+ var table$1 = /*#__PURE__*/css$1({
69
269
  borderCollapse: 'collapse',
70
270
  borderSpacing: 0
71
271
  }); // Typography
72
272
  // ---------------
73
273
 
74
- var a = /*#__PURE__*/css$1({
274
+ var a$1 = /*#__PURE__*/css$1({
75
275
  textDecoration: 'none',
76
276
  touchAction: 'manipulation'
77
277
  });
78
- var quote = /*#__PURE__*/css$1({
278
+ var quote$1 = /*#__PURE__*/css$1({
79
279
  quotes: 'none',
80
280
  selectors: {
81
281
  '&:before, &:after': {
@@ -85,14 +285,14 @@ var quote = /*#__PURE__*/css$1({
85
285
  }); // Form Elements
86
286
  // ---------------
87
287
 
88
- var button = /*#__PURE__*/css$1({
288
+ var button$1 = /*#__PURE__*/css$1({
89
289
  display: 'block',
90
290
  appearance: 'none',
91
291
  background: 'transparent',
92
292
  textAlign: 'center',
93
293
  touchAction: 'manipulation'
94
294
  });
95
- var input = /*#__PURE__*/css$1({
295
+ var input$1 = /*#__PURE__*/css$1({
96
296
  display: 'block',
97
297
  appearance: 'none',
98
298
  selectors: {
@@ -104,7 +304,7 @@ var input = /*#__PURE__*/css$1({
104
304
  }
105
305
  }
106
306
  });
107
- var select = /*#__PURE__*/css$1({
307
+ var select$1 = /*#__PURE__*/css$1({
108
308
  display: 'block',
109
309
  appearance: 'none',
110
310
  selectors: {
@@ -113,35 +313,35 @@ var select = /*#__PURE__*/css$1({
113
313
  }
114
314
  }
115
315
  });
116
- var textarea = /*#__PURE__*/css$1({
316
+ var textarea$1 = /*#__PURE__*/css$1({
117
317
  display: 'block',
118
318
  appearance: 'none'
119
319
  }); // Reset
120
320
  // ---------------
121
321
 
122
- var reset = {
123
- article: block,
124
- aside: block,
125
- details: block,
126
- figcaption: block,
127
- figure: block,
128
- footer: block,
129
- header: block,
130
- hgroup: block,
131
- menu: block,
132
- nav: block,
133
- section: block,
134
- ul: list,
135
- ol: list,
136
- blockquote: quote,
137
- q: quote,
138
- a: a,
139
- base: base,
140
- table: table,
141
- select: select,
142
- button: button,
143
- textarea: textarea,
144
- input: input
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
145
345
  };
146
346
 
147
347
  /**
@@ -163,8 +363,8 @@ var useStyles = function useStyles(_ref) {
163
363
  * We check the passed className if it already includes the reset styles so no
164
364
  * duplicates are applied.
165
365
  */
166
- var baseClassName = className.includes(reset.base) ? '' : reset.base;
167
- var resetClassName = typeof element === 'string' ? className.includes(reset[element]) ? '' : reset[element] : '';
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] : '';
168
368
  /**
169
369
  * Get variant styles (from theme).
170
370
  */
@@ -186,5 +386,5 @@ var useStyles = function useStyles(_ref) {
186
386
  return [baseClassName, resetClassName, variantsClassName, customClassName, className].filter(Boolean).join(' ');
187
387
  };
188
388
 
189
- export { ThemeProvider, useClassname, useStyles, useTheme };
389
+ export { Element, ThemeProvider, useClassname, useStyles, useTheme };
190
390
  //# sourceMappingURL=system.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system.esm.js","sources":["../src/useTheme.tsx","../src/useClassname.ts","../src/reset.ts","../src/useStyles.ts"],"sourcesContent":["import React, { createContext, useCallback, useContext } from 'react';\nimport { css as themeUi } from '@theme-ui/css';\nimport { Theme } from '@marigold/system';\n\nimport { StyleObject } from './types';\n\nconst Context = createContext<Theme>({});\n\nexport const useTheme = () => {\n const theme = useContext(Context);\n const css = useCallback(\n (style: StyleObject) => themeUi(style)(theme),\n [theme]\n );\n return { theme, css };\n};\n\nexport type ThemeProviderProps = { theme: any };\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme,\n children,\n}) => <Context.Provider value={theme}>{children}</Context.Provider>;\n","import { css as emotion } from '@emotion/css';\nimport { StyleObject } from './types';\nimport { useTheme } from './useTheme';\n\n// 🤫 https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n// lodash.isEmpty is tooo much KBs!\nconst isEmpty = (val: any) =>\n val && Object.keys(val).length === 0 && val.constructor === Object;\n\nexport const useClassname = (...styles: StyleObject[]) => {\n const { css } = useTheme();\n return styles\n .map(style => {\n /**\n * emotion will create a `css-0` class whenever an empty object is\n * passed. Since this makes debugging harder we'll do not pass empty\n * objects to emotion.\n */\n const themedStyle = css(style);\n return isEmpty(themedStyle) ? '' : emotion(themedStyle);\n })\n .join(' ');\n};\n","import { css } from '@emotion/css';\n\nconst base = css({\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n minWidth: 0,\n fontSize: '100%',\n font: 'inherit',\n verticalAlign: 'baseline',\n WebkitTapHighlightColor: 'transparent',\n});\n\n// Content\n// ---------------\nconst block = css({\n display: 'block',\n});\n\nconst list = css({\n listStyle: 'none',\n});\n\nconst table = css({\n borderCollapse: 'collapse',\n borderSpacing: 0,\n});\n\n// Typography\n// ---------------\nconst a = css({\n textDecoration: 'none',\n touchAction: 'manipulation'\n});\n\nconst quote = css({\n quotes: 'none',\n selectors: {\n '&:before, &:after': {\n content: \"''\",\n },\n },\n});\n\n// Form Elements\n// ---------------\nconst button = css({\n display: 'block',\n appearance: 'none',\n background: 'transparent',\n textAlign: 'center',\n touchAction: 'manipulation'\n});\n\nconst input = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-clear': {\n display: 'none',\n },\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n});\n\nconst select = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-expand': {\n display: 'none',\n },\n },\n});\n\nconst textarea = css({\n display: 'block',\n appearance: 'none',\n});\n\n// Reset\n// ---------------\nexport const reset = {\n article: block,\n aside: block,\n details: block,\n figcaption: block,\n figure: block,\n footer: block,\n header: block,\n hgroup: block,\n menu: block,\n nav: block,\n section: block,\n ul: list,\n ol: list,\n blockquote: quote,\n q: quote,\n a,\n base,\n table,\n select,\n button,\n textarea,\n input,\n} as const;\n","import { ElementType } from 'react';\nimport { reset } from './reset';\nimport { CSSObject } from './types';\nimport { useClassname } from './useClassname';\n\nexport type UseStyleInput = {\n element?: ElementType;\n css?: Omit<CSSObject, 'variant' | 'element'> & {\n variant?: never;\n element?: never;\n };\n variant?: string | string[];\n className?: string;\n};\n\n/**\n * Hook that can adds base styles, reset for certain elements, variants and custom styles\n */\nexport const useStyles = ({\n element,\n css: styles = {},\n variant,\n className = '',\n}: UseStyleInput) => {\n /**\n * Get reset styles. Base is always applied. An additional reset maybe applied\n * based on the passed element.\n *\n * We check the passed className if it already includes the reset styles so no\n * duplicates are applied.\n */\n const baseClassName = className.includes(reset.base) ? '' : reset.base;\n const resetClassName =\n typeof element === 'string'\n ? className.includes((reset as { [key: string]: string })[element])\n ? ''\n : (reset as { [key: string]: string })[element]\n : '';\n\n /**\n * Get variant styles (from theme).\n */\n const variants = Array.isArray(variant)\n ? variant.map(v => ({ variant: v }))\n : [{ variant }];\n const variantsClassName = useClassname(...variants);\n\n /**\n * Custom styles are applied \"on runtime\". They are usually controlled via component\n * props and can change between component instances.\n */\n const customClassName = useClassname(styles);\n\n return [\n baseClassName,\n resetClassName,\n variantsClassName,\n customClassName,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n};\n"],"names":["Context","createContext","useTheme","theme","useContext","css","useCallback","style","themeUi","ThemeProvider","children","React","Provider","value","isEmpty","val","Object","keys","length","constructor","useClassname","styles","map","themedStyle","emotion","join","base","boxSizing","margin","padding","minWidth","fontSize","font","verticalAlign","WebkitTapHighlightColor","block","display","list","listStyle","table","borderCollapse","borderSpacing","a","textDecoration","touchAction","quote","quotes","selectors","content","button","appearance","background","textAlign","input","WebkitAppearance","select","textarea","reset","article","aside","details","figcaption","figure","footer","header","hgroup","menu","nav","section","ul","ol","blockquote","q","useStyles","element","variant","className","baseClassName","includes","resetClassName","variants","Array","isArray","v","variantsClassName","customClassName","filter","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"system.esm.js","sources":["../src/normalize.ts","../src/useTheme.tsx","../src/Element.tsx","../src/useClassname.ts","../src/reset.ts","../src/useStyles.ts"],"sourcesContent":["import { ElementType } from 'react';\n\nconst base = {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n minWidth: 0,\n fontSize: '100%',\n fontFamily: 'inherit',\n verticalAlign: 'baseline',\n WebkitTapHighlightColor: 'transparent',\n} as const;\n\n// Content\n// ---------------\nconst block = {\n display: 'block',\n} as const;\n\nconst list = {\n // empty\n} as const;\n\nconst table = {\n borderCollapse: 'collapse',\n borderSpacing: 0,\n} as const;\n\n// Typography\n// ---------------\nconst a = {\n textDecoration: 'none',\n touchAction: 'manipulation',\n} as const;\n\nconst quote = {\n quotes: 'none',\n selectors: {\n '&:before, &:after': {\n content: \"''\",\n },\n },\n} as const;\n\n// Form Elements\n// ---------------\nconst button = {\n display: 'block',\n appearance: 'none',\n background: 'transparent',\n textAlign: 'center',\n touchAction: 'manipulation',\n} as const;\n\nconst input = {\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-clear': {\n display: 'none',\n },\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n} as const;\n\nconst select = {\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-expand': {\n display: 'none',\n },\n },\n} as const;\n\nconst textarea = {\n display: 'block',\n appearance: 'none',\n} as const;\n\n// Reset\n// ---------------\nconst reset = {\n article: block,\n aside: block,\n details: block,\n figcaption: block,\n figure: block,\n footer: block,\n header: block,\n hgroup: block,\n menu: block,\n nav: block,\n section: block,\n ul: list,\n ol: list,\n blockquote: quote,\n q: quote,\n a,\n base,\n table,\n select,\n button,\n textarea,\n input,\n} as const;\n\nexport type NormalizedElement = keyof typeof reset;\nconst isKnownElement = (input: string): input is NormalizedElement =>\n input in reset;\n\n/**\n * Helper to conveniently get reset styles.\n */\nexport const getNormalizedStyles = (input?: ElementType): object => {\n /**\n * If a React component is given, we don't apply any reset styles\n * and return the base reset.\n */\n if (typeof input !== 'string') {\n return reset.base;\n }\n\n /**\n * Try to find the reset style for a HTML element. If the element\n * is not included return empty styles.\n */\n return isKnownElement(input) ? reset[input] : {};\n};\n","import React, { createContext, useCallback, useContext } from 'react';\nimport { css as themeUi } from '@theme-ui/css';\nimport { Theme } from '@marigold/system';\n\nimport { StyleObject } from './types';\n\nconst Context = createContext<Theme>({});\n\nexport const useTheme = () => {\n const theme = useContext(Context);\n const css = useCallback(\n (style: StyleObject) => themeUi(style)(theme),\n [theme]\n );\n return { theme, css };\n};\n\nexport type ThemeProviderProps = { theme: any };\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme,\n children,\n}) => <Context.Provider value={theme}>{children}</Context.Provider>;\n","import { jsx } from '@emotion/react';\nimport { forwardRef } from 'react';\nimport {\n PolymorphicPropsWithRef,\n PolymorphicComponentWithRef,\n} from '@marigold/types';\n\nimport { getNormalizedStyles } from './normalize';\nimport { CSSObject } from './types';\nimport { useTheme } from './useTheme';\n\nexport type ElementOwnProps = {\n css?: CSSObject;\n variant?: string | string[];\n};\n\nexport type ElementProps = PolymorphicPropsWithRef<ElementOwnProps, 'div'>;\n\n/**\n * Function expression to check if there is any falsy value or empty object\n */\nconst isNotEmpty = (val: any) =>\n !(val && Object.keys(val).length === 0 && val.constructor === Object);\n\n/**\n * Get the normalized base styles\n */\nconst baseStyles = getNormalizedStyles('base');\n\nexport const Element: PolymorphicComponentWithRef<ElementOwnProps, 'div'> =\n forwardRef(\n ({ as = 'div', css: styles = {}, variant, children, ...props }, ref) => {\n const { css } = useTheme();\n\n /**\n * Transform variant input for `@theme-ui/css`\n */\n const variants = Array.isArray(variant)\n ? variant.map(v => ({ variant: v }))\n : [{ variant }];\n\n return jsx(\n as,\n {\n ...props,\n ...{\n css: [\n baseStyles,\n getNormalizedStyles(as),\n ...variants.map(v => css(v)),\n css(styles),\n ].filter(isNotEmpty),\n },\n ref,\n },\n children\n );\n }\n );\n","import { css as emotion } from '@emotion/css';\nimport { StyleObject } from './types';\nimport { useTheme } from './useTheme';\n\n// 🤫 https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n// lodash.isEmpty is tooo much KBs!\nconst isEmpty = (val: any) =>\n val && Object.keys(val).length === 0 && val.constructor === Object;\n\nexport const useClassname = (...styles: StyleObject[]) => {\n const { css } = useTheme();\n return styles\n .map(style => {\n /**\n * emotion will create a `css-0` class whenever an empty object is\n * passed. Since this makes debugging harder we'll do not pass empty\n * objects to emotion.\n */\n const themedStyle = css(style);\n return isEmpty(themedStyle) ? '' : emotion(themedStyle);\n })\n .join(' ');\n};\n","import { css } from '@emotion/css';\n\nconst base = css({\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n minWidth: 0,\n fontSize: '100%',\n font: 'inherit',\n verticalAlign: 'baseline',\n WebkitTapHighlightColor: 'transparent',\n});\n\n// Content\n// ---------------\nconst block = css({\n display: 'block',\n});\n\nconst list = css({\n // empty\n});\n\nconst table = css({\n borderCollapse: 'collapse',\n borderSpacing: 0,\n});\n\n// Typography\n// ---------------\nconst a = css({\n textDecoration: 'none',\n touchAction: 'manipulation',\n});\n\nconst quote = css({\n quotes: 'none',\n selectors: {\n '&:before, &:after': {\n content: \"''\",\n },\n },\n});\n\n// Form Elements\n// ---------------\nconst button = css({\n display: 'block',\n appearance: 'none',\n background: 'transparent',\n textAlign: 'center',\n touchAction: 'manipulation',\n});\n\nconst input = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-clear': {\n display: 'none',\n },\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n});\n\nconst select = css({\n display: 'block',\n appearance: 'none',\n selectors: {\n '&::-ms-expand': {\n display: 'none',\n },\n },\n});\n\nconst textarea = css({\n display: 'block',\n appearance: 'none',\n});\n\n// Reset\n// ---------------\nexport const reset = {\n article: block,\n aside: block,\n details: block,\n figcaption: block,\n figure: block,\n footer: block,\n header: block,\n hgroup: block,\n menu: block,\n nav: block,\n section: block,\n ul: list,\n ol: list,\n blockquote: quote,\n q: quote,\n a,\n base,\n table,\n select,\n button,\n textarea,\n input,\n} as const;\n","import { ElementType } from 'react';\nimport { reset } from './reset';\nimport { CSSObject } from './types';\nimport { useClassname } from './useClassname';\n\nexport type UseStyleInput = {\n element?: ElementType;\n css?: Omit<CSSObject, 'variant' | 'element'> & {\n variant?: never;\n element?: never;\n };\n variant?: string | string[];\n className?: string;\n};\n\n/**\n * Hook that can adds base styles, reset for certain elements, variants and custom styles\n */\nexport const useStyles = ({\n element,\n css: styles = {},\n variant,\n className = '',\n}: UseStyleInput) => {\n /**\n * Get reset styles. Base is always applied. An additional reset maybe applied\n * based on the passed element.\n *\n * We check the passed className if it already includes the reset styles so no\n * duplicates are applied.\n */\n const baseClassName = className.includes(reset.base) ? '' : reset.base;\n const resetClassName =\n typeof element === 'string'\n ? className.includes((reset as { [key: string]: string })[element])\n ? ''\n : (reset as { [key: string]: string })[element]\n : '';\n\n /**\n * Get variant styles (from theme).\n */\n const variants = Array.isArray(variant)\n ? variant.map(v => ({ variant: v }))\n : [{ variant }];\n const variantsClassName = useClassname(...variants);\n\n /**\n * Custom styles are applied \"on runtime\". They are usually controlled via component\n * props and can change between component instances.\n */\n const customClassName = useClassname(styles);\n\n return [\n baseClassName,\n resetClassName,\n variantsClassName,\n customClassName,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n};\n"],"names":["base","boxSizing","margin","padding","minWidth","fontSize","fontFamily","verticalAlign","WebkitTapHighlightColor","block","display","list","table","borderCollapse","borderSpacing","a","textDecoration","touchAction","quote","quotes","selectors","content","button","appearance","background","textAlign","input","WebkitAppearance","select","textarea","reset","article","aside","details","figcaption","figure","footer","header","hgroup","menu","nav","section","ul","ol","blockquote","q","isKnownElement","getNormalizedStyles","Context","createContext","useTheme","theme","useContext","css","useCallback","style","themeUi","ThemeProvider","children","React","Provider","value","isNotEmpty","val","Object","keys","length","constructor","baseStyles","Element","forwardRef","ref","as","styles","variant","props","variants","Array","isArray","map","v","jsx","filter","isEmpty","useClassname","themedStyle","emotion","join","font","useStyles","element","className","baseClassName","includes","resetClassName","variantsClassName","customClassName","Boolean"],"mappings":"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"}
package/package.json CHANGED
@@ -1,22 +1,21 @@
1
1
  {
2
2
  "name": "@marigold/system",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Marigold System Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/system.esm.js",
7
7
  "typings": "dist/index.d.ts",
8
8
  "license": "MIT",
9
9
  "dependencies": {
10
- "@emotion/css": "11.1.3",
11
- "@theme-ui/css": "0.10.1"
10
+ "@emotion/css": "11.5.0",
11
+ "@emotion/react": "11.5.0",
12
+ "@theme-ui/css": "0.12.0",
13
+ "csstype": "3.0.9"
12
14
  },
13
15
  "peerDependencies": {
14
16
  "react": "^16.x || ^17.0.0",
15
17
  "react-dom": "^16.x || ^17.0.0"
16
18
  },
17
- "devDependencies": {
18
- "csstype": "3.0.8"
19
- },
20
19
  "scripts": {
21
20
  "build": "tsdx build --tsconfig tsconfig.build.json --transpileOnly",
22
21
  "watch": "tsdx watch --tsconfig tsconfig.build.json --transpileOnly"