ecrire 0.29.0 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +9 -0
  3. data/lib/ecrire/app/assets/javascripts/admin/navigation/{help.js.coffee → help.coffee} +0 -0
  4. data/lib/ecrire/app/assets/javascripts/admin/navigation/{save.js.coffee → save.coffee} +0 -0
  5. data/lib/ecrire/app/assets/javascripts/admin/posts/{filter.js.coffee → filter.coffee} +0 -2
  6. data/lib/ecrire/app/assets/javascripts/admin/posts/filters/{tags.js.coffee → tags.coffee} +7 -7
  7. data/lib/ecrire/app/assets/javascripts/admin/posts/header.coffee +4 -1
  8. data/lib/ecrire/app/assets/javascripts/admin/posts/list.coffee +2 -0
  9. data/lib/ecrire/app/assets/javascripts/admin/posts/title.coffee +5 -1
  10. data/lib/ecrire/app/assets/javascripts/admin/posts/titles.coffee +10 -2
  11. data/lib/ecrire/app/assets/javascripts/admin/profiles/menu.coffee +6 -0
  12. data/lib/ecrire/app/assets/javascripts/shared/{overlay.js.coffee → overlay.coffee} +2 -1
  13. data/lib/ecrire/app/assets/javascripts/shared/{popup.js.coffee → popup.coffee} +3 -0
  14. data/lib/ecrire/app/assets/stylesheets/admin/base.scss +62 -43
  15. data/lib/ecrire/app/assets/stylesheets/admin/navigation.scss +159 -80
  16. data/lib/ecrire/app/assets/stylesheets/admin/{header.scss → posts/header.scss} +56 -87
  17. data/lib/ecrire/app/assets/stylesheets/admin/posts/search.scss +70 -0
  18. data/lib/ecrire/app/assets/stylesheets/admin/posts.scss +42 -183
  19. data/lib/ecrire/app/assets/stylesheets/admin/tags.scss +101 -131
  20. data/lib/ecrire/app/assets/stylesheets/admin/title.scss +71 -104
  21. data/lib/ecrire/app/assets/stylesheets/ecrire.scss +0 -1
  22. data/lib/ecrire/app/assets/stylesheets/shared/popup.scss +7 -8
  23. data/lib/ecrire/app/controllers/admin/posts/titles_controller.rb +2 -5
  24. data/lib/ecrire/app/controllers/admin/posts_controller.rb +18 -1
  25. data/lib/ecrire/app/controllers/admin/profiles_controller.rb +6 -0
  26. data/lib/ecrire/app/controllers/admin/tags_controller.rb +7 -0
  27. data/lib/ecrire/app/helpers/admin/tags_helper.rb +13 -0
  28. data/lib/ecrire/app/helpers/application_helper.rb +1 -13
  29. data/lib/ecrire/app/models/post.rb +1 -1
  30. data/lib/ecrire/app/models/tag.rb +1 -1
  31. data/lib/ecrire/app/models/title.rb +2 -2
  32. data/lib/ecrire/app/views/admin/_navigation.html.erb +39 -0
  33. data/lib/ecrire/app/views/admin/posts/_post.html.erb +15 -6
  34. data/lib/ecrire/app/views/admin/posts/_search.html.erb +33 -0
  35. data/lib/ecrire/app/views/admin/posts/edit.html.erb +23 -24
  36. data/lib/ecrire/app/views/admin/posts/header/_base.html.erb +43 -47
  37. data/lib/ecrire/app/views/admin/posts/index.html.erb +31 -53
  38. data/lib/ecrire/app/views/admin/posts/new.html.erb +27 -17
  39. data/lib/ecrire/app/views/admin/posts/show.html.erb +8 -4
  40. data/lib/ecrire/app/views/admin/posts/tags/_tags.html.erb +3 -0
  41. data/lib/ecrire/app/views/admin/posts/titles/_form.html.erb +25 -20
  42. data/lib/ecrire/app/views/admin/posts/titles/_title.html.erb +6 -5
  43. data/lib/ecrire/app/views/admin/posts/titles/create.js.erb +6 -0
  44. data/lib/ecrire/app/views/admin/posts/titles/index.js.erb +1 -1
  45. data/lib/ecrire/app/views/admin/posts/titles/update.js.erb +1 -1
  46. data/lib/ecrire/app/views/admin/profiles/_menu.html.erb +18 -0
  47. data/lib/ecrire/app/views/admin/profiles/show.html.erb +0 -0
  48. data/lib/ecrire/app/views/admin/profiles/show.js.erb +1 -0
  49. data/lib/ecrire/app/views/admin/tags/_tag.html.erb +6 -2
  50. data/lib/ecrire/app/views/admin/tags/index.html.erb +28 -14
  51. data/lib/ecrire/app/views/admin/tags/index.js.erb +1 -1
  52. data/lib/ecrire/app/views/layouts/admin/application.html.erb +3 -7
  53. data/lib/ecrire/routes.rb +10 -2
  54. data/lib/ecrire/theme/template/assets/stylesheets/shared/base.scss +4 -1
  55. data/lib/ecrire/theme/template/assets/stylesheets/shared/posts.scss +1 -1
  56. data/lib/ecrire/theme/template/views/layouts/application.html.erb +3 -3
  57. data/lib/ecrire/theme/template/views/posts/_post.html.erb +1 -1
  58. data/lib/ecrire/version.rb +1 -1
  59. data/test/editor/controllers/posts_controller_test.rb +1 -1
  60. data/test/editor/models/tag_test.rb +17 -0
  61. data/test/editor/models/title_test.rb +1 -1
  62. data/test/fixtures/posts.yml +4 -0
  63. data/test/fixtures/tags.yml +1 -0
  64. data/test/theme/helpers/application_helper_test.rb +1 -1
  65. metadata +21 -15
  66. data/lib/ecrire/app/views/admin/posts/tags/index.html.erb +0 -37
  67. data/lib/ecrire/app/views/admin/posts/titles/_index.html.erb +0 -10
  68. data/lib/ecrire/app/views/admin/posts/titles/_titles.html.erb +0 -6
  69. data/lib/ecrire/app/views/admin/posts/titles/index.html.erb +0 -3
  70. data/lib/ecrire/app/views/sessions/_navigation.html.erb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 972644840a974c24fcf476528edce7ffff3360a5
