@symbo.ls/preview 0.0.9

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 (117) hide show
  1. package/.babelrc.js +5 -0
  2. package/.coveralls.yml +1 -0
  3. package/.eslintignore +1 -0
  4. package/.eslintrc.js +15 -0
  5. package/.prettierrc +4 -0
  6. package/.symbols/button-archived/index.js +63 -0
  7. package/.symbols/button-archived/style.js +5 -0
  8. package/.symbols/button-circle/index.js +62 -0
  9. package/.symbols/button-contacts/index.js +48 -0
  10. package/.symbols/button-contacts/style.js +13 -0
  11. package/.symbols/button-download/index.js +59 -0
  12. package/.symbols/button-pro/index.js +98 -0
  13. package/.symbols/button-pro/style.js +19 -0
  14. package/.symbols/button-theme-switcher/index.js +104 -0
  15. package/.symbols/button-theme-switcher/style.js +16 -0
  16. package/.symbols/button-user/index.js +82 -0
  17. package/.symbols/button-user/style.js +25 -0
  18. package/.symbols/categories.js +44 -0
  19. package/.symbols/datepicker/index.js +40 -0
  20. package/.symbols/datepicker/style.js +4 -0
  21. package/.symbols/dropdown-list/index.js +56 -0
  22. package/.symbols/field/index.js +40 -0
  23. package/.symbols/index.js +33 -0
  24. package/.symbols/label/index.js +40 -0
  25. package/.symbols/notification/index.js +49 -0
  26. package/.symbols/notification/style.js +5 -0
  27. package/.symbols/pills/index.js +37 -0
  28. package/.symbols/tooltip/index.js +38 -0
  29. package/.vscode/settings.json +3 -0
  30. package/README.md +19 -0
  31. package/app.webmanifest +4 -0
  32. package/index.html +22 -0
  33. package/package.json +48 -0
  34. package/protect-pwd.js +65 -0
  35. package/src/animations.js +71 -0
  36. package/src/app.js +79 -0
  37. package/src/assets/dots.png +0 -0
  38. package/src/assets/dotsDark.png +0 -0
  39. package/src/assets/fonts/FiraGO/FiraGO-Bold.woff2 +0 -0
  40. package/src/assets/fonts/FiraGO/FiraGO-Light.woff2 +0 -0
  41. package/src/assets/fonts/FiraGO/FiraGO-Medium.woff2 +0 -0
  42. package/src/assets/fonts/FiraGO/FiraGO-Regular.woff2 +0 -0
  43. package/src/assets/fonts/europa-bold-webfont.woff2 +0 -0
  44. package/src/assets/fonts/europa-bolditalic-webfont.woff2 +0 -0
  45. package/src/assets/fonts/europa-light-webfont.woff2 +0 -0
  46. package/src/assets/fonts/europa-lightitalic-webfont.woff2 +0 -0
  47. package/src/assets/fonts/europa-regular-webfont.woff2 +0 -0
  48. package/src/assets/fonts/europa-regularitalic-webfont.woff2 +0 -0
  49. package/src/assets/ovalCircle.svg +9 -0
  50. package/src/components/Header.js +21 -0
  51. package/src/components/index.js +3 -0
  52. package/src/config/color.js +8 -0
  53. package/src/config/font.js +0 -0
  54. package/src/config/index.js +19 -0
  55. package/src/config/theme.js +85 -0
  56. package/src/dev.html +19 -0
  57. package/src/index.js +33 -0
  58. package/src/pages/Account/index.js +241 -0
  59. package/src/pages/Account/setUpProject.js +142 -0
  60. package/src/pages/Color/colors.js +58 -0
  61. package/src/pages/Color/documentThemes.js +101 -0
  62. package/src/pages/Color/index.js +20 -0
  63. package/src/pages/Color/style.js +7 -0
  64. package/src/pages/Color/themes.js +131 -0
  65. package/src/pages/ColorEditor/colorTone.js +163 -0
  66. package/src/pages/ColorEditor/friendTheme.js +30 -0
  67. package/src/pages/ColorEditor/index.js +178 -0
  68. package/src/pages/ColorEditor/interactivity.js +116 -0
  69. package/src/pages/ColorEditor/ntc.js +1689 -0
  70. package/src/pages/ColorEditor/style.js +49 -0
  71. package/src/pages/ColorEditor/themingTools.js +107 -0
  72. package/src/pages/Components/grid.js +94 -0
  73. package/src/pages/Components/index.js +40 -0
  74. package/src/pages/Components/sidebar.js +23 -0
  75. package/src/pages/Components/style.js +16 -0
  76. package/src/pages/DesignSystem/index.js +106 -0
  77. package/src/pages/DesignSystem/style.js +1 -0
  78. package/src/pages/Editor/index.js +46 -0
  79. package/src/pages/Editor/layers.js +126 -0
  80. package/src/pages/Editor/scene.js +97 -0
  81. package/src/pages/Editor/style.js +13 -0
  82. package/src/pages/Editor/tools.js +360 -0
  83. package/src/pages/Export/_tools_old.js +49 -0
  84. package/src/pages/Export/const.js +18 -0
  85. package/src/pages/Export/description.js +56 -0
  86. package/src/pages/Export/index.js +74 -0
  87. package/src/pages/Export/scene.js +62 -0
  88. package/src/pages/Export/state.js +21 -0
  89. package/src/pages/Export/style.js +21 -0
  90. package/src/pages/Export/tools.js +14 -0
  91. package/src/pages/Icons/index.js +72 -0
  92. package/src/pages/Icons/style.js +1 -0
  93. package/src/pages/Library/index.js +32 -0
  94. package/src/pages/Library/style.js +36 -0
  95. package/src/pages/PageExtend.js +12 -0
  96. package/src/pages/Shapes/index.js +161 -0
  97. package/src/pages/Shapes/style.js +28 -0
  98. package/src/pages/Spaces/boxModel.js +3 -0
  99. package/src/pages/Spaces/index.js +58 -0
  100. package/src/pages/Spaces/preview.js +133 -0
  101. package/src/pages/Spaces/sequence.js +3 -0
  102. package/src/pages/Spaces/state.js +18 -0
  103. package/src/pages/Spaces/style.js +30 -0
  104. package/src/pages/Typography/docFonts.js +128 -0
  105. package/src/pages/Typography/docStyles.js +97 -0
  106. package/src/pages/Typography/index.js +52 -0
  107. package/src/pages/Typography/shared.js +10 -0
  108. package/src/pages/Typography/state.js +15 -0
  109. package/src/pages/Typography/style.js +11 -0
  110. package/src/pages/Typography/typeScale.js +104 -0
  111. package/src/pages/index.js +13 -0
  112. package/src/protect.js +114 -0
  113. package/src/state.js +7 -0
  114. package/src/style.js +7 -0
  115. package/src/test.js +30 -0
  116. package/svgSprite.config.js +7 -0
  117. package/test/index.test.js +5 -0
