@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,49 @@
1
+ 'use strict'
2
+
3
+ export const styleLabel = {
4
+ caption: { whiteSpace: 'nowrap', opacity: 0.65 },
5
+ span: {
6
+ display: 'block',
7
+ whiteSpace: 'nowrap',
8
+ minWidth: `1.618em`,
9
+ maxWidth: 'fit-content',
10
+ borderBottom: '1px dashed rgba(255, 255, 255, .35)',
11
+ outline: 'none'
12
+ }
13
+ }
14
+
15
+ export const styleTool = {
16
+ caption: { opacity: '.65' },
17
+ '> div span': { opacity: '.5' },
18
+ '> div > div': { gap: '1px' }
19
+ }
20
+ export const styleColorTones = {
21
+ width: '22em',
22
+ display: 'flex',
23
+ flexDirection: 'column',
24
+ '> div > button': {
25
+ padding: `${123 / 16}em`,
26
+ position: 'absolute'
27
+ },
28
+ caption: {
29
+ textTransform: 'capitalize',
30
+ opacity: '.65',
31
+ marginBottom: `${10 / 13}em`
32
+ }
33
+ }
34
+
35
+ export default {
36
+ display: 'flex',
37
+ flexFlow: 'column',
38
+ 'header > nav a:hover': {
39
+ background: 'rgba(255, 255, 255, .08)',
40
+ opacity: 1,
41
+ color: '#EDCB38'
42
+ },
43
+
44
+ '> section': {
45
+ display: 'flex',
46
+ gap: '6.6em',
47
+ border: '2px solid red'
48
+ }
49
+ }
@@ -0,0 +1,107 @@
1
+ 'use strict'
2
+
3
+ import { Grid, ColorSwitcher, CommonField, SelectTool, ButtonSet, ClickableItem } from '@symbo.ls/components'
4
+
5
+
6
+ ColorSwitcher.props = (el, s) => {
7
+ if (!s.value) return
8
+ const value = s.value[el.props.type] || s.value[el.props.type + 'Color']
9
+ const key = filterByValue(value).key || value
10
+ return {
11
+ key: key,
12
+ value: value
13
+ }
14
+ }
15
+
16
+ export const themingTools = {
17
+ extend: Grid,
18
+ style: {
19
+ width: 'fit-content'
20
+ },
21
+ props: {
22
+ columns: 'repeat(4, 1fr)',
23
+ columnGap: 'C',
24
+ rowGap: 'C'
25
+ },
26
+ childExtend: {
27
+ extend: CommonField,
28
+ props: { padding: 0 },
29
+ caption: { text: el => el.parent.props.caption },
30
+ element: {}
31
+ },
32
+ ...[{
33
+ props: { caption: 'Background color' },
34
+ caption: {},
35
+ element: {
36
+ extend: ColorSwitcher,
37
+ props: { type: 'background' },
38
+
39
+ title: {},
40
+ buttons: { ...[
41
+ { props: { icon: 'plus' } },
42
+ { props: { icon: 'arrowAngleMirroringVertical', theme: 'transparent' } }
43
+ ] }
44
+ }
45
+ }, {
46
+ props: { caption: 'Text color' },
47
+ caption: {},
48
+ element: {
49
+ extend: ColorSwitcher,
50
+ props: { type: 'color' },
51
+
52
+ title: {},
53
+ buttons: { ...[
54
+ { props: { icon: 'colorInvert' } },
55
+ { props: { icon: 'arrowAngleMirroringVertical', theme: 'transparent' } }
56
+ ] }
57
+ }
58
+ }, {
59
+ props: { caption: 'Border color' },
60
+ caption: {},
61
+ element: {
62
+ extend: ColorSwitcher,
63
+ props: { type: 'border' },
64
+
65
+ title: {},
66
+ buttons: { ...[
67
+ { props: { icon: 'colorInvert' } },
68
+ { props: { icon: 'arrowAngleMirroringVertical', theme: 'transparent' } }
69
+ ] }
70
+ }
71
+ }, {
72
+ props: { caption: 'Use as' },
73
+ caption: {},
74
+ element: {
75
+ extend: SelectTool,
76
+ title: { props: { text: 'Background color' } },
77
+ buttons: { ...[{ props: { icon: 'arrowAngleMirroringVertical', theme: 'transparent' } }] }
78
+ }
79
+ },
80
+
81
+ {
82
+ props: { caption: 'Border' },
83
+ caption: {},
84
+ element: {
85
+ extend: ButtonSet,
86
+ childExtend: { extend: [ClickableItem] },
87
+ props: { gap: 'Z' },
88
+ ...[
89
+ { props: { icon: 'colorsColored' } },
90
+ { props: { icon: 'borderOpacity' } },
91
+ { props: { icon: 'borderWeight' } },
92
+ { props: { icon: 'borderProps' } }
93
+ ]
94
+ }
95
+ },
96
+
97
+ {
98
+ props: { caption: 'Shadow' },
99
+ caption: {},
100
+ element: {
101
+ extend: ButtonSet,
102
+ childExtend: { extend: [ClickableItem] },
103
+ ...[{ props: { icon: 'plus' } }]
104
+ }
105
+ }
106
+ ]
107
+ }
@@ -0,0 +1,94 @@
1
+ 'use strict'
2
+
3
+ import {
4
+ ComponentTemplate,
5
+ Grid,
6
+ SectionHeader
7
+ } from '@symbo.ls/components'
8
+ import { LIBRARY } from '../../../.symbols'
9
+ import { gridStyle, rowStyle } from './style'
10
+
11
+ export default {
12
+ props: {
13
+ padding: '0 Y2',
14
+ flex: 1
15
+ },
16
+
17
+ header: {
18
+ extend: SectionHeader,
19
+
20
+ props: { margin: '0 0 X2' },
21
+
22
+ heading: {
23
+ title: null,
24
+ p: 'All Categories'
25
+ },
26
+
27
+ nav: {
28
+ childExtend: {
29
+ props: {
30
+ theme: 'transparent',
31
+ background: 'transparent 0'
32
+ }
33
+ },
34
+
35
+ ...[{
36
+ props: (el, s) => ({
37
+ icon: { name: s.favorites ? 'star' : 'star outline' },
38
+ href: null
39
+ }),
40
+ on: {
41
+ click: (ev, el, s) => {
42
+ s.update({ favorites: !s.favorites })
43
+ }
44
+ }
45
+ }, {
46
+ props: (el, s) => {
47
+ const active = s.view === 'grid'
48
+ return {
49
+ active,
50
+ href: null,
51
+ icon: { name: active ? 'grid' : 'grid outline' }
52
+ }
53
+ },
54
+ on: {
55
+ click: (ev, el, s) => {
56
+ s.update({ view: 'grid' })
57
+ // debugger
58
+ }
59
+ }
60
+ }, {
61
+ props: (el, s) => {
62
+ const active = s.view === 'list'
63
+ return {
64
+ active,
65
+ href: null,
66
+ icon: { name: active ? 'rows' : 'rows outline' }
67
+ }
68
+ },
69
+ on: {
70
+ click: (ev, el, s) => {
71
+ s.update({ view: 'list' })
72
+ }
73
+ }
74
+ }]
75
+ }
76
+ },
77
+
78
+ components: {
79
+ extend: Grid,
80
+
81
+ props: ({ state }) => ({
82
+ flex: 1,
83
+ gap: 'A',
84
+ margin: '- -Y2',
85
+ style: state.view === 'grid' ? gridStyle : rowStyle
86
+ }),
87
+
88
+ childExtend: ComponentTemplate,
89
+ $setCollection: ({ state }) => LIBRARY.filter(v => {
90
+ if (!state.category) return true
91
+ return state.category === v.category.key
92
+ })
93
+ }
94
+ }
@@ -0,0 +1,40 @@
1
+ 'use strict'
2
+
3
+ import PageExtend from '../PageExtend'
4
+ import { splitRoute } from 'domql/packages/router'
5
+
6
+ import sidebar from './sidebar'
7
+ import grid from './grid'
8
+
9
+ import { CATEGORIES } from '../../../.symbols/categories'
10
+ // import FAVORITES from '../../data/favorites'
11
+ // import COMPONENTS from '../../data/components'
12
+
13
+ export const Components = {
14
+ extend: PageExtend,
15
+
16
+ props: {
17
+ maxWidth: '100%',
18
+ width: '100%',
19
+ flexFlow: 'row',
20
+ flow: 'row',
21
+ gap: 'B1',
22
+ padding: 'A'
23
+ },
24
+
25
+ state: {
26
+ filters: {},
27
+ view: 'grid'
28
+ },
29
+
30
+ sidebar,
31
+ grid,
32
+
33
+ on: {
34
+ init: (el, s) => {
35
+ var route = splitRoute()[1]
36
+ var content = CATEGORIES.filter(v => v.key === route)[0]
37
+ s.category = content ? content.key : ''
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,23 @@
1
+ 'use strict'
2
+
3
+ import { FilterCategories, FilterInteractivity, FilterDataTypes } from '@symbo.ls/components'
4
+ import { CATEGORIES } from '../../../.symbols/categories'
5
+
6
+ export default {
7
+ sticky: {
8
+ props: {
9
+ position: 'sticky',
10
+ top: 'C2'
11
+ },
12
+
13
+ categories: {
14
+ extend: FilterCategories,
15
+ header: {},
16
+ nav: {
17
+ ...CATEGORIES
18
+ }
19
+ },
20
+ FilterInteractivity,
21
+ FilterDataTypes
22
+ }
23
+ }
@@ -0,0 +1,16 @@
1
+ 'use strict'
2
+
3
+ export const gridStyle = {
4
+ gridTemplateColumns: 'repeat(12, 1fr)',
5
+ gridAutoFlow: 'dense',
6
+ justifyItems: 'stretch',
7
+ boxSizing: 'border-box',
8
+ marginBottom: '2em',
9
+ gridAutoColumns: 'auto',
10
+ gridAutoRows: 'auto'
11
+ }
12
+
13
+ export const rowStyle = {
14
+ display: 'flex',
15
+ flexFlow: 'row wrap'
16
+ }
@@ -0,0 +1,106 @@
1
+ 'use strict'
2
+
3
+ import { Flex, Link, SquareButton } from '@symbo.ls/components'
4
+ import { PageExtend,
5
+ Color,
6
+ ColorEditor,
7
+ Shapes,
8
+ Spaces,
9
+ Icons,
10
+ Typography
11
+ } from '..'
12
+
13
+ const NAV = [{
14
+ props: {
15
+ icon: 'typography outline',
16
+ href: '/typography'
17
+ }
18
+ }, {
19
+ props: {
20
+ icon: 'color outline colored',
21
+ href: '/colors'
22
+ }
23
+ }, {
24
+ props: {
25
+ icon: 'space outline',
26
+ href: '/space'
27
+ }
28
+ }, {
29
+ props: {
30
+ icon: 'shape outline colored',
31
+ href: '/shape'
32
+ }
33
+ }, {
34
+ props: {
35
+ icon: 'icons outline colored',
36
+ href: '/icons'
37
+ }
38
+ }, {
39
+ props: {
40
+ icon: 'device mobile half fill',
41
+ href: '/responsive'
42
+ }
43
+ }, {
44
+ props: {
45
+ icon: 'clock colored',
46
+ href: '/timing'
47
+ }
48
+ }, {
49
+ props: {
50
+ icon: 'sequence colored',
51
+ href: '/sequence'
52
+ }
53
+ }]
54
+
55
+ export const DesignSystem = {
56
+ extend: PageExtend,
57
+
58
+ props: {
59
+ maxWidth: '100%',
60
+ width: '100%',
61
+ flow: 'row',
62
+ gap: 'B1',
63
+ padding: 'D2 A B1'
64
+ },
65
+
66
+ define: { routes: param => param },
67
+ routes: {
68
+ '/colors': Color,
69
+ '/theme': ColorEditor,
70
+ // '/theme': Theme,
71
+ '/typography': Typography,
72
+ // '/font': Font,
73
+ '/space': Spaces,
74
+ // '/sequence': Sequence,
75
+ '/shape': Shapes,
76
+ // '/timing': Timing,
77
+ '/icons': Icons
78
+ // '/media-query': MediaQuery
79
+ },
80
+
81
+ sidebar: {
82
+ tag: 'nav',
83
+ extend: Flex,
84
+ childExtend: [Link, SquareButton],
85
+
86
+ props: {
87
+ gap: 'B1',
88
+ flow: 'column',
89
+ background: 'transparent',
90
+ color: 'gray7',
91
+ fontSize: 'A2'
92
+ },
93
+
94
+ ...NAV
95
+ },
96
+
97
+ main: {
98
+ tag: 'section',
99
+ extend: PageExtend,
100
+
101
+ props: {
102
+ flex: 1,
103
+ padding: '0 C1 B1'
104
+ }
105
+ }
106
+ }
@@ -0,0 +1 @@
1
+ 'use strict'
@@ -0,0 +1,46 @@
1
+ 'use strict'
2
+
3
+ import { Block, Flex, Footer, ResponsiveToolBar } from '@symbo.ls/components'
4
+
5
+ import { LIBRARY } from '../../../.symbols'
6
+
7
+ import LayerSidebar from './layers'
8
+ import ToolSidebar from './tools'
9
+ import scene from './scene'
10
+
11
+ import style from './style'
12
+ const COMPONENT_ROUTES = {}
13
+ LIBRARY.map(v => (COMPONENT_ROUTES[`/${v.key}`] = v))
14
+
15
+ export default {
16
+ style,
17
+ extend: Flex,
18
+ mainContainer: {
19
+ extend: [Block, Flex],
20
+ props: {
21
+ padding: '0 A2',
22
+ gap: 'B'
23
+ },
24
+
25
+ LayerSidebar,
26
+ scene,
27
+ ToolSidebar
28
+ },
29
+
30
+ footer: {
31
+ extend: Footer,
32
+ FooterBar: {},
33
+ // span: 'Autosaved 1 secsond ago',
34
+ screenChanger: {
35
+ extend: ResponsiveToolBar,
36
+ style: {
37
+ marginLeft: 'auto'
38
+ }
39
+ },
40
+ spaceExport: {
41
+ cd: null,
42
+ fr: null,
43
+ sp: null
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,126 @@
1
+ ' use strict'
2
+
3
+ import { Shape, Block, Flex, Text, Icon } from '@symbo.ls/components'
4
+
5
+ const objectLayer = {
6
+ extend: [Block, Text, Shape],
7
+ props: {
8
+ round: 'A',
9
+ padding: '0 Y Y Y'
10
+ },
11
+
12
+ h4: {
13
+ extend: [Block, Text],
14
+ props: {
15
+ text: 'Button',
16
+ padding: 'A 0 A1 A1'
17
+ },
18
+ style: { margin: 0, fontWeight: 'normal' }
19
+ },
20
+
21
+ caption: {
22
+ extend: [Block, Text],
23
+ props: {
24
+ text: 'IconText',
25
+ padding: '0 0 A B1'
26
+ }
27
+ },
28
+
29
+ objectComponent: {
30
+ extend: [Block, Flex],
31
+ style: { flexDirection: 'column' },
32
+ childExtend: {
33
+ extend: [Block, Flex, Text, Shape],
34
+ props: {
35
+ padding: 'Z2 0 Z2 B1',
36
+ round: 'A'
37
+ },
38
+ style: {
39
+ alignItems: 'center'
40
+ },
41
+ icon: { extend: Icon },
42
+ caption: {
43
+ extend: [Block, Text],
44
+ props: { padding: '0 X2 0 Y' }
45
+ },
46
+ span: {
47
+ extend: Text,
48
+ style: { opacity: '.35' }
49
+ }
50
+ },
51
+ ...[
52
+ {
53
+ icon: {
54
+ name: 'shapes',
55
+ style: { color: '#7345AF' }
56
+ },
57
+ caption: { props: { text: 'Icon' } },
58
+ span: { props: { text: 'moon' } }
59
+ },
60
+
61
+ {
62
+ icon: {
63
+ name: 'typography',
64
+ style: { color: '#35C6E4' }
65
+ },
66
+ caption: { props: { text: 'Text' } },
67
+ span: { props: { text: 'Go Dark' } }
68
+ }
69
+ ]
70
+ }
71
+ }
72
+
73
+ export default {
74
+ tag: 'aside',
75
+ extend: [Block, Text],
76
+ props: { size: 'Y' },
77
+
78
+ caption: {
79
+ extend: [Block, Text],
80
+ props: {
81
+ text: 'Layer'
82
+ },
83
+ style: {
84
+ opacity: '.35',
85
+ display: 'flex',
86
+ alignItems: 'center',
87
+ height: '32.5px',
88
+ marginTop: '12px',
89
+ marginBottom: '4px',
90
+ marginLeft: '6px'
91
+ }
92
+ },
93
+
94
+ layer: {
95
+ extend: objectLayer,
96
+ props: {
97
+ theme: 'buttonPrimary'
98
+ },
99
+ style: { background: 'rgba(255, 255, 255, .05)' },
100
+ h4: {},
101
+ caption: {},
102
+ objectComponent: {},
103
+
104
+ layer2: {
105
+ extend: objectLayer,
106
+ style: {
107
+ margin: '0 auto',
108
+ background: 'rgba(255, 255, 255, .04)',
109
+ cursor: 'pointer',
110
+ '&:hover': {
111
+ border: '1px solid #3477F4',
112
+ color: 'white'
113
+ }
114
+ },
115
+
116
+ h4: {},
117
+ caption: { },
118
+
119
+ objectComponent: {
120
+ style: {
121
+ '> div:hover': { border: '1px solid #3477F4' }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
@@ -0,0 +1,97 @@
1
+ 'use strict'
2
+
3
+ import { Block, Flex, Text, KangorooButton, Breadcrumb, SceneToolBar, Scene } from '@symbo.ls/components'
4
+
5
+ const header = {
6
+ extend: [Flex, Block],
7
+ style: {
8
+ justifyContent: 'space-between',
9
+ marginTop: '12px',
10
+ marginBottom: '4px'
11
+ },
12
+ nav: {
13
+ extend: [Breadcrumb, Text],
14
+ props: { size: 'A' },
15
+ all: {
16
+ props: {
17
+ href: '/components'
18
+ },
19
+ text: 'Buttons'
20
+ },
21
+
22
+ title: {
23
+ text: 'kangoroo'
24
+ }
25
+ },
26
+ tool: {
27
+ SceneToolBar
28
+ }
29
+ }
30
+
31
+ const buttonThemeSwitcher = {
32
+ extend: KangorooButton,
33
+
34
+ props: {
35
+ round: 'C',
36
+ theme: 'lightDark',
37
+ size: 'A',
38
+ padding: 'X1 Y X1 A1',
39
+ gap: 'Z1',
40
+ depth: 16,
41
+
42
+ light: {
43
+ icon: 'sun',
44
+ text: 'Light Mode'
45
+ },
46
+
47
+ dark: {
48
+ theme: ['lightDark', 'inverse'],
49
+ round: 'C',
50
+ icon: 'moon',
51
+ padding: 'Z Z1',
52
+ text: 'Dark Mode'
53
+ }
54
+ },
55
+
56
+ iconText: {
57
+ props: el => el.parent.props.light
58
+ },
59
+
60
+ child: {
61
+ props: el => el.parent.props.dark
62
+ },
63
+
64
+ style: {
65
+ fontWeight: 'bold',
66
+
67
+ svg: {
68
+ color: '#EDCB38',
69
+ marginRight: `${4 / 16}em`
70
+ },
71
+
72
+ span: {
73
+ maxHeight: '32px',
74
+ padding: `${9 / 14}em ${16 / 14}em`,
75
+ marginLeft: `${16 / 14}em`
76
+ }
77
+ }
78
+
79
+ }
80
+ export default {
81
+ extend: Flex,
82
+ style: {
83
+ flex: 1,
84
+ flexDirection: 'column'
85
+ },
86
+ header: { extend: header },
87
+ scene: {
88
+ extend: Scene,
89
+ style: {
90
+ flex: 1,
91
+ '> div': { height: '100%' }
92
+ },
93
+ scene: {
94
+ buttonThemeSwitcher
95
+ }
96
+ }
97
+ }