4
- data.tar.gz: 50ab53263e7654829b081cc356a13dde20afcf24
3
+ metadata.gz: 23d8ccb53d87bb00aba6e240fefbd0da621e5954
4
+ data.tar.gz: 35d8d3c29186530fb4e303b410fdced9a0a6fdd9
5
5
  SHA512:
6
- metadata.gz: 342ed664666e9efa6a4787ceb059aee6608b62a0e1ed647d971d0b847db0d98ffced77f9e97915c136cf318eace3e4d3d2841e8b25fb72d29a42ba0def2945aa
7
- data.tar.gz: 7954cd679f01d36420e87b1bd2dc8ae18e0f3fa9cc9e8d480be1f77cb88d1952a277f735eb7eda400c8b0360f30642efaa2a8b0e2dd2891095829d65f51f4189
6
+ metadata.gz: de6a9644b8a2ec963f10a3161cd553f0180e8e53e7b7f69fc3f9c87e75b1e4337b4cbaf88b78510565a6c97e01d48ca3a38b39cfd69f01dc9733e173d7c59a60
7
+ data.tar.gz: ae21a45067f498ff5376bfb365606687b17669eff3efe1d38c030f365443ae01ae6c08c575eeb7871fcd039a7abcab61716ea65a9f19c528d5fa4c3106956d60
data/Rakefile CHANGED
@@ -85,6 +85,15 @@ namespace :template do
85
85
  Ecrire::Commands::Server.new(Port: 3000).run!
86
86
  end
87
87
 
