aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/button.style.js66
-rw-r--r--src/components/dropdown_menu.style.js19
-rw-r--r--src/components/input.style.js60
-rw-r--r--src/components/panel.style.js7
-rw-r--r--src/components/panel_header.style.js1
-rw-r--r--src/components/popover.style.js20
-rw-r--r--src/components/root.style.js17
-rw-r--r--src/components/top_bar.style.js18
-rw-r--r--src/components/underlay.style.js2
9 files changed, 201 insertions, 9 deletions
diff --git a/src/components/button.style.js b/src/components/button.style.js
index 49147c8d..2f74d127 100644
--- a/src/components/button.style.js
+++ b/src/components/button.style.js
@@ -1,11 +1,34 @@
+const border = (top, shadow) => ({
+ x: 0,
+ y: top ? 1 : -1,
+ blur: 0,
+ spread: 0,
+ color: shadow ? '#000000' : '#FFFFFF',
+ alpha: 0.2,
+ inset: true
+})
+
+const buttonInsetFakeBorders = [border(true, false), border(false, true)]
+const inputInsetFakeBorders = [border(true, true), border(false, false)]
+
+const hoverGlow = {
+ x: 0,
+ y: 0,
+ blur: 4,
+ spread: 0,
+ color: '--text',
+ alpha: 1
+}
+
export default {
name: 'Button',
- selector: '.btn',
+ selector: '.button-default',
states: {
disabled: ':disabled',
toggled: '.toggled',
pressed: ':active',
- hover: ':hover'
+ hover: ':hover',
+ focused: ':focus-within'
},
variants: {
danger: '.danger',
@@ -20,14 +43,49 @@ export default {
{
component: 'Button',
directives: {
- background: '--fg'
+ background: '--fg',
+ shadow: [{
+ x: 0,
+ y: 0,
+ blur: 2,
+ spread: 0,
+ color: '#000000',
+ alpha: 1
+ }, ...buttonInsetFakeBorders]
}
},
{
component: 'Button',
state: ['hover'],
directives: {
- background: '#FFFFFF'
+ shadow: [hoverGlow, ...buttonInsetFakeBorders]
+ }
+ },
+ {
+ component: 'Button',
+ state: ['hover', 'pressed'],
+ directives: {
+ background: '--accent,-24.2',
+ shadow: [hoverGlow, ...inputInsetFakeBorders]
+ }
+ },
+ {
+ component: 'Button',
+ state: ['disabled'],
+ directives: {
+ background: '$blend(--background, 0.25, --parent)',
+ shadow: [...buttonInsetFakeBorders]
+ }
+ },
+ {
+ component: 'Text',
+ parent: {
+ component: 'Button',
+ state: ['disabled']
+ },
+ directives: {
+ textOpacity: 0.25,
+ textOpacityMode: 'blend'
}
}
]
diff --git a/src/components/dropdown_menu.style.js b/src/components/dropdown_menu.style.js
new file mode 100644
index 00000000..905984e9
--- /dev/null
+++ b/src/components/dropdown_menu.style.js
@@ -0,0 +1,19 @@
+export default {
+ name: 'DropdownMenu',
+ selector: '.dropdown',
+ validInnerComponents: [
+ 'Text',
+ 'Icon',
+ 'Input'
+ ],
+ states: {
+ hover: ':hover'
+ },
+ defaultRules: [
+ {
+ directives: {
+ background: '--fg'
+ }
+ }
+ ]
+}
diff --git a/src/components/input.style.js b/src/components/input.style.js
new file mode 100644
index 00000000..48d74bfa
--- /dev/null
+++ b/src/components/input.style.js
@@ -0,0 +1,60 @@
+const border = (top, shadow) => ({
+ x: 0,
+ y: top ? 1 : -1,
+ blur: 0,
+ spread: 0,
+ color: shadow ? '#000000' : '#FFFFFF',
+ alpha: 0.2,
+ inset: true
+})
+
+const inputInsetFakeBorders = [border(true, true), border(false, false)]
+
+const hoverGlow = {
+ x: 0,
+ y: 0,
+ blur: 4,
+ spread: 0,
+ color: '--text',
+ alpha: 1
+}
+
+export default {
+ name: 'Input',
+ selector: '.input',
+ states: {
+ disabled: ':disabled',
+ pressed: ':active',
+ hover: ':hover',
+ focused: ':focus-within'
+ },
+ variants: {
+ danger: '.danger',
+ unstyled: '.unstyled',
+ sublime: '.sublime'
+ },
+ validInnerComponents: [
+ 'Text'
+ ],
+ defaultRules: [
+ {
+ directives: {
+ background: '--fg',
+ shadow: [{
+ x: 0,
+ y: 0,
+ blur: 2,
+ spread: 0,
+ color: '#000000',
+ alpha: 1
+ }, ...inputInsetFakeBorders]
+ }
+ },
+ {
+ state: ['hover'],
+ directives: {
+ shadow: [hoverGlow, ...inputInsetFakeBorders]
+ }
+ }
+ ]
+}
diff --git a/src/components/panel.style.js b/src/components/panel.style.js
index a9de7e56..d93792e9 100644
--- a/src/components/panel.style.js
+++ b/src/components/panel.style.js
@@ -6,13 +6,14 @@ export default {
'Link',
'Icon',
'Button',
- 'PanelHeader'
+ 'Input',
+ 'PanelHeader',
+ 'DropdownMenu'
],
defaultRules: [
{
- component: 'Panel',
directives: {
- background: '--fg'
+ background: '--bg'
}
}
]
diff --git a/src/components/panel_header.style.js b/src/components/panel_header.style.js
index 01f8a67f..e18fa799 100644
--- a/src/components/panel_header.style.js
+++ b/src/components/panel_header.style.js
@@ -12,7 +12,6 @@ export default {
component: 'PanelHeader',
directives: {
background: '--fg'
- // opacity: 0.9
}
}
]
diff --git a/src/components/popover.style.js b/src/components/popover.style.js
new file mode 100644
index 00000000..415795a8
--- /dev/null
+++ b/src/components/popover.style.js
@@ -0,0 +1,20 @@
+export default {
+ name: 'Popover',
+ selector: '.popover',
+ validInnerComponents: [
+ 'Text',
+ 'Link',
+ 'Icon',
+ 'Button',
+ 'Input',
+ 'PanelHeader',
+ 'DropdownMenu'
+ ],
+ defaultRules: [
+ {
+ directives: {
+ background: '--fg'
+ }
+ }
+ ]
+}
diff --git a/src/components/root.style.js b/src/components/root.style.js
new file mode 100644
index 00000000..b762b2ba
--- /dev/null
+++ b/src/components/root.style.js
@@ -0,0 +1,17 @@
+export default {
+ name: 'Root',
+ selector: ':root',
+ validInnerComponents: [
+ 'Underlay',
+ 'TopBar',
+ 'Popover'
+ ],
+ defaultRules: [
+ {
+ directives: {
+ background: '--bg',
+ opacity: 0
+ }
+ }
+ ]
+}
diff --git a/src/components/top_bar.style.js b/src/components/top_bar.style.js
new file mode 100644
index 00000000..99e8efdc
--- /dev/null
+++ b/src/components/top_bar.style.js
@@ -0,0 +1,18 @@
+export default {
+ name: 'TopBar',
+ selector: 'nav',
+ validInnerComponents: [
+ 'Link',
+ 'Text',
+ 'Icon',
+ 'Button',
+ 'Input'
+ ],
+ defaultRules: [
+ {
+ directives: {
+ background: '--fg'
+ }
+ }
+ ]
+}
diff --git a/src/components/underlay.style.js b/src/components/underlay.style.js
index 380ea26e..48965f20 100644
--- a/src/components/underlay.style.js
+++ b/src/components/underlay.style.js
@@ -1,6 +1,6 @@
export default {
name: 'Underlay',
- selector: '#content',
+ selector: 'body', // Should be '#content' but for now this is better for testing until I have proper popovers and such...
outOfTreeSelector: '.underlay',
validInnerComponents: [
'Panel'