@@ -0,0 +1,101 @@
1
+ 'use strict'
2
+
3
+ import { Notification, Flex, ClickableItem, SectionHeader, Shape, Block, IconText, Link } from '@symbo.ls/components'
4
+
5
+ // import { SectionHeader } from 'components/Header'
6
+
7
+ export default {
8
+ tag: 'section',
9
+ header: {
10
+ extend: SectionHeader,
11
+ props: { padding: 'C 0 0 0' },
12
+ heading: {
13
+ caption: 'Document',
14
+ p: { text: 'Document styling and theming provides global themes of the entire app, imagine it as a <body> styling' }
15
+ }
16
+ },
17
+
18
+ mode: {
19
+ extend: Flex,
20
+ tag: 'nav',
21
+
22
+ style: {
23
+ gap: 16
24
+ },
25
+
26
+ childExtend: {
27
+ extend: [Notification, ClickableItem, Link],
28
+ style: {
29
+ opacity: '.5',
30
+ textDecoration: 'none'
31
+ },
32
+ props: {
33
+ gap: 'Z',
34
+ round: 'Z',
35
+ padding: 'Z1 D2 A A1',
36
+ href: '/colors/documentThemes/addit-theme'
37
+ },
38
+ icon: {
39
+ extend: [Shape, Block, IconText],
40
+ props: {
41
+ size: 'Z',
42
+ padding: 'Z',
43
+ round: 'Z'
44
+ }
45
+ },
46
+ article: {
47
+ props: { gap: 'X' },
48
+ caption: {
49
+ style: { fontWeight: 'bold' },
50
+ props: { size: 'B' }
51
+ },
52
+ p: {
53
+ props: { size: 'Y' },
54
+ style: { '> span': { fontWeight: 'bold' } }
55
+ }
56
+ }
57
+ },
58
+
59
+ ...[
60
+ {
61
+ props: el => {
62
+ if (!el.__root.state.CONFIG) return
63
+ const { THEME } = el.__root.state.CONFIG
64
+ return { theme: THEME.document.value }
65
+ },
66
+ icon: {
67
+ props: { theme: 'lightMode', icon: 'sun' }
68
+ },
69
+ article: {
70
+ caption: { text: 'Light' },
71
+ p: {
72
+ text: 'prefers-color-scheme:',
73
+ span: ' Light'
74
+ }
75
+ }
76
+ }, {
77
+ if: el => {
78
+ if (!el.__root.state.CONFIG) return
79
+ const { THEME } = el.__root.state.CONFIG
80
+ return THEME.document.variants && THEME.document.variants.dark
81
+ },
82
+ props: el => {
83
+ if (!el.__root.state.CONFIG) return
84
+ const { THEME } = el.__root.state.CONFIG
85
+ return { theme: THEME.document.value }
86
+ },
87
+ style: { color: 'white' },
88
+ icon: {
89
+ props: { theme: 'darkMode', icon: 'moon' }
90
+ },
91
+ article: {
92
+ caption: { text: 'Dark' },
93
+ p: {
94
+ text: 'prefers-color-scheme:',
95
+ span: ' Dark'
96
+ }
97
+ }
98
+ }
99
+ ]
100
+ }
101
+ }
@@ -0,0 +1,20 @@
1
+ 'use strict'
2
+
3
+ import style from './style'
4
+
5
+ import { PageExtend } from '..'
6
+
7
+ import palette from './colors'
8
+ import documentThemes from './documentThemes'
9
+ import themes from './themes'
10
+
11
+ export const Color = {
12
+ style,
13
+ key: 'colors',
14
+
15
+ extend: [PageExtend],
16
+
17
+ documentThemes,
18
+ palette,
19
+ themes
20
+ }
@@ -0,0 +1,7 @@
1
+ 'use strict'
2
+
3
+ export default {
4
+ display: 'flex',
5
+ flexDirection: 'column',
6
+ gap: '68px',
7
+ }
@@ -0,0 +1,131 @@
1
+ 'use strict'
2
+
3
+ import { COLOR, opacify } from '@symbo.ls/scratch'
4
+ import { Block, IconText, Link, Shape, Text, Flex, SectionHeader } from '@symbo.ls/components'
5
+
6
+ const style = {
7
+ width: '100%',
8
+ maxWidth: '25%',
9
+ flex: '.25 .3333 25%',
10
+ cursor: 'pointer',
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
+ }
97
+ }
98
+
99
+ export default {
100
+ tag: 'section',
101
+ header: {
102
+ extend: SectionHeader,
103
+ props: { padding: 'C 0 0 0' },
104
+ heading: {
105
+ caption: 'Theme',
106
+ p: { text: 'Themes are used to prepare color setting abstractly and apply it to any component' }
107
+ }
108
+ },
109
+ colors: {
110
+ style: {
111
+ display: 'flex',
112
+ flexWrap: 'wrap',
113
+ margin: '0 -16px'
114
+ },
115
+
116
+ content: (el, s) => {
117
+ if (!el.__root.state.CONFIG) return
118
+ const { THEME } = el.__root.state.CONFIG
119
+
120
+ const Themes = {}
121
+ Object.keys(THEME).map(v => (Themes[v] = { state: THEME[v].value }))
122
+
123
+ return {
124
+ childExtend: ThemeTemplate,
125
+ tag: 'fragment',
126
+
127
+ ...Themes
128
+ }
129
+ }
130
+ }
131
+ }
@@ -0,0 +1,163 @@
1
+ 'use strict'
2
+
3
+ import { Block, Text, opacify, Shape, Grid, Overflow } from '@symbo.ls/components'
4
+
5
+ const classOpacify = (el, opacity) => {
6
+ if (!el.state.value) return
7
+ const { background, backgroundColor, color } = el.state.value
8
+ const bg = background || backgroundColor || color
9
+ if (!bg) return
10
+ return { background: opacify(bg, opacity) }
11
+ }
12
+
13
+ const TONES_AMOUNT = 13
14
+ const TONES_ARR = new Array(TONES_AMOUNT).fill(0).map((_, i) => i)
15
+
16
+ export const Tones = {
17
+ extend: [Shape, Block, Grid, Overflow],
18
+ props: {
19
+ columns: `repeat(${TONES_AMOUNT}, 1fr)`,
20
+ height: 'B',
21
+ round: 'Z'
22
+ },
23
+ childExtend: {
24
+ tag: 'span',
25
+ extend: Shape,
26
+ props: { round: 0 },
27
+ class: {
28
+ transition: {
29
+ transition: '165ms cubic-bezier(.29,.67,.51,.97)',
30
+ transitionProperty: 'color, background'
31
+ }
32
+ }
33
+ },
34
+ ...TONES_ARR.map(v => ({
35
+ class: { background: el => classOpacify(el, (100 / TONES_AMOUNT * v) / 100) }
36
+ }))
37
+ }
38
+
39
+ export const colorTones = {
40
+ tag: 'aside',
41
+ // extend: Block,
42
+ // style: styleColorTones,
43
+ props: { flexFlow: 'column' },
44
+ span: {
45
+ extend: [Text, Block],
46
+ props: {
47
+ text: 'Preview',
48
+ size: 'Z'
49
+ },
50
+ style: {
51
+ display: 'block',
52
+ marginBottom: '8px',
53
+ opacity: '.65'
54
+ }
55
+ },
56
+
57
+ preview: {
58
+ extend: [Shape, Block],
59
+ style: {
60
+ background: 'rgba(255, 255, 255, .06)',
61
+ '&, & *': { transition: '165ms cubic-bezier(.29,.67,.51,.97)', transitionProperty: 'color, background' }
62
+ },
63
+ props: (el, s) => ({
64
+ padding: 'X1',
65
+ round: 'Z2',
66
+ theme: `${s.sceneTheme || 'dark'}Scene`
67
+ }),
68
+ scene: {
69
+ extend: [Block],
70
+ props: { padding: 'A' },
71
+ style: {
72
+ boxSizing: 'border-box',
73
+ backgroundPosition: `center`,
74
+ backgroundRepeat: `repeat`,
75
+ backgroundSize: '100px 100px'
76
+ },
77
+ circle: {
78
+ extend: [Block, Shape],
79
+ props: (el, s) => ({
80
+ theme: s.value,
81
+ flexFlow: 'column',
82
+ flexAlign: 'center center',
83
+ width: 'G',
84
+ aspectRatio: '1 / 1',
85
+ round: '100%'
86
+ }),
87
+ style: { position: 'relative', borderWidth: '1px', borderStyle: 'solid' },
88
+ h6: {
89
+ extend: Text,
90
+ style: { fontSize: `${26 / 16}em`, fontWeight: 'Bold' },
91
+ span: {
92
+ text: 'The',
93
+ style: {
94
+ fontWeight: 'normal',
95
+ marginRight: '6px'
96
+ }
97
+ },
98
+ text: 'Text Color'
99
+ },
100
+ span: {
101
+ extend: Text,
102
+ props: { text: (el, s) => s.value },
103
+ style: {
104
+ position: 'absolute',
105
+ top: '86%',
106
+ left: '50%',
107
+ transform: 'translate(-50%, -50%)',
108
+ fontWeight: '600'
109
+ }
110
+ }
111
+ }
112
+ }
113
+ },
114
+
115
+ opacity: {
116
+ extend: Block,
117
+ props: {
118
+ padding: 'B1 0 0 0'
119
+ },
120
+ caption: {
121
+ extend: [Text, Block],
122
+ props: {
123
+ text: 'Opacity',
124
+ size: 'Z',
125
+ padding: '0 0 Z1 0'
126
+ },
127
+ style: { opacity: '.65' }
128
+ },
129
+ tones: { extend: Tones }
130
+ },
131
+
132
+ shades: {
133
+ extend: [Block],
134
+ props: { padding: 'B 0 0 0' },
135
+ caption: {
136
+ extend: [Text, Block],
137
+ props: {
138
+ text: 'Shades',
139
+ size: 'Z',
140
+ padding: '0 0 Z1 0'
141
+ },
142
+ style: { opacity: '.65' }
143
+ },
144
+
145
+ generate: {
146
+ extend: [Block, Shape, Overflow],
147
+ props: { flexFlow: 'column', round: 'Z', gap: '2px' },
148
+
149
+ childExtend: {
150
+ extend: [Tones],
151
+ props: { round: 'X' },
152
+ ...TONES_ARR.map(v => ({
153
+ class: { background: el => classOpacify(el, (100 / TONES_AMOUNT * v) / 100) }
154
+ }))
155
+ },
156
+
157
+ dark: {},
158
+ light: {
159
+ props: { theme: 'lightScene' }
160
+ }
161
+ }
162
+ }
163
+ }
@@ -0,0 +1,30 @@
1
+ 'use strict'
2
+
3
+ import { CommonField, SelectTool } from '@symbo.ls/components'
4
+
5
+ export const friendTheme = {
6
+ extend: CommonField,
7
+ style: { paddingBlock: 0 },
8
+ caption: {
9
+ tag: 'h6',
10
+ props: { text: 'Friend themes', size: 'B' },
11
+ style: { opacity: 1, fontWeight: 'normal', margin: 0 }
12
+ },
13
+ element: {
14
+ extend: SelectTool,
15
+ style: {
16
+ background: 'transparent',
17
+ paddingLeft: 0,
18
+ '&:hover': { background: 'transparent' }
19
+ },
20
+ title: null,
21
+ buttons: {
22
+ ...[
23
+ {
24
+ props: { icon: 'plus' },
25
+ style: { padding: `${10 / 16}em` }
26
+ }
27
+ ]
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,178 @@
1
+ 'use strict'
2
+
3
+ import { Block, Text, Button, Flex, SectionHeader, AccessibilityCheck, SceneThemingBar } from '@symbo.ls/components'
4
+
5
+ import { PageExtend } from '..'
6
+ import { colorTones } from './colorTone'
7
+ import { themingTools } from './themingTools'
8
+ import { interactivity } from './interactivity'
9
+ import { friendTheme } from './friendTheme'
10
+
11
+ import style, { styleLabel } from './style'
12
+
13
+ // import ntc from './ntc'
14
+
15
+ // const returnColor = element => element.lookup('ColorEditor').state.color
16
+ // const setBackground = (element, opacity = 1) => `background: ${opacify(returnColor(element), opacity)}`
17
+
18
+ const nameTheTheme = {
19
+ tag: 'label',
20
+ style: styleLabel,
21
+ attr: { for: 'name-it' },
22
+ caption: {
23
+ extend: [Block, Text],
24
+ props: {
25
+ text: 'Name the theme',
26
+ padding: '0 0 Y1 0',
27
+ size: 'Z'
28
+ }
29
+ },
30
+ span: {
31
+ tag: 'span',
32
+ extend: Text,
33
+ props: {
34
+ text: (el, s) => s.value,
35
+ size: 'E'
36
+ },
37
+ attr: { contentEditable: true, placeholder: 'you name it', id: 'name-it' }
38
+ }
39
+ }
40
+
41
+ const footer = { //eslint-disable-line
42
+ extend: [Flex, Block],
43
+ props: {
44
+ height: 'C2',
45
+ padding: '0 A'
46
+ },
47
+ style: {
48
+ margin: 'auto -80px 0',
49
+ justifyContent: 'space-between',
50
+ alignItems: 'center'
51
+ },
52
+ nav: {
53
+ extend: [Flex, Block],
54
+ props: { gap: 'A' },
55
+ childExtend: {
56
+ extend: [Button, Text],
57
+ props: {
58
+ size: 'Z',
59
+ width: 'B2',
60
+ height: 'B2',
61
+ theme: 'transparent'
62
+ }
63
+ },
64
+ ...[
65
+ { props: { icon: 'starOutline' } },
66
+ { props: { icon: 'copyOutline' } },
67
+ { props: { icon: 'share' } }
68
+ ]
69
+ },
70
+ span: {
71
+ extend: Text,
72
+ props: {
73
+ text: 'Autosaved 1 second ago',
74
+ size: 'Y'
75
+ },
76
+ style: { opacity: '.35' }
77
+ },
78
+
79
+ export: {
80
+ extend: Flex,
81
+ style: {
82
+ alignItems: 'center'
83
+ },
84
+ span: {
85
+ extend: [Text, Block],
86
+ props: {
87
+ text: 'Export:',
88
+ size: 'Y',
89
+ padding: '0 B1 0 0'
90
+ },
91
+ style: { opacity: '.35' }
92
+ },
93
+ nav: {
94
+ extend: [Flex, Block],
95
+ props: { gap: 'Y2' },
96
+ childExtend: {
97
+ extend: [Button, Text],
98
+ props: {
99
+ size: 'Z',
100
+ width: 'B2',
101
+ height: 'B2',
102
+ theme: 'transparent'
103
+ },
104
+ style: {
105
+ color: 'white'
106
+ }
107
+ },
108
+ ...[
109
+ { props: { icon: 'themeOutline' } },
110
+ { props: { icon: 'sketch' } },
111
+ { props: { icon: 'arrowAngleMirroringHorizontal' } }
112
+ ]
113
+ }
114
+ }
115
+ }
116
+
117
+ export const ColorEditor = {
118
+ key: 'ColorEditor',
119
+
120
+ extend: PageExtend,
121
+
122
+ style,
123
+
124
+ state: {
125
+ sceneTheme: 'dark'
126
+ },
127
+
128
+ on: {
129
+ init: (el, s) => {
130
+ if (!el.__root || !el.__root.state.CONFIG) return
131
+
132
+ var route = window.location.pathname
133
+ var routes = route.slice(1).split('/')
134
+ var param = routes[1]
135
+
136
+ const { THEME } = el.__root.state.CONFIG
137
+ var content = THEME[`${param}`].value
138
+ content.title = param
139
+ el.state.value = content
140
+ }
141
+ },
142
+
143
+ header: {
144
+ extend: SectionHeader,
145
+ props: {
146
+ padding: 'C 0 B2 0',
147
+ margin: '0'
148
+ },
149
+ heading: '',
150
+ label: nameTheTheme,
151
+ nav: { extend: SceneThemingBar }
152
+ },
153
+
154
+ cnt: {
155
+ extend: [Flex],
156
+ props: {
157
+ gap: 'D'
158
+ },
159
+
160
+ aside: colorTones,
161
+ colorEdit: {
162
+ extend: Block,
163
+ props: { gap: 'C2', flexFlow: 'column' },
164
+ themingTools,
165
+ interactivity,
166
+ friendTheme
167
+ }
168
+ },
169
+
170
+ check: {
171
+ extend: AccessibilityCheck,
172
+ props: {
173
+ padding: 'E 0 F'
174
+ }
175
+ }
176
+
177
+ // footer
178
+ }