@symbo.ls/uikit 2.7.7 → 2.7.15

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 (56) hide show
  1. package/README.md +3 -6
  2. package/package.json +30 -39
  3. package/src/Banner/index.js +23 -0
  4. package/src/Banner/style.js +27 -0
  5. package/src/Box.js +16 -0
  6. package/src/Button.js +48 -0
  7. package/src/ButtonSet.js +9 -0
  8. package/src/Collection.js +82 -0
  9. package/src/DatePicker/index.js +155 -0
  10. package/src/DatePicker/style.js +18 -0
  11. package/src/Dropdown.js +51 -0
  12. package/src/Field.js +41 -0
  13. package/src/GridLayouts/index.js +20 -0
  14. package/src/GridLayouts/style.js +47 -0
  15. package/src/Icon.js +34 -0
  16. package/src/IconText.js +20 -0
  17. package/src/Input.js +32 -0
  18. package/src/Label.js +25 -0
  19. package/src/Link.js +20 -0
  20. package/src/Notification.js +46 -0
  21. package/src/Pills.js +25 -0
  22. package/src/Range.js +132 -0
  23. package/src/Select.js +36 -0
  24. package/src/Sidebar.js +23 -0
  25. package/src/TextArea.js +15 -0
  26. package/src/Tooltip.js +37 -0
  27. package/src/User.js +32 -0
  28. package/src/__/Media copy.js +121 -0
  29. package/src/atoms/Animation.js +53 -0
  30. package/src/atoms/Block.js +151 -0
  31. package/src/atoms/Direction.js +10 -0
  32. package/src/atoms/Flex.js +17 -0
  33. package/src/atoms/Form.js +11 -0
  34. package/src/atoms/Grid.js +30 -0
  35. package/src/atoms/Iframe.js +16 -0
  36. package/src/atoms/Img.js +17 -0
  37. package/src/atoms/Interaction.js +9 -0
  38. package/src/atoms/InteractiveComponent.js +78 -0
  39. package/src/atoms/Media.js +164 -0
  40. package/src/atoms/Overflow.js +7 -0
  41. package/src/atoms/Picture.js +31 -0
  42. package/src/atoms/Position.js +21 -0
  43. package/src/atoms/Pseudo.js +7 -0
  44. package/src/atoms/SVG.js +16 -0
  45. package/src/atoms/Shape/index.js +42 -0
  46. package/src/atoms/Shape/style.js +204 -0
  47. package/src/atoms/Text.js +40 -0
  48. package/src/atoms/Theme.js +136 -0
  49. package/src/atoms/Timing.js +55 -0
  50. package/src/atoms/Transform.js +8 -0
  51. package/src/atoms/XYZ.js +7 -0
  52. package/src/atoms/index.js +24 -0
  53. package/src/index.js +32 -0
  54. package/src/styles.js +6 -0
  55. package/index.js +0 -30
  56. package/react.js +0 -8