88
+ desc 'Run console for template development'
89
+ task :console do
90
+ require 'ecrire/commands/console'
91
+ Dir.chdir 'lib/ecrire/theme/template'
92
+ Rails.env = ENV['RAILS_ENV'] = 'development'
93
+ Ecrire::Commands::Console.new.run!
94
+ end
95
+
96
+ desc 'Routes available in your current template configuration'
88
97
  task :routes do
89
98
  Dir.chdir 'lib/ecrire/theme/template'
90
99
  Rails.env = ENV['RAILS_ENV'] = 'development'
@@ -3,7 +3,6 @@ ObserveJS.bind 'Posts.Filter', class
3
3
  for el in @element().elements
4
4
  switch el.type
5
5
  when 'text', 'hidden' then @on 'input', el, @search
6
- when 'radio' then @on 'change', el, @search
7
6
 
8
7
  document.querySelector('input.search').focus()
9
8
 
@@ -12,7 +11,6 @@ ObserveJS.bind 'Posts.Filter', class
12
11
  for el in @element().elements
13
12
  switch el.type
14
13
  when 'text', 'hidden' then xhr.data.set(el.name, el.value) if el.value.length > 0
15
- when 'radio' then xhr.data.set(el.name, el.value) if el.checked == true && el.value.length > 0
16
14
  xhr.send()
17
15
 
18
16
  document.querySelector('input.search').focus()
@@ -17,25 +17,25 @@ ObserveJS.bind 'Posts.Filter.Tags', class
17
17
 
18
18
  input = @element().querySelector('input[type=hidden]')
19
19
  span = @retrieve('span.tag')
20
- span.textContent = el.textContent
20
+ span.textContent = el.dataset.name
21
21
  input.value = el.getAttribute('oid')
22
22
 
23
23
  @retrieve('svg.placeholder').remove()
24
- @element().appendChild(span)
25
24
  @element().appendChild(@retrieve('svg.clear'))
25
+ @element().appendChild(span)
26
26
  @element().classList.add 'tagged'
27
27
 
28
28
  document.querySelector("[as='Overlay']").instance.remove()
29
29
 
30
30
  @changed(input)
31
31
 
32
- action: =>
33
- input = @element().querySelector('input[type=hidden]')
34
- if @element().classList.contains('tagged')
32
+ action: (e) =>
33
+ if @retrieve('svg.clear').contains(e.target)
35
34
  @retrieve('svg.clear').remove()
36
- @retrieve('span.tag').remove()
35
+ @retrieve('span').remove()
37
36
  @element().appendChild(@retrieve('svg.placeholder'))
38
- @element().classList.remove('tagged')
37
+ @element().classList.remove 'tagged'
38
+ input = @element().querySelector('input[type=hidden]')
39
39
  input.value = null
40
40
  @changed(input)
41
41
  else
@@ -19,7 +19,10 @@ ObserveJS.bind 'Post.Header', class
19
19
  @resize()
20
20
 
21
21
  resize: =>
22
- height = @maxHeight - window.scrollY
22
+ if document.querySelector('main').classList.contains('overlayed')
23
+ return
24
+
25
+ height = @maxHeight - document.body.scrollTop
23
26
  if height < 0
24
27
  height = 0
25
28
 
@@ -1,6 +1,8 @@
1
1
  ObserveJS.bind 'Posts.List', class
2
2
  loaded: =>
3
3
  @on 'posts:index', document, @refresh
4
+ @on 'posts:drafts', document, @refresh
5
+ @on 'posts:published', document, @refresh
4
6
 
5
7
  refresh: (e) =>
6
8
  @element().innerHTML = e.HTML.innerHTML
@@ -2,10 +2,14 @@ ObserveJS.bind 'Post.Title', class
2
2
  loaded: =>
3
3
  @on 'titles:index', @show
4
4
  @on 'titles:update', document, @refresh
5
+ @on 'titles:create', document, @refresh
5
6
 
6
7
  show: (e) =>
