@symbo.ls/preview 0.0.11 → 0.0.13
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.
- package/package.json +1 -1
- package/src/pages/Color/globalThemes.js +30 -0
- package/src/pages/Color/index.js +6 -5
- package/src/pages/Color/{colors.js → palette.js} +0 -3
- package/src/pages/Color/themes.js +22 -117
- package/src/pages/DesignSystem/index.js +24 -6
- package/src/pages/Export/scene.js +3 -8
- package/src/pages/{Typography/docFonts.js → Fonts/index.js} +12 -8
- package/src/pages/Fonts/state.js +5 -0
- package/src/pages/Typography/index.js +1 -4
- package/src/pages/index.js +1 -0
- package/src/pages/Color/documentThemes.js +0 -80
package/package.json
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { GlobalThemeTemplate, Flex, SectionHeader, Link } from '@symbo.ls/components'
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
header: {
|
|
7
|
+
extend: SectionHeader,
|
|
8
|
+
state: {
|
|
9
|
+
title: 'Global Themes',
|
|
10
|
+
p: 'Document styling and theming provides global themes of the entire app, imagine it as a <body> styling'
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
modes: {
|
|
15
|
+
extend: Flex,
|
|
16
|
+
props: { gap: 'A' },
|
|
17
|
+
|
|
18
|
+
childExtend: [GlobalThemeTemplate, Link],
|
|
19
|
+
|
|
20
|
+
$setCollection: () => [{
|
|
21
|
+
title: 'Light',
|
|
22
|
+
key: 'light',
|
|
23
|
+
icon: 'sun'
|
|
24
|
+
}, {
|
|
25
|
+
title: 'Dark',
|
|
26
|
+
key: 'dark',
|
|
27
|
+
icon: 'moon'
|
|
28
|
+
}]
|
|
29
|
+
}
|
|
30
|
+
}
|
package/src/pages/Color/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { Line } from '@symbo.ls/components'
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import palette from './
|
|
5
|
+
import globalThemes from './globalThemes'
|
|
6
|
+
import palette from './palette'
|
|
7
7
|
import themes from './themes'
|
|
8
8
|
|
|
9
9
|
export const Color = {
|
|
@@ -12,8 +12,9 @@ export const Color = {
|
|
|
12
12
|
gap: '68px'
|
|
13
13
|
},
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
globalThemes,
|
|
16
16
|
line: { extend: Line },
|
|
17
|
-
palette
|
|
18
|
-
|
|
17
|
+
palette,
|
|
18
|
+
line2: { extend: Line },
|
|
19
|
+
themes
|
|
19
20
|
}
|
|
@@ -1,131 +1,36 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { Block, IconText, Link, Shape, Text, Flex, SectionHeader } from '@symbo.ls/components'
|
|
3
|
+
import { ThemeTemplate, SectionHeader, Grid } from '@symbo.ls/components'
|
|
5
4
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
color: 'white',
|
|
12
|
-
textDecoration: 'none',
|
|
13
|
-
boxSizing: 'border-box',
|
|
14
|
-
caption: {
|
|
15
|
-
marginTop: `${12 / 13}em`
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
'> *': {
|
|
19
|
-
transition: '350ms',
|
|
20
|
-
transitionProperty: 'opacity, transform',
|
|
21
|
-
opacity: 0.35
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
'&:hover > *': {
|
|
25
|
-
opacity: 1,
|
|
26
|
-
transform: 'scale(1.015)'
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export const ThemeTemplate = {
|
|
31
|
-
extend: [Link, Block],
|
|
32
|
-
style,
|
|
33
|
-
|
|
34
|
-
props: (el) => ({
|
|
35
|
-
href: `/theme/${el.key}`,
|
|
36
|
-
padding: 'A Z1'
|
|
37
|
-
}),
|
|
38
|
-
|
|
39
|
-
theme: {
|
|
40
|
-
colors: {
|
|
41
|
-
extend: [Block, Text, Shape, Flex],
|
|
42
|
-
props: {
|
|
43
|
-
round: 'Z1'
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
style: {
|
|
47
|
-
boxShadow: `${COLOR.blue && opacify(COLOR.blue.value, 0.2)} 0 2px 35px`,
|
|
48
|
-
overflow: 'hidden',
|
|
49
|
-
div: {
|
|
50
|
-
flex: 1,
|
|
51
|
-
display: 'flex',
|
|
52
|
-
alignItems: 'center'
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
_icon: '',
|
|
56
|
-
sun: {
|
|
57
|
-
extend: [Shape, Block, IconText, Flex],
|
|
58
|
-
props: {
|
|
59
|
-
icon: 'sun',
|
|
60
|
-
size: 'Z',
|
|
61
|
-
padding: 'Z1 0 Z1 A',
|
|
62
|
-
round: 'Z1 0 0 Z1'
|
|
63
|
-
},
|
|
64
|
-
style: (element, state) => ({
|
|
65
|
-
background: state.background,
|
|
66
|
-
color: state.color,
|
|
67
|
-
borderBottomLeftRadius: '12px',
|
|
68
|
-
'&:only-child': {
|
|
69
|
-
borderRadius: 12
|
|
70
|
-
}
|
|
71
|
-
})
|
|
72
|
-
},
|
|
73
|
-
moon: {
|
|
74
|
-
if: (el, state) => state.themes,
|
|
75
|
-
extend: [Shape, Block, IconText, Flex],
|
|
76
|
-
props: {
|
|
77
|
-
theme: 'secondary',
|
|
78
|
-
padding: 'Z1 0 Z1 A',
|
|
79
|
-
icon: 'moon',
|
|
80
|
-
round: '0 Z1 Z1 0'
|
|
81
|
-
},
|
|
82
|
-
style: (element, state) => ({
|
|
83
|
-
background: '', // state.themes.dark.backgroundColor,
|
|
84
|
-
color: '' // state.themes.dark.color
|
|
85
|
-
})
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
caption: {
|
|
90
|
-
extend: [Block, Text],
|
|
91
|
-
props: {
|
|
92
|
-
size: 'Y',
|
|
93
|
-
padding: 'Z 0 0 0'
|
|
94
|
-
},
|
|
95
|
-
text: (el, state) => el.parent.key
|
|
96
|
-
}
|
|
5
|
+
const mapThemes = (el, s) => {
|
|
6
|
+
if (!el.context.SYSTEM) return
|
|
7
|
+
const { THEME } = el.context.SYSTEM
|
|
8
|
+
const themeKeys = Object.keys(THEME)
|
|
9
|
+
return themeKeys.map(v => ({ ...THEME[v], key: v }))
|
|
97
10
|
}
|
|
98
11
|
|
|
99
12
|
export default {
|
|
100
|
-
tag: 'section',
|
|
101
13
|
header: {
|
|
102
14
|
extend: SectionHeader,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
15
|
+
state: {
|
|
16
|
+
title: 'Themes',
|
|
17
|
+
p: 'Themes are used to prepare color setting abstractly and apply it to any component',
|
|
18
|
+
nav: [{
|
|
19
|
+
icon: 'plus',
|
|
20
|
+
href: '/colors/add-color'
|
|
21
|
+
}]
|
|
107
22
|
}
|
|
108
23
|
},
|
|
109
|
-
colors: {
|
|
110
|
-
style: {
|
|
111
|
-
display: 'flex',
|
|
112
|
-
flexWrap: 'wrap',
|
|
113
|
-
margin: '0 -16px'
|
|
114
|
-
},
|
|
115
24
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return {
|
|
124
|
-
childExtend: ThemeTemplate,
|
|
125
|
-
tag: 'fragment',
|
|
25
|
+
content: {
|
|
26
|
+
extend: Grid,
|
|
27
|
+
props: {
|
|
28
|
+
columns: 'repeat(5, 1fr)',
|
|
29
|
+
gap: 'C2',
|
|
30
|
+
margin: '0 -Z'
|
|
31
|
+
},
|
|
126
32
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
33
|
+
childExtend: ThemeTemplate,
|
|
34
|
+
$setCollection: (el, s) => mapThemes(el, s)
|
|
130
35
|
}
|
|
131
36
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
import { Flex, Link, SquareButton } from '@symbo.ls/components'
|
|
3
|
+
import { ClickableItem, Flex, Link, SquareButton } from '@symbo.ls/components'
|
|
4
4
|
import { PageExtend,
|
|
5
5
|
Color,
|
|
6
6
|
ColorEditor,
|
|
7
7
|
Shapes,
|
|
8
8
|
Spaces,
|
|
9
9
|
Icons,
|
|
10
|
-
Typography
|
|
10
|
+
Typography,
|
|
11
|
+
Fonts
|
|
11
12
|
} from '..'
|
|
12
13
|
|
|
13
14
|
const NAV = [{
|
|
@@ -33,7 +34,15 @@ const NAV = [{
|
|
|
33
34
|
}, {
|
|
34
35
|
props: {
|
|
35
36
|
icon: 'icons outline colored',
|
|
36
|
-
href: '/icons'
|
|
37
|
+
href: '/icons',
|
|
38
|
+
$active: {
|
|
39
|
+
icon: 'icons colored'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
props: {
|
|
44
|
+
icon: 'typeface colored',
|
|
45
|
+
href: '/fonts'
|
|
37
46
|
}
|
|
38
47
|
}, {
|
|
39
48
|
props: {
|
|
@@ -59,6 +68,7 @@ export const DesignSystem = {
|
|
|
59
68
|
maxWidth: '100%',
|
|
60
69
|
width: '100%',
|
|
61
70
|
flow: 'row',
|
|
71
|
+
align: 'flex-start flex-start',
|
|
62
72
|
gap: 'B1',
|
|
63
73
|
padding: 'D2 A B1'
|
|
64
74
|
},
|
|
@@ -69,7 +79,7 @@ export const DesignSystem = {
|
|
|
69
79
|
'/theme': ColorEditor,
|
|
70
80
|
// '/theme': Theme,
|
|
71
81
|
'/typography': Typography,
|
|
72
|
-
|
|
82
|
+
'/fonts': Fonts,
|
|
73
83
|
'/space': Spaces,
|
|
74
84
|
// '/sequence': Sequence,
|
|
75
85
|
'/shape': Shapes,
|
|
@@ -81,14 +91,22 @@ export const DesignSystem = {
|
|
|
81
91
|
sidebar: {
|
|
82
92
|
tag: 'nav',
|
|
83
93
|
extend: Flex,
|
|
84
|
-
childExtend:
|
|
94
|
+
childExtend: {
|
|
95
|
+
extend: [ClickableItem, Link, SquareButton],
|
|
96
|
+
props: ({ props }) => ({
|
|
97
|
+
active: props.href === window.location.pathname,
|
|
98
|
+
theme: null
|
|
99
|
+
})
|
|
100
|
+
},
|
|
85
101
|
|
|
86
102
|
props: {
|
|
87
103
|
gap: 'B1',
|
|
88
104
|
flow: 'column',
|
|
89
105
|
background: 'transparent',
|
|
90
106
|
color: 'gray7',
|
|
91
|
-
fontSize: 'A2'
|
|
107
|
+
fontSize: 'A2',
|
|
108
|
+
position: 'sticky',
|
|
109
|
+
top: 'E'
|
|
92
110
|
},
|
|
93
111
|
|
|
94
112
|
...NAV
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
import { Grid, FontObject, FontFamilyObject, Line } from '@symbo.ls/components'
|
|
4
|
-
import { TypeSection } from '
|
|
4
|
+
import { TypeSection } from '../Typography/shared'
|
|
5
|
+
|
|
6
|
+
import { state } from './state'
|
|
5
7
|
|
|
6
8
|
const mapFonts = (el, s) => {
|
|
7
9
|
if (!el.context.SYSTEM) return
|
|
@@ -16,7 +18,7 @@ const mapFonts = (el, s) => {
|
|
|
16
18
|
|
|
17
19
|
return {
|
|
18
20
|
title: v,
|
|
19
|
-
href: `/
|
|
21
|
+
href: `/fonts/font-settings/${v}`,
|
|
20
22
|
labels: [
|
|
21
23
|
{ icon: 'variableFont', text: fontWeightCaption }
|
|
22
24
|
]
|
|
@@ -34,13 +36,13 @@ const mapFontFamilies = (el, s) => {
|
|
|
34
36
|
if (v === 'default') return
|
|
35
37
|
return {
|
|
36
38
|
title: v,
|
|
37
|
-
href: `/
|
|
39
|
+
href: `/fonts/font-family/${v}`,
|
|
38
40
|
val
|
|
39
41
|
}
|
|
40
42
|
}).filter(v => v)
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
const
|
|
45
|
+
const FontFaces = {
|
|
44
46
|
extend: TypeSection,
|
|
45
47
|
header: {
|
|
46
48
|
state: {
|
|
@@ -48,7 +50,7 @@ const Fonts = {
|
|
|
48
50
|
p: 'Document @font-face, default and backup fonts',
|
|
49
51
|
nav: [{
|
|
50
52
|
icon: 'plus',
|
|
51
|
-
href: '/
|
|
53
|
+
href: '/fonts/upload-font'
|
|
52
54
|
}]
|
|
53
55
|
}
|
|
54
56
|
},
|
|
@@ -74,7 +76,7 @@ const FontFamilies = {
|
|
|
74
76
|
p: 'Setup a set and fallback fonts as font families',
|
|
75
77
|
nav: [{
|
|
76
78
|
icon: 'plus',
|
|
77
|
-
href: '/
|
|
79
|
+
href: '/fonts/add-font-family'
|
|
78
80
|
}]
|
|
79
81
|
}
|
|
80
82
|
},
|
|
@@ -91,8 +93,10 @@ const FontFamilies = {
|
|
|
91
93
|
}
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
export
|
|
95
|
-
|
|
96
|
+
export const Fonts = {
|
|
97
|
+
state,
|
|
98
|
+
|
|
99
|
+
FontFaces,
|
|
96
100
|
line: { extend: Line },
|
|
97
101
|
FontFamilies
|
|
98
102
|
}
|
|
@@ -4,7 +4,6 @@ import { SectionHeader } from '@symbo.ls/components'
|
|
|
4
4
|
|
|
5
5
|
import state from './state'
|
|
6
6
|
|
|
7
|
-
import documentFonts from './docFonts'
|
|
8
7
|
import documentStyle from './docStyles'
|
|
9
8
|
import typeScale from './typeScale'
|
|
10
9
|
|
|
@@ -14,9 +13,7 @@ export const Typography = {
|
|
|
14
13
|
state,
|
|
15
14
|
|
|
16
15
|
routes: {
|
|
17
|
-
'/':
|
|
18
|
-
'/document-fonts': documentFonts,
|
|
19
|
-
'/type-scale': typeScale,
|
|
16
|
+
'/': typeScale,
|
|
20
17
|
'/document-styles': documentStyle
|
|
21
18
|
},
|
|
22
19
|
|
package/src/pages/index.js
CHANGED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { Notification, Flex, ClickableItem, SectionHeader, IconText, Link } from '@symbo.ls/components'
|
|
4
|
-
|
|
5
|
-
const ThemeItem = {
|
|
6
|
-
extend: [Notification, ClickableItem],
|
|
7
|
-
|
|
8
|
-
// if: ({ context, state }) => {
|
|
9
|
-
// if (!context?.SYSTEM) return
|
|
10
|
-
// const { THEME } = context.SYSTEM
|
|
11
|
-
// console.log(!!THEME.document[`@${state.key}`])
|
|
12
|
-
// return !!THEME.document[`@${state.key}`]
|
|
13
|
-
// },
|
|
14
|
-
|
|
15
|
-
props: ({ state }) => ({
|
|
16
|
-
opacity: '.5',
|
|
17
|
-
textDecoration: 'none',
|
|
18
|
-
gap: 'Z',
|
|
19
|
-
round: 'Z',
|
|
20
|
-
padding: 'Z1 D2 A A1',
|
|
21
|
-
theme: `document @${state.key}`,
|
|
22
|
-
fontWeight: '400',
|
|
23
|
-
href: `/colors/document-theme/${state.key}`,
|
|
24
|
-
|
|
25
|
-
icon: {
|
|
26
|
-
size: 'Z',
|
|
27
|
-
padding: 'Z',
|
|
28
|
-
round: 'Z',
|
|
29
|
-
theme: `sepia @${state.key}`,
|
|
30
|
-
icon: state.icon
|
|
31
|
-
},
|
|
32
|
-
article: {
|
|
33
|
-
gap: 'X',
|
|
34
|
-
title: {
|
|
35
|
-
size: 'B'
|
|
36
|
-
},
|
|
37
|
-
p: {
|
|
38
|
-
fontSize: 'Y',
|
|
39
|
-
text: state.key
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}),
|
|
43
|
-
|
|
44
|
-
icon: { extend: IconText },
|
|
45
|
-
article: {
|
|
46
|
-
title: {
|
|
47
|
-
text: ({ state }) => state.title
|
|
48
|
-
},
|
|
49
|
-
p: {
|
|
50
|
-
span: ({ state }) => 'prefers-color-scheme: '
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default {
|
|
56
|
-
header: {
|
|
57
|
-
extend: SectionHeader,
|
|
58
|
-
state: {
|
|
59
|
-
title: 'Global Themes',
|
|
60
|
-
p: 'Document styling and theming provides global themes of the entire app, imagine it as a <body> styling'
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
modes: {
|
|
65
|
-
extend: Flex,
|
|
66
|
-
props: { gap: 'A' },
|
|
67
|
-
|
|
68
|
-
childExtend: [ThemeItem, Link],
|
|
69
|
-
|
|
70
|
-
$setCollection: () => [{
|
|
71
|
-
title: 'Light',
|
|
72
|
-
key: 'light',
|
|
73
|
-
icon: 'sun'
|
|
74
|
-
}, {
|
|
75
|
-
title: 'Dark',
|
|
76
|
-
key: 'dark',
|
|
77
|
-
icon: 'moon'
|
|
78
|
-
}]
|
|
79
|
-
}
|
|
80
|
-
}
|