@@ -0,0 +1,204 @@
1
+ 'use strict'
2
+
3
+ import { UNIT, getColor, getTheme } from '@symbo.ls/scratch' // eslint-disable-line no-unused-vars
4
+ import { Timing } from '../Timing'
5
+
6
+ export const depth = {
7
+ 4: { boxShadow: `rgba(0,0,0,.10) 0 2${UNIT.default} 4${UNIT.default}` },
8
+ 6: { boxShadow: `rgba(0,0,0,.10) 0 3${UNIT.default} 6${UNIT.default}` },
9
+ 10: { boxShadow: `rgba(0,0,0,.10) 0 4${UNIT.default} 10${UNIT.default}` },
10
+ 16: { boxShadow: `rgba(0,0,0,.10) 0 8${UNIT.default} 16${UNIT.default}` },
11
+ 26: { boxShadow: `rgba(0,0,0,.10) 0 14${UNIT.default} 26${UNIT.default}` },
12
+ 42: { boxShadow: `rgba(0,0,0,.10) 0 20${UNIT.default} 42${UNIT.default}` }
13
+ }
14
+
15
+ const getComputedBackgroundColor = ({ props }) => {
16
+ return getColor(props.borderColor) || getColor(props.backgroundColor) || getColor(props.background)
17
+ }
18
+
19
+ const inheritTransition = (el) => {
20
+ const exec = Timing.class.transition(el)
21
+ return exec && exec['transition']
22
+ }
23
+
24
+ export const SHAPES = {
25
+ rectangle: {},
26
+ circle: { borderRadius: '100%' },
27
+ bubble: {},
28
+ tv: {
29
+ borderRadius: '1.15em/2.5em'
30
+ },
31
+
32
+ tooltip: el => ({
33
+ position: el.props.position || 'relative',
34
+ '&:before': {
35
+ content: '""',
36
+ display: 'block',
37
+ width: '0px',
38
+ height: '0px',
39
+ border: `.35em solid`,
40
+ borderColor: getComputedBackgroundColor(el),
41
+ transition: inheritTransition(el),
42
+ transitionProperty: 'border-color',
43
+ position: 'absolute',
44
+ borderRadius: '.15em'
45
+ }
46
+ }),
47
+
48
+ tooltipDirection: {
49
+ top: {
50
+ '&:before': {
51
+ top: '0',
52
+ left: '50%',
53
+ transform: 'translate(-50%, -50%) rotate(45deg)'
54
+ }
55
+ },
56
+ right: {
57
+ '&:before': {
58
+ top: '50%',
59
+ right: '0',
60
+ transform: 'translate(50%, -50%) rotate(45deg)'
61
+ }
62
+ },
63
+ bottom: {
64
+ '&:before': {
65
+ bottom: '0',
66
+ left: '50%',
67
+ transform: 'translate(-50%, 50%) rotate(45deg)'
68
+ }
69
+ },
70
+ left: {
71
+ '&:before': {
72
+ top: '50%',
73
+ left: '0',
74
+ transform: 'translate(-50%, -50%) rotate(45deg)'
75
+ }
76
+ }
77
+ },
78
+
79
+ tag: el => ({
80
+ position: 'relative',
81
+ '&:before': {
82
+ content: '""',
83
+ display: 'block',
84
+ background: getComputedBackgroundColor(el),
85
+ transition: inheritTransition(el),
86
+ transitionProperty: 'background',
87
+ borderRadius: '.25em',
88
+ position: 'absolute',
89
+ zIndex: '-1',
90
+ aspectRatio: '1/1',
91
+ top: '50%',
92
+ transformOrigin: '50% 50%',
93
+ height: '73%'
94
+ }
95
+ }),
96
+
97
+ tagDirection: {
98
+ top: {
99
+ '&:before': {
100
+ bottom: '100%',
101
+ left: '50%',
102
+ transform: 'translate(-50%, 50%) rotate(45deg)'
103
+ }
104
+ },
105
+ right: {
106
+ '&:before': {
107
+ top: '50%',
108
+ left: '100%',
109
+ transform: 'translate(-50%, -50%) rotate(45deg)'
110
+ }
111
+ },
112
+ bottom: {
113
+ '&:before': {
114
+ top: '100%',
115
+ left: '50%',
116
+ transform: 'translate(-50%, -50%) rotate(45deg)'
117
+ }
118
+ },
119
+ left: {
120
+ '&:before': {
121
+ top: '50%',
122
+ right: '100%',
123
+ transform: 'translate(50%, -50%) rotate(45deg)'
124
+ }
125
+ }
126
+ },
127
+
128
+ hexagon: el => ({
129
+ position: 'relative',
130
+ '&:before, &:after': {
131
+ content: '""',
132
+ display: 'block',
133
+ position: 'absolute',
134
+ zIndex: '-1',
135
+ borderRadius: '.25em',
136
+ aspectRatio: '1/1',
137
+ top: '50%',
138
+ transformOrigin: '50% 50%',
139
+ height: '73%',
140
+ background: getComputedBackgroundColor(el),
141
+ transition: inheritTransition(el),
142
+ transitionProperty: 'background'
143
+ },
144
+ '&:before': {
145
+ left: '0',
146
+ transform: 'translate3d(-50%, -50%, 1px) rotate(45deg)'
147
+ },
148
+ '&:after': {
149
+ left: '100%',
150
+ transform: 'translate3d(-50%, -50%, 1px) rotate(45deg)'
151
+ }
152
+ }),
153
+
154
+ chevron: el => ({
155
+ position: 'relative',
156
+ // overflow: 'hidden',
157
+ '&:before, &:after': {
158
+ content: '""',
159
+ display: 'block',
160
+ position: 'absolute',
161
+ zIndex: '-1',
162
+ aspectRatio: '1/1',
163
+ top: '50%',
164
+ transformOrigin: '50% 50%',
165
+ transition: inheritTransition(el),
166
+ transitionProperty: 'background'
167
+
168
+ },
169
+ '&:before': {
170
+ background: `linear-gradient(225deg, ${getComputedBackgroundColor(el)} 25%, transparent 25%), linear-gradient(315deg, ${getComputedBackgroundColor(el)} 25%, transparent 25%)`
171
+ },
172
+ '&:after': {
173
+ background: getComputedBackgroundColor(el),
174
+ borderRadius: '.25em'
175
+ }
176
+ }),
177
+
178
+ chevronDirection: {
179
+ left: {
180
+ '&:before': {
181
+ height: '100%',
182
+ left: '100%',
183
+ transform: 'translate3d(-1%, -50%, 1px) scale(-1, 1)'
184
+ },
185
+ '&:after': {
186
+ height: '73%',
187
+ left: '0',
188
+ transform: 'translate3d(-50%, -50%, 1px) rotate(45deg)'
189
+ }
190
+ },
191
+ right: {
192
+ '&:before': {
193
+ height: '100%',
194
+ left: '0',
195
+ transform: 'translate3d(-99%, -50%, 1px)'
196
+ },
197
+ '&:after': {
198
+ height: '73%',
199
+ left: '100%',
200
+ transform: 'translate3d(-50%, -50%, 1px) rotate(45deg)'
201
+ }
202
+ }
203
+ }
204
+ }
@@ -0,0 +1,40 @@
1
+ 'use strict'
2
+
3
+ import { getFontSizeByKey, getFontFamily } from '@symbo.ls/scratch'
4
+
5
+ export const Text = {
6
+ text: ({ key, props, state }) => {
7
+ if (props.text === true) return (state && state[key]) || (props && props[key])
8
+ return props.text
9
+ },
10
+ class: {
11
+ fontSize: ({ props }) => props.fontSize ? getFontSizeByKey(props.fontSize) : null,
12
+ fontFamily: ({ props }) => props.fontFamily && ({ fontFamily: getFontFamily(props.fontFamily) || props.fontFamily }),
13
+ lineHeight: ({ props }) => props.lineHeight && ({ lineHeight: props.lineHeight }),
14
+ // lineHeight: ({ props }) => props.lineHeight && getSpacingBasedOnRatio(props, 'lineHeight', null, ''),
15
+ textDecoration: ({ props }) => props.textDecoration && ({ textDecoration: props.textDecoration }),
16
+ textTransform: ({ props }) => props.textTransform && ({ textTransform: props.textTransform }),
17
+ whiteSpace: ({ props }) => props.whiteSpace && ({ whiteSpace: props.whiteSpace }),
18
+ letterSpacing: ({ props }) => props.letterSpacing && ({ letterSpacing: props.letterSpacing }),
19
+ textAlign: ({ props }) => props.textAlign && ({ textAlign: props.textAlign }),
20
+ fontWeight: ({ props }) => props.fontWeight && ({
21
+ fontWeight: props.fontWeight,
22
+ fontVariationSettings: '"wght" ' + props.fontWeight
23
+ })
24
+ }
25
+ }
26
+
27
+ export const H1 = { tag: 'h1' }
28
+ export const H2 = { tag: 'h2' }
29
+ export const H3 = { tag: 'h3' }
30
+ export const H4 = { tag: 'h4' }
31
+ export const H5 = { tag: 'h5' }
32
+ export const H6 = { tag: 'h6' }
33
+ export const P = { tag: 'p' }
34
+ export const Caption = { tag: 'caption' }
35
+ export const Strong = {
36
+ tag: 'strong',
37
+ props: { fontWeight: '700' }
38
+ }
39
+ export const Underline = { tag: 'u' }
40
+ export const Italic = { tag: 'i' }
@@ -0,0 +1,136 @@
1
+ 'use strict'
2
+
3
+ import { getSpacingByKey, getMediaTheme, getColor, getMediaColor } from '@symbo.ls/scratch'
4
+
5
+ import { depth } from './Shape/style'
6
+
7
+ const isBorderStyle = str =>
8
+ ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset', 'initial'].some(v => str.includes(v))
9
+
10
+ const transformBorder = border => {
11
+ const arr = border.split(', ')
12
+ return arr.map(v => {
13
+ v = v.trim()
14
+ if (v.slice(0, 2) === '--') return `var(${v})`
15
+ else if (isBorderStyle(v)) return v || 'solid'
16
+ else if (v.slice(-2) === 'px' || v.slice(-2) === 'em') return v // TODO: add map spacing
17
+ else if (getColor(v).length > 2) return getColor(v)
18
+ return getSpacingByKey(v, 'border').border
19
+ }).join(' ')
20
+ }
21
+
22
+ const transformTextStroke = stroke => ({
23
+ WebkitTextStroke: stroke.split(', ').map(v => {
24
+ if (v.slice(0, 2) === '--') return `var(${v})`
25
+ if (v.includes('px')) return v
26
+ else if (getColor(v)) return getColor(v)
27
+ }).join(' ')
28
+ })
29
+
30
+ export const transformShadow = shadows => shadows.split('|').map(shadow => {
31
+ return shadow.split(', ').map(v => {
32
+ v = v.trim()
33
+ if (v.slice(0, 2) === '--') return `var(${v})`
34
+ if (getColor(v).length > 2) return getColor(v)
35
+ if (v.includes('px') || v.slice(-2) === 'em') return v
36
+ const arr = v.split(' ')
37
+ if (!arr.length) return v
38
+ return arr.map(v => getSpacingByKey(v, 'shadow').shadow).join(' ')
39
+ }).join(' ')
40
+ }).join(',')
41
+
42
+ const transformBackgroundImage = (backgroundImage, ctx, globalTheme) => ({
43
+ backgroundImage: backgroundImage.split(', ').map(v => {
44
+ if (v.slice(0, 2) === '--') return `var(${v})`
45
+ if (v.includes('url') || v.includes('gradient')) return v
46
+ else if (ctx.system.GRADIENT[backgroundImage]) {
47
+ return getMediaColor(backgroundImage, 'backgroundImage', globalTheme)
48
+ }
49
+ return `url(${v})`
50
+ }).join(' ')
51
+ })
52
+
53
+ export const getSystemTheme = (element, state) => {
54
+ const { context } = element
55
+ const rootState = element.__root ? element.__root.state : element.state
56
+ return rootState.globalTheme || context.system.globalTheme
57
+ }
58
+
59
+ export const Theme = {
60
+ class: {
61
+ depth: ({ props }) => depth[props.depth],
62
+
63
+ theme: (element) => {
64
+ const { props } = element
65
+ const globalTheme = getSystemTheme(element)
66
+ if (!props.theme) return
67
+ return getMediaTheme(props.theme, `@${props.themeModifier || globalTheme}`)
68
+ },
69
+
70
+ color: (element) => {
71
+ const { props } = element
72
+ const globalTheme = getSystemTheme(element)
73
+ if (!props.color) return
74
+ return getMediaColor(props.color, 'color', globalTheme)
75
+ },
76
+
77
+ background: (element) => {
78
+ const { props } = element
79
+ const globalTheme = getSystemTheme(element)
80
+ if (!props.background) return
81
+ return getMediaColor(props.background, 'background', globalTheme)
82
+ },
83
+
84
+ backgroundColor: (element) => {
85
+ const { props } = element
86
+ const globalTheme = getSystemTheme(element)
87
+ if (!props.backgroundColor) return
88
+ return getMediaColor(props.backgroundColor, 'backgroundColor', globalTheme)
89
+ },
90
+
91
+ backgroundImage: (element) => {
92
+ const { props, context } = element
93
+ const globalTheme = getSystemTheme(element)
94
+ if (!props.backgroundImage) return
95
+ return transformBackgroundImage(props.backgroundImage, context, globalTheme)
96
+ },
97
+ backgroundSize: ({ props }) => props.backgroundSize ? ({ backgroundSize: props.backgroundSize }) : null,
98
+ backgroundPosition: ({ props }) => props.backgroundPosition ? ({ backgroundPosition: props.backgroundPosition }) : null,
99
+
100
+ textStroke: ({ props }) => props.textStroke ? transformTextStroke(props.textStroke) : null,
101
+
102
+ outline: ({ props }) => props.outline && ({
103
+ outline: transformBorder(props.outline)
104
+ }),
105
+
106
+ border: ({ props }) => props.border && ({
107
+ border: transformBorder(props.border)
108
+ }),
109
+ borderColor: ({ props }) => (props.borderColor) && getMediaColor(props.borderColor, 'borderColor'),
110
+ borderStyle: ({ props }) => props.borderStyle && ({ borderStyle: props.borderStyle }),
111
+
112
+ borderLeft: ({ props }) => props.borderLeft && ({
113
+ borderLeft: transformBorder(props.borderLeft)
114
+ }),
115
+ borderTop: ({ props }) => props.borderTop && ({
116
+ borderTop: transformBorder(props.borderTop)
117
+ }),
118
+ borderRight: ({ props }) => props.borderRight && ({
119
+ borderRight: transformBorder(props.borderRight)
120
+ }),
121
+ borderBottom: ({ props }) => props.borderBottom && ({
122
+ borderBottom: transformBorder(props.borderBottom)
123
+ }),
124
+
125
+ boxShadow: ({ props }) => props.boxShadow && ({
126
+ boxShadow: transformShadow(props.boxShadow)
127
+ }),
128
+
129
+ textShadow: ({ props }) => props.textShadow && ({
130
+ textShadow: transformShadow(props.textShadow)
131
+ }),
132
+
133
+ opacity: ({ props }) => props.opacity && ({ opacity: props.opacity }),
134
+ visibility: ({ props }) => props.visibility && ({ visibility: props.visibility })
135
+ }
136
+ }
@@ -0,0 +1,55 @@
1
+ 'use strict'
2
+
3
+ import { isString } from '@domql/utils'
4
+ import { getTimingByKey, getTimingFunction } from '@symbo.ls/scratch'
5
+
6
+ export const transformTransition = transition => {
7
+ const arr = transition.split(' ')
8
+
9
+ if (!arr.length) return transition
10
+
11
+ return arr.map(v => {
12
+ if (v.slice(0, 2) === '--') return `var(${v})`
13
+ if (v.length < 3 || v.includes('ms')) {
14
+ const mapWithSequence = getTimingByKey(v)
15
+ return mapWithSequence.timing || v
16
+ }
17
+ if (getTimingFunction(v)) return getTimingFunction(v)
18
+ return v
19
+ }).join(' ')
20
+ }
21
+
22
+ export const transformDuration = (duration, props, propertyName) => {
23
+ if (!isString(duration)) return
24
+ return duration.split(',').map(v => getTimingByKey(v).timing || v).join(',')
25
+ }
26
+
27
+ export const splitTransition = transition => {
28
+ const arr = transition.split(',')
29
+ if (!arr.length) return
30
+ return arr.map(transformTransition).join(',')
31
+ }
32
+
33
+ export const Timing = {
34
+ class: {
35
+ transition: ({ props }) => props.transition && ({
36
+ transition: splitTransition(props.transition)
37
+ }),
38
+ willChange: ({ props }) => props.willChange && ({
39
+ willChange: props.willChange
40
+ }),
41
+ transitionDuration: ({ props }) => props.transitionDuration && ({
42
+ transitionDuration: transformDuration(props.transitionDuration)
43
+ }),
44
+ transitionDelay: ({ props }) => props.transitionDelay && ({
45
+ transitionDelay: transformDuration(props.transitionDelay)
46
+ }),
47
+ transitionTimingFunction: ({ props }) => props.transitionTimingFunction && ({
48
+ transitionTimingFunction: getTimingFunction(props.transitionTimingFunction)
49
+ }),
50
+ transitionProperty: ({ props }) => props.transitionProperty && ({
51
+ transitionProperty: props.transitionProperty,
52
+ willChange: props.transitionProperty
53
+ })
54
+ }
55
+ }
@@ -0,0 +1,8 @@
1
+ 'use strict'
2
+
3
+ export const Transform = {
4
+ class: {
5
+ transform: ({ props }) => props.transform && ({ transform: props.transform }),
6
+ transformOrigin: ({ props }) => props.transformOrigin && ({ transformOrigin: props.transformOrigin })
7
+ }
8
+ }
@@ -0,0 +1,7 @@
1
+ 'use strict'
2
+
3
+ export const XYZ = {
4
+ class: {
5
+ zIndex: ({ props }) => props.zIndex && ({ zIndex: props.zIndex })
6
+ }
7
+ }
@@ -0,0 +1,24 @@
1
+ 'use strict'
2
+
3
+ export * from './Block'
4
+ export * from './Direction'
5
+ export * from './Flex'
6
+ export * from './Grid'
7
+ export * from './Img'
8
+ export * from './Form'
9
+ export * from './Media'
10
+ export * from './Iframe'
11
+ export * from './Interaction'
12
+ export * from './InteractiveComponent'
13
+ export * from './Overflow'
14
+ export * from './Position'
15
+ export * from './Picture'
16
+ export * from './Pseudo'
17
+ export * from './SVG'
18
+ export * from './Shape'
19
+ export * from './Theme'
20
+ export * from './Text'
21
+ export * from './Timing'
22
+ export * from './Transform'
23
+ export * from './XYZ'
24
+ export * from './Animation'
package/src/index.js ADDED
@@ -0,0 +1,32 @@
1
+ 'use strict'
2
+
3
+ export * from '@symbo.ls/init'
4
+ export * from '@symbo.ls/socket/client'
5
+
6
+ // atoms
7
+ export * from './atoms'
8
+ export * from './Box'
9
+
10
+ // atoms
11
+ export * from './Icon'
12
+ export * from './Link'
13
+ export * from './IconText'
14
+ export * from './Input'
15
+ export * from './TextArea'
16
+ export * from './Field'
17
+ export * from './Button'
18
+
19
+ export * from './Collection'
20
+
21
+ // components
22
+ export * from './ButtonSet'
23
+ export * from './User'
24
+ export * from './Banner'
25
+ export * from './Select'
26
+ export * from './Notification'
27
+ export * from './Dropdown'
28
+ export * from './DatePicker'
29
+ export * from './Tooltip'
30
+ export * from './Label'
31
+ export * from './Pills'
32
+ export * from './Range'
package/src/styles.js ADDED
@@ -0,0 +1,6 @@
1
+ 'use strict'
2
+
3
+ export const clickable = {
4
+ cursor: 'pointer',
5
+ userSelect: 'none'
6
+ }
package/index.js DELETED
@@ -1,30 +0,0 @@
1
- 'use strict'
2
-
3
- export * from '@symbo.ls/init'
4
-
5
- // export * from './styles'
6
-
7
- export * from '@symbo.ls/atoms'
8
-
9
- export * from '@symbo.ls/box'
10
-
11
- export * from '@symbo.ls/svg'
12
- export * from '@symbo.ls/icon'
13
- export * from '@symbo.ls/img'
14
- export * from '@symbo.ls/link'
15
- export * from '@symbo.ls/icon-text'
16
- export * from '@symbo.ls/input'
17
- export * from '@symbo.ls/field'
18
- export * from '@symbo.ls/button'
19
-
20
- export * from '@symbo.ls/buttonset'
21
- export * from '@symbo.ls/user'
22
- export * from '@symbo.ls/banner'
23
- export * from '@symbo.ls/slider'
24
- export * from '@symbo.ls/notification'
25
- export * from '@symbo.ls/dropdown'
26
- export * from '@symbo.ls/datepicker'
27
- export * from '@symbo.ls/tooltip'
28
- export * from '@symbo.ls/label'
29
- export * from '@symbo.ls/pills'
30
- export * from '@symbo.ls/select'
package/react.js DELETED
@@ -1,8 +0,0 @@
1
- 'use strict'
2
-
3
- import Box from '@symbo.ls/react-box'
4
-
5
- export * from '@symbo.ls/init'
6
- export { Box }
7
-
8
- // export * from './styles'