8
+ e.HTML.dataset.y = document.body.scrollTop
7
9
  document.body.appendChild(e.HTML)
10
+ e.HTML.querySelector('form input[type=text]').focus()
8
11
 
9
12
  refresh: (e) =>
10
- @element().textContent = e.HTML.children[0].textContent
13
+ if e.HTML?
14
+ @element().textContent = e.HTML.dataset.name
11
15
 
@@ -1,8 +1,16 @@
1
1
  ObserveJS.bind 'Post.Titles', class
2
2
  loaded: =>
3
+ @on 'submit', @clear
3
4
  @on 'titles:update', document, @refresh
4
5
  @on 'titles:create', document, @refresh
5
6
 
6
- refresh: (e) =>
7
- @element().innerHTML = e.HTML.innerHTML
8
7
 
8
+ clear: =>
9
+ @element().querySelector('div.errors')?.remove()
10
+
11
+ refresh: (e) =>
12
+ if e.HTML?
13
+ e = new CustomEvent('dialog:close', {bubbles: true})
14
+ @element().dispatchEvent(e)
15
+ else if e.ErrorHTML?
16
+ @element().insertBefore(e.ErrorHTML, @element().querySelector('h2'))
@@ -0,0 +1,6 @@
1
+ ObserveJS.bind 'Profiles.Menu', class
2
+ loaded: =>
3
+ @on 'profiles:show', @show
4
+
5
+ show: (e) =>
6
+ @element().appendChild(e.HTML)
@@ -2,8 +2,9 @@ ObserveJS.bind 'Overlay', class
2
2
  loaded: =>
3
3
  @on 'click', @clicked
4
4
  @on 'keyup', document, @escaped
5
+ @on 'dialog:close', @remove
5
6
 
6
- @y = window.scrollY
7
+ @y = @element().dataset.y || document.body.scrollTop
7
8
  main = document.body.querySelector('main')
8
9
  main.classList.add('overlayed')
9
10
  main.style.top = "-#{@y}px"
@@ -1,7 +1,10 @@
1
1
  ObserveJS.bind 'Popup', class
2
2
  loaded: =>
3
+ if btn = @element().querySelector('.close')
4
+ @on 'click', btn, @remove
3
5
  @on 'click', document, @clicked
4
6
  @on 'keyup', document, @escaped
7
+ @on 'dialog:close', @remove
5
8
 
6
9
  clicked: (e) =>
7
10
  el = e.target
@@ -14,6 +14,8 @@ html {
14
14
  }
15
15
 
