@symbo.ls/preview 0.0.57 → 0.0.58

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.
@@ -78,9 +78,9 @@ const define = {
78
78
  }
79
79
  }
80
80
 
81
- export const LIBRARY = []
81
+ // export const LIBRARY = []
82
82
 
83
- export const SYMBOLS_LIBRARY = Object.keys(lib).map(key => {
83
+ export const LIBRARY = Object.keys(lib).map(key => {
84
84
  const component = lib[key]
85
85
  const base = define[key] || define.default
86
86
  return deepMerge({
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@symbo.ls/preview",
3
3
  "description": "",
4
4
  "author": "",
5
- "version": "0.0.57",
5
+ "version": "0.0.58",
6
6
  "repository": "https://github.com/rackai/editor",
7
7
  "main": "src/index.js",
8
8
  "scripts": {
@@ -28,7 +28,7 @@
28
28
  "@symbo.ls/components": "latest",
29
29
  "@symbo.ls/config": "latest",
30
30
  "@symbo.ls/icons": "latest",
31
- "@symbo.ls/init": "latest",
31
+ "@symbo.ls/init": "^1.1.3",
32
32
  "@symbo.ls/scratch": "latest",
33
33
  "@symbo.ls/utils": "latest",
34
34
  "domql": "^1.5.7",
package/src/app.js CHANGED
@@ -4,6 +4,10 @@ import './config'
4
4
 
5
5
  import 'domql/packages/emotion'
6
6
  import { router } from '@domql/router'
7
+ import { init } from '@symbo.ls/init'
8
+ import { openModal } from '@symbo.ls/components'
9
+
10
+ // import { send } from '@symbo.ls/socket/client'
7
11
 
8
12
  import { state } from './state'
9
13
  import {
@@ -12,7 +16,6 @@ import {
12
16
  Export,
13
17
  Library
14
18
  } from './pages'
15
- import { Modal, openModal } from '@symbo.ls/components'
16
19
 
17
20
  const SUB_ROUTES = {}
18
21
  Object.keys(DesignSystem.routes).map(route => {
@@ -55,7 +58,7 @@ const App = {
55
58
  props: { position: 'relative' }
56
59
  },
57
60
 
58
- modal: Modal,
61
+ Modal: {},
59
62
 
60
63
  on: {
61
64
  render: element => {
@@ -63,13 +66,19 @@ const App = {
63
66
  const url = pathname + hash
64
67
  router(element, url, {})
65
68
  },
66
- update: (el, s) => openModal(el, s),
69
+ update: (el, s) => { openModal(el, s) },
70
+ stateUpdated: (el, s, changes) => {
71
+ if (changes.SYSTEM) {
72
+ init(changes.SYSTEM)
73
+ // send(changes.SYSTEM, s.SYSTEM)
74
+ }
75
+ },
67
76
  scroll: (ev, el) => {
68
77
  const { scrollTop } = el.node
69
78
  const isFloating = scrollTop > 0
70
79
  if (isFloating !== el.props.isFloating) {
71
80
  el.props.isFloating = isFloating
72
- // el._header.update()
81
+ // state.update()
73
82
  }
74
83
  }
75
84
  }
@@ -0,0 +1,29 @@
1
+ 'use strict'
2
+
3
+ import { Flex } from '@symbo.ls/components'
4
+
5
+ const props = {
6
+ fontSize: 'Z',
7
+ alignItems: 'center',
8
+ gap: 'Y1',
9
+ whiteSpace: 'nowrap',
10
+
11
+ color: {
12
+ boxSize: 'B B',
13
+ background: 'red',
14
+ round: 'Y2'
15
+ },
16
+
17
+ value: {
18
+ text: 'Background',
19
+ color: 'white'
20
+ }
21
+ }
22
+ export const ColorText = {
23
+ extend: Flex,
24
+ props,
25
+
26
+ color: {},
27
+ value: {}
28
+ // text: 'efef'
29
+ }
@@ -0,0 +1,64 @@
1
+ 'use strict'
2
+
3
+ import { Flex, Grid } from '@symbo.ls/components'
4
+
5
+ const props = {
6
+ flow: 'column',
7
+ gap: 'A',
8
+ opacity: '.35'
9
+ }
10
+
11
+ export const ColorsPalette = {
12
+ props,
13
+
14
+ extend: Flex,
15
+ childExtend: {
16
+ extend: Grid,
17
+ // text: 'B',
18
+
19
+ props: ({ state }) => ({
20
+ minWidth: '190px',
21
+ round: 'A',
22
+ // round: 'D',
23
+ columns: 'repeat(3, 1fr)',
24
+ childProps: {
25
+ height: 'B2'
26
+ // style: { border: '4px solid red' }
27
+ },
28
+ color1: {
29
+ background: state.color1,
30
+ style: { borderTopLeftRadius: '10px', borderBottomLeftRadius: '10px' }
31
+ },
32
+ color2: { background: state.color2 },
33
+ color3: {
34
+ background: state.color3,
35
+ style: { borderTopRightRadius: '10px', borderBottomRightRadius: '10px' }
36
+ }
37
+ }),
38
+
39
+ color1: {},
40
+ color2: {},
41
+ color3: {}
42
+ },
43
+ $setStateCollection: () => [{
44
+ color1: '#5F6C37',
45
+ color2: '#F1E0BC',
46
+ color3: '#FFFFFF'
47
+ }, {
48
+ color1: '#CCD5AE',
49
+ color2: '#FEF9E1',
50
+ color3: '#D3A374'
51
+ }, {
52
+ color1: '#CDB4DB',
53
+ color2: '#FEAFCC',
54
+ color3: '#A2D2FF'
55
+ }, {
56
+ color1: '#274553',
57
+ color2: '#E9C46A',
58
+ color3: '#E76F51'
59
+ }, {
60
+ color1: '#8EC9E6',
61
+ color2: '#013047',
62
+ color3: '#FFB703'
63
+ }]
64
+ }
@@ -0,0 +1,13 @@
1
+ 'use strict'
2
+ import { Button } from '@symbo.ls/components'
3
+ export const ContinueButton = {
4
+ extend: Button,
5
+ props: {
6
+ text: 'Continue',
7
+ fontSize: 'Z2',
8
+ padding: 'Z1 C',
9
+ background: 'linear-gradient(to top, rgba(50, 114, 184, .2), rgba(0, 121, 253, .27), rgba(0, 121, 253, .27))',
10
+ color: 'white',
11
+ fontWeight: '500'
12
+ }
13
+ }
@@ -0,0 +1,186 @@
1
+ 'use strict'
2
+
3
+ import { Flex, IconText } from '@symbo.ls/components'
4
+
5
+ const fontName = {
6
+ tag: 'caption',
7
+ props: {
8
+ text: 'avenir next',
9
+ whiteSpace: 'nowrap',
10
+ textTransform: 'capitalize'
11
+ }
12
+ }
13
+
14
+ const fontWeights = {
15
+ extend: Flex,
16
+ props: {
17
+ position: 'relative',
18
+ width: 'fit-content',
19
+ ':after': {
20
+ content: '"+"',
21
+ position: 'absolute',
22
+ right: '-Z',
23
+ top: '0',
24
+ fontSize: '20px'
25
+ },
26
+ childProps: { fontSize: 'F3' }
27
+ },
28
+ childExtend: {
29
+ extend: { text: 'A' }
30
+ },
31
+ ...[
32
+ { props: { fontWeight: '700' } },
33
+ { props: { fontWeight: '500' } },
34
+ { props: { fontWeight: '400' } }
35
+ ]
36
+ }
37
+
38
+ const letterTransform = {
39
+ extend: Flex,
40
+ props: {
41
+ alignItems: 'center',
42
+ // border: '2px solid red',
43
+ gap: 'X2',
44
+ childProps: {
45
+ minHeight: 'fit-content'
46
+ // border: '2px solid black'
47
+ }
48
+ },
49
+ childExtend: {},
50
+ ...[
51
+ { props: { text: 'a', textTransform: 'uppercase', fontSize: 'F', fontWeight: '700' } },
52
+ { props: { text: 'b', fontWeight: '700', fontSize: 'E' } },
53
+ { props: { text: 'c', fontWeight: '500', fontSize: 'D1' } },
54
+ { props: { text: 'd', fontSize: 'C1' } },
55
+ { props: { text: 'e', fontWeight: '300', fontSize: 'B1' } },
56
+ { props: { text: 'f', fontSize: 'B' } }
57
+ ]
58
+ }
59
+
60
+ const fontStyle = {
61
+ extend: Flex,
62
+ props: {
63
+ gap: 'V2'
64
+ },
65
+ childExtend: {
66
+ props: {
67
+ fontSize: 'F',
68
+ textTransform: 'uppercase',
69
+ fontWeight: '300',
70
+ margin: '0',
71
+ padding: '0'
72
+ }
73
+ },
74
+ ...[
75
+ { props: { text: 'a' } },
76
+ { props: { text: 'b', style: { fontStyle: 'italic' } } },
77
+ {
78
+ props: {
79
+ text: 'c',
80
+ position: 'relative',
81
+ ':before': {
82
+ content: '""',
83
+ width: '100%',
84
+ height: '2px',
85
+ background: 'black .75',
86
+ position: 'absolute',
87
+ bottom: '10px'
88
+ }
89
+ }
90
+ }
91
+ ]
92
+ }
93
+
94
+ const paragraph = {
95
+ extend: Flex,
96
+ props: {
97
+ flow: 'column',
98
+ gap: 'Y',
99
+ title: {
100
+ text: 'Sometimes high',
101
+ fontSize: 'A2',
102
+ margin: '0'
103
+ },
104
+ p: {
105
+ text: `Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.`,
106
+ margin: '0',
107
+ fontWeight: '400',
108
+ maxWidth: 'G3',
109
+ color: 'gray6'
110
+ }
111
+ },
112
+ title: { tag: 'h3' },
113
+ p: {}
114
+ }
115
+
116
+ const iconText = {
117
+ extend: IconText,
118
+ props: {
119
+ fontSize: 'Z',
120
+ gap: 'X1',
121
+ icon: 'eyeOpen',
122
+ text: 'ABCDEFGHIKLMNOPQRSTVWXYZabcdefghijklmnopqrstvwxyz0123456789!@#$%^&*()'
123
+ }
124
+ }
125
+
126
+ const underlineSpan = {
127
+ props: {
128
+ text: 'Sometimes low',
129
+ textDecoration: 'underline',
130
+ style: { fontStyle: 'italic' }
131
+ }
132
+ }
133
+
134
+ const props = {
135
+ width: 'fit-content',
136
+ color: 'black',
137
+ background: 'white',
138
+ position: 'relative',
139
+ padding: 'A B',
140
+ round: 'A1',
141
+ flow: 'column',
142
+ gap: 'B',
143
+
144
+ fontName: {
145
+ position: 'absolute'
146
+
147
+ },
148
+
149
+ content: {
150
+ gap: 'D',
151
+ fonts: {
152
+ gap: 'C',
153
+ align: 'flex-end center'
154
+ },
155
+ paragraph: {
156
+ }
157
+ },
158
+
159
+ footer: {
160
+ justifyContent: 'space-between',
161
+ color: 'gray7'
162
+ }
163
+
164
+ }
165
+ export const FontText = {
166
+ extend: Flex,
167
+ props,
168
+
169
+ fontName,
170
+ content: {
171
+ extend: Flex,
172
+ fonts: {
173
+ extend: Flex,
174
+ fontWeights,
175
+ letterTransform,
176
+ fontStyle
177
+ },
178
+ paragraph
179
+ },
180
+
181
+ footer: {
182
+ extend: Flex,
183
+ iconText,
184
+ underlineSpan
185
+ }
186
+ }
@@ -0,0 +1,26 @@
1
+ 'use strict'
2
+
3
+ const props = {
4
+ caption: {
5
+ text: `Let's get started`,
6
+ whiteSpace: 'nowrap',
7
+ margin: '0',
8
+ color: 'gray6'
9
+ },
10
+ h1: {
11
+ color: 'white',
12
+ text: 'First was the light',
13
+ fontSize: 'H2',
14
+ fontWeight: '700',
15
+ margin: '0',
16
+ height: 'fit-content'
17
+ }
18
+ }
19
+
20
+ export const HeaderHeading = {
21
+ tag: 'header',
22
+ props,
23
+
24
+ caption: {},
25
+ h1: {}
26
+ }
@@ -0,0 +1,21 @@
1
+ 'use strict'
2
+
3
+ import { Flex } from '@symbo.ls/components'
4
+
5
+ export const SlidersWithResponsive = {
6
+ extend: Flex,
7
+ props: {
8
+ align: 'flex-end space-between',
9
+ position: 'sticky',
10
+ top: 'C2',
11
+ background: 'black .5',
12
+ zIndex: '9999',
13
+ margin: '-B2 -B -B',
14
+ padding: 'B2 B B',
15
+ style: {
16
+ backdropFilter: 'blur(15px)'
17
+ }
18
+ },
19
+ SequenceSliders: {},
20
+ DeviceButtonSet: {}
21
+ }
@@ -0,0 +1,51 @@
1
+ 'use strict'
2
+
3
+ import { Flex } from '@symbo.ls/components'
4
+
5
+ import { ColorText } from './ColorText'
6
+
7
+ const props = {
8
+ background: 'gray6',
9
+ width: 'fit-content',
10
+ round: 'B2',
11
+ position: 'relative',
12
+ maxHeight: '36px',
13
+ zIndex: '2',
14
+ ':after': {
15
+ content: '""',
16
+ width: '1px',
17
+ height: '95%',
18
+ background: 'black',
19
+ position: 'absolute',
20
+ top: '50%',
21
+ left: '50%',
22
+ transform: 'translate(-50%, -50%)'
23
+ },
24
+ childProps: {
25
+ // color: 'red'
26
+ // padding: 'Z E Z B'
27
+ }
28
+
29
+ }
30
+ export const ThemeButtons = {
31
+ extend: Flex,
32
+
33
+ props,
34
+
35
+ attr: { buttons: true },
36
+
37
+ childExtend: ColorText,
38
+ ...[{
39
+ props: {
40
+ padding: 'Z E Z Z1',
41
+ color: { background: 'white' }
42
+ }
43
+
44
+ }, {
45
+ props: {
46
+ padding: 'Z E Z B',
47
+ color: { background: 'black' },
48
+ caption: { text: 'Text color' }
49
+ }
50
+ }]
51
+ }
@@ -0,0 +1,28 @@
1
+ 'use strict'
2
+
3
+ import { Flex, CommonField, Upload, ClickableItem } from '@symbo.ls/components'
4
+
5
+ export const UploadImage = {
6
+ extend: [CommonField],
7
+ Flex,
8
+ props: {
9
+ title: { text: 'Pick from the picture' },
10
+ element: {
11
+ border: 'none',
12
+ background: 'gray1',
13
+ padding: 'Z A Z Z',
14
+ gap: 'Z',
15
+ flow: 'row',
16
+ icon: { style: { fontSize: '52px' } },
17
+ p: {
18
+ text: 'Upload or drop the image'
19
+ }
20
+ }
21
+ },
22
+ title: {},
23
+ element: {
24
+ extend: [Upload, Flex, ClickableItem],
25
+ icon: { style: { fontSize: '52px' } },
26
+ p: { span: null }
27
+ }
28
+ }
@@ -8,7 +8,15 @@ export * from './Aside'
8
8
 
9
9
  export * from './Banner'
10
10
  export * from './ShapeSet'
11
+ export * from './ColorText'
12
+ export * from './ThemeButtons'
13
+ export * from './ContinueButton'
14
+ export * from './SlidersWithResponsive'
15
+ export * from './HeaderHeading'
16
+ export * from './UploadImage'
17
+ export * from './ColorsPalette'
11
18
  export * from './ShapePreview'
12
19
  export * from './SpacingPreview'
13
20
  export * from './ResponsivePreview'
14
21
  export * from './IconsGroup'
22
+ export * from './FontText'
@@ -0,0 +1,134 @@
1
+ 'use strict'
2
+
3
+ import { Flex, ColorSelectWithTitle } from '@symbo.ls/components'
4
+ import { Input } from 'smbls'
5
+
6
+ import { ContinueButton, UploadImage, ColorsPalette } from '../../components'
7
+
8
+ const colors = {
9
+ extend: Flex,
10
+ props: {
11
+ width: 'F3',
12
+ flow: 'column',
13
+ gap: 'B1',
14
+ opacity: '.75'
15
+ },
16
+ childExtend: {
17
+ extend: ColorSelectWithTitle,
18
+ props: ({ state }) => ({
19
+ width: '100%',
20
+ title: { text: state.title },
21
+ element: {
22
+ padding: 'Y Y Y Z1',
23
+ title: {
24
+ box: {
25
+ boxSize: 'A2 A2',
26
+ position: 'relative',
27
+ zIndex: 2,
28
+ background: 'white .05',
29
+ '::-webkit-color-swatch-wrapper': {
30
+ padding: '0'
31
+ },
32
+ '::-webkit-color-swatch': {
33
+ border: 'none',
34
+ round: 'Y'
35
+ }
36
+ },
37
+ value: {
38
+ round: 'Z',
39
+ position: 'absolute',
40
+ inset: '0 0 0 0',
41
+ padding: '- - - B2+W',
42
+ textAlign: 'start',
43
+ lineHeight: '100%',
44
+ placeholder: 'Color value',
45
+ ':focus': {
46
+ outline: 'solid, X, blue .3'
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }),
52
+ title: {},
53
+ element: {
54
+ title: {
55
+ box: {
56
+ extend: 'Focusable',
57
+ tag: 'input',
58
+ attr: {
59
+ type: 'color',
60
+ value: ({ state }) => 'rgba(255,255,255,0.05)'
61
+ },
62
+ props: {
63
+ border: '0',
64
+ padding: '0',
65
+ style: {
66
+ appearance: 'none'
67
+ }
68
+ },
69
+ on: {
70
+ update: (el, s) => {
71
+ el.node.value = s.value || ''
72
+ },
73
+ input: (ev, el, s) => {
74
+ s.update({ value: el.node.value || '' })
75
+ }
76
+ }
77
+ },
78
+ value: {
79
+ extend: Input,
80
+ on: {
81
+ update: (el, s) => {
82
+ el.node.value = s.value || ''
83
+ },
84
+ input: (ev, el, s) => {
85
+ s.update({ value: el.node.value || '' })
86
+ }
87
+ }
88
+ }
89
+ },
90
+ buttons: null
91
+ }
92
+ },
93
+
94
+ $setStateCollection: () => [{
95
+ title: 'Accent color'
96
+ }, {
97
+ title: 'Secondary Color'
98
+ }, {
99
+ title: 'Inactive Color'
100
+ }]
101
+ }
102
+
103
+ const content = {
104
+ extend: Flex,
105
+ props: {
106
+ margin: '- - F -',
107
+ align: 'flex-start',
108
+ gap: 'E2',
109
+ ColorsPalette: {
110
+ margin: '- - - auto'
111
+ }
112
+ },
113
+
114
+ colors,
115
+ UploadImage,
116
+ ColorsPalette
117
+ }
118
+
119
+ const props = {
120
+ // style: { border: '5px solid red' }
121
+ }
122
+
123
+ export const CreatePallete = {
124
+ props,
125
+
126
+ HeaderHeading: {
127
+ margin: '- - D -',
128
+ title: { text: `Let's get started` },
129
+ h1: { text: 'Create your palette' }
130
+ },
131
+
132
+ content,
133
+ ContinueButton
134
+ }
@@ -0,0 +1,11 @@
1
+ 'use strict'
2
+
3
+ export const fontText = {
4
+ HeaderHeading: {
5
+ caption: { text: 'Let’s make sure' },
6
+ h1: { text: 'Texts look good?' }
7
+ },
8
+
9
+ FontText: {},
10
+ ContinueButton: {}
11
+ }
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- import { GlobalThemeTemplate, Flex, SectionHeader, Link } from '@symbo.ls/components'
3
+ import { GlobalThemeTemplate, Flex, SectionHeader, Link, ClickableItem } from '@symbo.ls/components'
4
4
 
5
5
  export default {
6
6
  header: {
@@ -15,7 +15,7 @@ export default {
15
15
  extend: Flex,
16
16
  props: { gap: 'A' },
17
17
 
18
- childExtend: [GlobalThemeTemplate, Link],
18
+ childExtend: [GlobalThemeTemplate, ClickableItem, Link],
19
19
 
20
20
  $setStateCollection: () => [{
21
21
  title: 'Light',