16
16
  body {
17
+ @include background(linear-gradient(darken($bright-blue, 5%), $bright-blue));
18
+
17
19
  margin: 0;
18
20
  padding: 0;
19
21
  font-family: $fonts;
@@ -23,7 +25,16 @@ body {
23
25
  }
24
26
 
25
27
  a {
28
+
29
+ @include transition(color 0.2s ease-in);
30
+
26
31
  color: $link-color;
32
+ text-decoration: none;
33
+
34
+ &:hover {
35
+ color: darken($link-color, 25%);
36
+ }
37
+
27
38
  }
28
39
 
29
40
  ol.list {
@@ -34,13 +45,17 @@ h1, h2, h3, h4, h5 {
34
45
  font-weight: 100;
35
46
  }
36
47
 
48
+ h1 {
49
+ font-size: 2.5em;
50
+ }
51
+
37
52
  ul, ol {
38
53
  margin: 0;
39
54
  padding: 0;
40
55
  list-style-type: none;
41
56
 
42
57
  li {
43
- margin: 1em 0;
58
+ padding: 1em 0;
44
59
  }
45
60
  }
46
61
 
@@ -60,30 +75,66 @@ input {
60
75
  outline: none;
61
76
  }
62
77
 
63
- button, input[type=submit] {
64
- border: 1px solid transparent;
65
- background: none;
78
+ button, input[type=submit], .button {
79
+ @include transition(border-color 0.2s, background-color 0.2s, box-shadow 0.2s, color 0.2s);
80
+
81
+ padding: 4px 8px;
82
+ margin: 0 0.5em;
83
+
84
+ border: 1px solid rgba(black, 0.25);
85
+ border-radius: 2px;
86
+
87
+ color: lighten($navy-blue, 100%);
88
+ background-color: rgba(white, 0.05);
89
+
66
90
  font-family: inherit;
67
- font-size: inherit;
91
+ font-size: 0.8em;
68
92
  font-weight: inherit;
93
+
94
+ text-decoration: none;
95
+
69
96
  cursor: pointer;
70
- color: inherit;
71
97
  outline: none;
72
- }
73
98
 
74
- button, input {
75
- border-radius: 2px;
99
+ box-shadow: inset 0 1px 0 0 transparent;
100
+
101
+ &.selected {
102
+ background-color: rgba(black, 0.3);
103
+ border-color: rgba(black, 0.3);
104
+ box-shadow: none;
105
+ }
106
+
107
+ &:hover:not(.selected) {
108
+ background-color: rgba(white, 0.05);
109
+ color: white;
110
+ border-color: rgba(black, 0.3);
111
+ box-shadow: inset 0 1px 0 0 rgba(white, 0.35);
112
+ }
113
+
114
+ &:active:not(.selected) {
115
+ box-shadow: inset 0 1px 2px 0 rgba(black, 0.3);
116
+ background-color: rgba(black, 0.3);
117
+ }
76
118
  }
77
119
 
78
120
  main {
79
121
  @include flex(1 100%);
80
122
  @include display(flex);
81
- @include flex-direction(column);
123
+
82
124
  position: relative;
83
- width: 100%;
84
125
  z-index: 1;
126
+
127
+ top: 0;
128
+ left:0;
129
+ right:0;
130
+ bottom:0;
85
131
  }
86
132
 
133
+ main > section {
134
+ @include flex(0 1 60vw);
135
+ background: white;
136
+ margin: 0 auto 0 0;
137
+ }
87
138
 
88
139
  .hidden {
89
140
  display: none;
@@ -100,35 +151,3 @@ main {
100
151
  color: #FEFEFE;
101
152
  }
102
153
 
103
- .button {
104
- @include transition(border-color 0.1s, background-color 0.1s, box-shadow 0.2s, color 0.1s);
105
- border: 1px solid rgba(black, 0.25);
106
- border-radius: 2px;
107
- text-decoration: none;
108
- padding: 4px 8px;
109
- margin: 0 0.5em;
110
- font-size: 0.8em;
111
- text-transform: uppercase;
112
- font-weight: bold;
113
- background-color: rgba(white, 0.05);
114
- color: lighten($navy-blue, 100%);
115
- box-shadow: inset 0 1px 0 0 transparent, 0 0 2px 0 transparent;
116
-
117
- &.selected {
118
- background-color: rgba(black, 0.3);
119
- border-color: rgba(black, 0.3);
120
- box-shadow: none;
121
- }
122
-
123
- &:hover:not(.selected) {
124
- background-color: rgba(white, 0.05);
125
- color: white;
126
- border-color: rgba(black, 0.3);
127
- box-shadow: inset 0 1px 0 0 rgba(white, 0.35), 0 0 2px 0 rgba(black, 0.2);
128
- }
129
-
130
- &:active:not(.selected) {
131
- box-shadow: inset 0 1px 2px 0 rgba(black, 0.3), 0 0 2px 0 transparent;
132
- background-color: rgba(black, 0.3);
133
- }
134
- }
@@ -1,106 +1,185 @@
1
- nav#Menu.admin section {
1
+ #AdminNavigation {
2
2
  @include display(flex);
3
- height: 100%;
3
+ @include flex-direction(column);
4
+ @include flex(1 0 180px);
5
+ max-width: 200px;
6
+ margin-left: auto;
7
+ color: $light-blue;
8
+ border-left: 1px solid rgba(0,0,0,0.1);
4
9
  }
5
10
 
6
- nav#Menu.admin {
11
+ #AdminNavigation > a.home {
7
12
  @include display(flex);
8
- @include align-content(flex-start);
9
13
  @include align-items(center);
10
- @include justify-content(space-between);
11
- @include flex-wrap(wrap);
14
+ @include justify-content(center);
12
15
 
13
- height: 3em;
14
- font-family: $fonts;
15
- font-size: 16px;
16
- font-weight: bold;
17
- padding: 0 2em;
18
- z-index: 1000;
19
- position: fixed;
20
- left: 0;
21
- right: 0;
22
- top: 0;
16
+ padding: 8px 12px;
17
+ margin-top: auto;
18
+
19
+ &:hover > svg {
20
+ fill: lighten($light-blue, 45%);
21
+ }
22
+
23
+ & > svg {
24
+ @include transition(fill 0.2s ease-in);
25
+ width: 14px;
26
+ height: 14px;
27
+ margin-right: 12px;
23
28
 
24
- background-color: lighten($gray-blue, 25%);
25
- color: darken($gray-blue, 30%);
26
- border-bottom: 1px solid darken($gray-blue, 75%);
27
-
28
- .button {
29
- @include display(flex);
30
- @include flex(0 0 auto);
31
- @include align-items(center);
32
- @include justify-content(center);
33
-
34
- border-radius: 0;
35
- border: none;
36
- background: none;
37
-
38
- height: 100%;
39
-
40
- text-decoration: none;
41
- padding: 4px 2em;
42
- margin: 0;
43
- font-size: 0.8em;
44
- text-transform: uppercase;
45
- font-weight: lighter;
46
- color: inherit;
47
- text-shadow: none;
48
-
49
- &.selected {
50
- color: lighten($navy-blue, 100%);
51
- }
52
-
53
- &:hover:not(.selected) {
54
- text-decoration: underline;
55
- box-shadow: none;
56
- }
57
-
58
- &:active:not(.selected) {
59
- color: lighten($navy-blue, 100%);
60
- text-decoration: underline;
61
- box-shadow: none;
62
- }
29
+ fill: $light-blue;
63
30
  }
64
31
  }
65
32
 
66
- nav#Menu.admin form.logout {
33
+ #AdminNavigation > div.current.user {
34
+ position: relative;
35
+ margin-bottom: 1vh;
36
+ }
37
+
38
+ #AdminNavigation > div.current.user > a.home {
39
+ text-align: center;
40
+ display: block;
41
+ font-size: 0.8em;
42
+ }
43
+
44
+ #AdminNavigation > div.current.user > a.profile.menu {
67
45
  @include display(flex);
68
- @include flex(0 0 auto);
69
46
  @include align-items(center);
70
- @include justify-content(center);
47
+ @include align-content(center);
48
+ @include justify-content(space-between);
71
49
 
72
- margin: 0;
73
- height: 100%;
50
+ border-radius: 2px;
51
+ margin: 2vh 5% 0 5%;
52
+ background-color: rgba(darken($bright-blue, 25%), 0.2);
53
+ padding: 4px 8px;
74
54
 
75
- input {
76
- @include transition(box-shadow 0.1s ease, background-color 0.1s ease);
55
+ &:hover svg {
56
+ fill: lighten($bright-blue, 25%);
57
+ }
58
+ }
77
59
 
78
- background-color: lighten($red, 15%);
79
- color: darken($red, 25%);
60
+ #AdminNavigation > div.current.user > a.profile.menu > span {
61
+ text-align: center;
62
+ }
63
+
64
+ #AdminNavigation > div.current.user > a.profile.menu > svg {
65
+ @include transition(fill 0.1s ease-in);
80
66
 
81
- cursor: pointer;
82
- outline: none;
67
+ width: 18px;
68
+ height: 18px;
69
+ fill: rgba(darken($bright-blue, 25%), 0.7);
70
+ }
83
71
 
84
- padding: 6px 10px;
85
- margin: 0;
72
+ #AdminNavigation h2 {
73
+ @include display(flex);
74
+ @include align-items(center);
86
75
 
87
- border: none;
88
- border-radius: 2px;
76
+ font-size: 1.2em;
77
+ padding: 8px;
78
+ margin: 0 1vw;
79
+ font-weight: bold;
80
+ }
89
81
 
90
- font-size: 0.9em;
91
- font-family: inherit;
82
+ #AdminNavigation h2.selected, #AdminNavigation h2 + div > a.selected {
83
+ color: white;
92
84
  font-weight: bold;
85
+ }
93
86
 
94
- box-shadow: 0 1px 1px 0 transparent;
87
+ #AdminNavigation h2 > a {
88
+ @include flex(1);
89
+ color: inherit;
90
+ }
91
+
92
+ #AdminNavigation h2 + div {
93
+ @include display(flex);
94
+ @include flex-direction(column);
95
+
96
+ margin: 0 1vw 1vh 1vw;
97
+ }
95
98
 
96
- &:hover {
97
- box-shadow: 0 0.5px 0.5px 0 darken($red, 15%);
98
- }
99
+ #AdminNavigation h2 + div > a {
100
+ padding: 8px 20px;
101
+ color: $light-blue;
102
+ font-size: 0.8em;
103
+ }
99
104
 
100
- &:active {
101
- box-shadow: 0 1px 1px 0 transparent;
102
- background-color: darken($red, 5%);
103
- }
105
+ #AdminNavigation a {
106
+ color: $light-blue;
107
+ &:hover {
108
+ color: lighten($light-blue, 45%);
104
109
  }
110
+ }
105
111
 
112
+ #AdminNavigation form.logout {
113
+ margin-top: auto;
114
+ border-top: 1px solid $light-blue;
115
+ text-align: center;
106
116
  }
117
+
118
+ #AdminNavigation form.logout input[type=submit] {
119
+ width: 100%;
120
+ }
121
+
122
+ #AdminNavigation [as='Popup'] {
123
+ position: absolute;
124
+ margin: 2vh 5% 0 5%;
125
+ top: 0;
126
+ left: 0;
127
+ right: 0;
128
+ width: auto;
129
+
130
+ background-color: $light-blue;
131
+ }
132
+
133
+ #AdminNavigation [as='Popup'] > div.current.user {
134
+ @include display(flex);
135
+ @include align-items(center);
136
+ @include align-content(center);
137
+ @include justify-content(space-between);
138
+
139
+ padding: 4px 8px;
140
+ }
141
+
142
+ #AdminNavigation [as='Popup'] > div.current.user > a {
143
+ @include display(flex);
144
+ @include flex(0 auto);
145
+ padding: 0;
146
+ cursor: pointer;
147
+ }
148
+
149
+ #AdminNavigation [as='Popup'] > div.current.user > a > svg {
150
+ width: 18px;
151
+ height: 18px;
152
+ margin-top: 2px;
153
+ fill: rgba(darken($bright-blue, 25%), 0.7);
154
+ }
155
+
156
+ #AdminNavigation [as='Popup'] > form.logout {
157
+ @include display(flex);
158
+ margin: 8px 0;
159
+ color: $red;
160
+ }
161
+
162
+ #AdminNavigation [as='Popup'] > form.logout > button {
163
+ @include display(flex);
164
+ @include align-items(center);
165
+ @include align-content(center);
166
+
167
+ width: 100%;
168
+ padding: 4px 8px;
169
+ margin: 8px;
170
+ font-weight: bold;
171
+ background: $red;
172
+ color: darken($red, 25%);
173
+
174
+ &:hover {
175
+ color: lighten($red, 50%);
176
+ }
177
+ }
178
+
179
+ #AdminNavigation [as='Popup'] > form.logout > button > svg {
180
+ width: 12px;
181
+ height: 12px;
182
+ fill: darken($red, 15%);
183
+ margin: 1px 8px 0 0;
184
+ }
185
+