waxx 0.1.3 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +8 -8
- data/bin/waxx +4 -2
- data/lib/.yardoc/checksums +30 -0
- data/lib/.yardoc/complete +0 -0
- data/lib/.yardoc/object_types +0 -0
- data/lib/.yardoc/objects/root.dat +0 -0
- data/lib/.yardoc/proxy_types +0 -0
- data/lib/waxx/app.rb +9 -5
- data/lib/waxx/conf.rb +3 -3
- data/lib/waxx/console.rb +13 -3
- data/lib/waxx/database.rb +12 -8
- data/lib/waxx/generate.rb +189 -0
- data/lib/waxx/http.rb +77 -34
- data/lib/waxx/init.rb +3 -2
- data/lib/waxx/object.rb +2 -2
- data/lib/waxx/patch.rb +7 -0
- data/lib/waxx/pdf.rb +2 -2
- data/lib/waxx/pg.rb +73 -12
- data/lib/waxx/res.rb +32 -8
- data/lib/waxx/server.rb +5 -4
- data/lib/waxx/version.rb +1 -1
- data/lib/waxx/view.rb +41 -8
- data/lib/waxx/waxx.rb +4 -4
- data/lib/waxx/x.rb +14 -2
- data/lib/waxx.rb +2 -1
- data/skel/app/about/about.rb +32 -0
- data/skel/app/home/html.rb +5 -135
- data/skel/app/html.rb +38 -124
- data/skel/app/usr/usr.rb +4 -4
- data/skel/app/waxx/waxx.rb +1 -1
- data/skel/public/lib/waxx/waxx.js +0 -1
- metadata +14 -36
- checksums.yaml.gz.sig +0 -0
- data/skel/public/lib/site.css +0 -202
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -4
data/skel/app/html.rb
CHANGED
|
@@ -3,18 +3,17 @@ module App::Html
|
|
|
3
3
|
extend self
|
|
4
4
|
|
|
5
5
|
def standard_css
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
%w(
|
|
7
|
+
https://cdn.tersecss.com/css/terse.min.css
|
|
8
|
+
https://cdn.tersecss.com/css/size.min.css
|
|
9
|
+
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css
|
|
10
|
+
)
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def standard_js
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"/app/js.js",
|
|
17
|
-
]
|
|
14
|
+
%w(
|
|
15
|
+
/app/js.js
|
|
16
|
+
)
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
def render(x, title:"Untitled", content:nil, body_class: "", message:{type:nil, message:nil}, css:[], js:[], js_ready: nil)
|
|
@@ -22,21 +21,17 @@ module App::Html
|
|
|
22
21
|
x << nav(x)
|
|
23
22
|
x.res.error.each{|e| x << alert(e[:type], e[:message]) }
|
|
24
23
|
x << content
|
|
25
|
-
x << app_modal(x)
|
|
26
24
|
x << foot(x)
|
|
27
25
|
x << script(x, js:js, js_ready: js_ready)
|
|
28
26
|
x << '</body></html>'
|
|
29
27
|
end
|
|
30
28
|
|
|
31
29
|
def page(x, title:nil, content:nil, message:{type:"alert", message: nil}, css:[], js:[], js_ready:nil)
|
|
32
|
-
render(x, title:title, message: message, css: css, js: js, js_ready: js_ready, content
|
|
33
|
-
|
|
34
|
-
#App::Website::Html.chrome
|
|
35
|
-
}
|
|
36
|
-
<div class="container">
|
|
30
|
+
render(x, title: title, message: message, css: css, js: js, js_ready: js_ready, content: %(
|
|
31
|
+
<div class="p-l">
|
|
37
32
|
<h1>#{h title}</h1>
|
|
38
33
|
#{alert(message[:type], message[:message]) if message[:message]}
|
|
39
|
-
#{content
|
|
34
|
+
#{content}
|
|
40
35
|
</div>
|
|
41
36
|
))
|
|
42
37
|
end
|
|
@@ -50,129 +45,52 @@ module App::Html
|
|
|
50
45
|
<title>#{h title}</title>
|
|
51
46
|
<meta name="description" content="#{h description.to_s.gsub('"',"'")}">
|
|
52
47
|
<meta name="author" content="#{h author}">
|
|
53
|
-
<meta name="viewport" content="width=device-width,initial-scale=1
|
|
54
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
55
|
-
<link rel="apple-touch-icon" sizes="200x200" href="/lib/waxx/img/w.png">
|
|
48
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
49
|
+
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
|
|
56
50
|
#{(standard_css + css).map{|f| %(<link href="#{f}" rel="stylesheet">) }.join}
|
|
57
51
|
<body class="#{body_class}">
|
|
58
52
|
)
|
|
59
53
|
end
|
|
60
54
|
|
|
61
55
|
def nav(x)
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<div class="navbar-header">
|
|
69
|
-
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
|
70
|
-
<span class="sr-only">Toggle navigation</span>
|
|
71
|
-
<span class="icon-bar"></span>
|
|
72
|
-
<span class="icon-bar"></span>
|
|
73
|
-
<span class="icon-bar"></span>
|
|
74
|
-
</button>
|
|
75
|
-
<a class="navbar-brand" href="#">#{h Waxx/:site/:name}</a>
|
|
76
|
-
</div>
|
|
77
|
-
<div id="navbar" class="navbar-collapse collapse">
|
|
78
|
-
<ul class="nav navbar-nav">
|
|
79
|
-
<li class="active"><a href="#">Home</a></li>
|
|
80
|
-
<li><a href="#about">About</a></li>
|
|
81
|
-
<li><a href="#contact">Contact</a></li>
|
|
82
|
-
<li class="dropdown">
|
|
83
|
-
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
|
|
84
|
-
<ul class="dropdown-menu">
|
|
85
|
-
<li><a href="#">Action</a></li>
|
|
86
|
-
<li><a href="#">Another action</a></li>
|
|
87
|
-
<li><a href="#">Something else here</a></li>
|
|
88
|
-
<li role="separator" class="divider"></li>
|
|
89
|
-
<li class="dropdown-header">Nav header</li>
|
|
90
|
-
<li><a href="#">Separated link</a></li>
|
|
91
|
-
<li><a href="#">One more separated link</a></li>
|
|
92
|
-
</ul>
|
|
93
|
-
</li>
|
|
94
|
-
</ul>
|
|
95
|
-
</div>
|
|
96
|
-
</div>
|
|
97
|
-
</nav>
|
|
98
|
-
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
)
|
|
56
|
+
%(
|
|
57
|
+
<nav class="df g-m p-m">
|
|
58
|
+
<a href="/">Home</a>
|
|
59
|
+
<a href="/about">About</a>
|
|
60
|
+
</nav>
|
|
61
|
+
)
|
|
102
62
|
end
|
|
103
63
|
|
|
104
64
|
def usr_menu(x)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def admin(x, title:nil, content:nil, message:{type:"alert", message: nil}, css:[], js:[], js_ready:nil)
|
|
112
|
-
render(x, title:title, content_class: "container", message: message, css: css, js: js, js_ready: js_ready,
|
|
113
|
-
content: %(
|
|
114
|
-
<div style="background-color: white">
|
|
115
|
-
<div class="container">
|
|
116
|
-
#{admin_menu(x)}
|
|
117
|
-
<div id="admin-panel">#{content}</div>
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
65
|
+
if x.usr?
|
|
66
|
+
%(
|
|
67
|
+
<a href="/usr/profile"><i class="fa-light fa-user"></i> #{h x.usr['un']}</a>
|
|
68
|
+
<a href="/usr/signout"><i class="fa-light fa-exit"></i> #{h x.usr['un']}</a>
|
|
120
69
|
)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
["/admin","Admin","admin"],
|
|
128
|
-
["/usr","People","admin"],
|
|
129
|
-
["/content","Content","admin"],
|
|
130
|
-
["/website_page","Webpages","admin"]
|
|
131
|
-
].map{|m|
|
|
132
|
-
next if m[2] and not x.group? m[2]
|
|
133
|
-
cls = x.req.uri =~ /^#{m[0]}/ ? "active" : ""
|
|
134
|
-
%(<li role="presentation" class="#{cls}"><a href="#{m[0]}">#{h m[1]}</a></li>)
|
|
135
|
-
}.compact
|
|
136
|
-
re << "</ul>"
|
|
137
|
-
re.join("")
|
|
70
|
+
else
|
|
71
|
+
%(
|
|
72
|
+
<a href="/usr/signup">Sign up</a>
|
|
73
|
+
<a href="/usr/signin">Sign in</a>
|
|
74
|
+
)
|
|
75
|
+
end
|
|
138
76
|
end
|
|
139
|
-
|
|
77
|
+
|
|
140
78
|
# Type can be: success info warning danger
|
|
141
79
|
def alert(type="info", message="")
|
|
142
80
|
return "" if message.empty?
|
|
143
81
|
signs = {success: "info", info: "info", warning: "warning", danger: "warning"}
|
|
144
|
-
%(
|
|
145
|
-
<
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
def app_modal(x)
|
|
149
|
-
%(
|
|
150
|
-
<div style="display: none;" class="modal fade in" id="apps-modal" tabindex="-1" role="dialog" aria-hidden="true">
|
|
151
|
-
<div class="modal-sm modal-dialog modal-dialog-top">
|
|
152
|
-
<div class="modal-content">
|
|
153
|
-
<div class="block block-themed block-transparent">
|
|
154
|
-
<div class="block-header bg-primary-dark">
|
|
155
|
-
<ul class="block-options">
|
|
156
|
-
<li>
|
|
157
|
-
<button data-dismiss="modal" type="button"><i class="si si-close"></i></button>
|
|
158
|
-
</li>
|
|
159
|
-
</ul>
|
|
160
|
-
<h3 class="block-title"></h3>
|
|
161
|
-
</div>
|
|
162
|
-
<div class="block-content"></div>
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
82
|
+
%(
|
|
83
|
+
<div class="alert alert-#{type}" role="alert">
|
|
84
|
+
<i class="fa-light fa-#{signs[type.to_sym]}"></i> #{message.h}
|
|
165
85
|
</div>
|
|
166
|
-
|
|
167
|
-
)
|
|
86
|
+
)
|
|
168
87
|
end
|
|
169
88
|
|
|
170
89
|
def foot(x)
|
|
171
90
|
%(
|
|
172
|
-
|
|
173
|
-
<footer class="container">
|
|
91
|
+
<footer class="p-l">
|
|
174
92
|
<p class="pull-right"><a href="#">Back to top</a></p>
|
|
175
|
-
<p>© #{Time.new.year} #{h Waxx/:site/:name} · <a href="
|
|
93
|
+
<p>© #{Time.new.year} #{h Waxx/:site/:name} · <a href="/about/privacy">Privacy</a> · <a href="/about/terms">Terms</a></p>
|
|
176
94
|
<p><a href="https://www.waxx.io/">Delivered by Waxx in #{'%.1f' % ((Time.new - x.req.start_time) * 1000)} ms</a>.</p>
|
|
177
95
|
</footer>
|
|
178
96
|
)
|
|
@@ -180,12 +98,8 @@ module App::Html
|
|
|
180
98
|
|
|
181
99
|
def script(x, js:[], js_ready:"")
|
|
182
100
|
%(
|
|
183
|
-
#{(standard_js + js).map{|f| %(<script src="#{f}"
|
|
184
|
-
<script
|
|
185
|
-
$(document).ready(function(){
|
|
186
|
-
#{js_ready}
|
|
187
|
-
})
|
|
188
|
-
</script>
|
|
101
|
+
#{(standard_js + js).map{|f| %(<script src="#{f}"></script>) }.join}
|
|
102
|
+
<script>document.addEventListener('DOMContentLoaded', () => { #{js_ready} });</script>
|
|
189
103
|
)
|
|
190
104
|
end
|
|
191
105
|
|
data/skel/app/usr/usr.rb
CHANGED
|
@@ -134,10 +134,10 @@ module App::Usr
|
|
|
134
134
|
desc: "The home page of a logged in usr",
|
|
135
135
|
acl: "user",
|
|
136
136
|
get: proc{|x, *args|
|
|
137
|
-
usr =
|
|
138
|
-
person = App::Person.
|
|
137
|
+
usr = by_id(x, x.usr['id'])
|
|
138
|
+
person = App::Person.by_id(x, x.usr['id'])
|
|
139
139
|
App::Html.render(x,
|
|
140
|
-
title: "#{person['first_name']
|
|
140
|
+
title: "#{person['first_name']} #{person['last_name']}",
|
|
141
141
|
content: App::Usr::Html.home(x, usr: usr, person: person)
|
|
142
142
|
)
|
|
143
143
|
}
|
|
@@ -194,7 +194,7 @@ module App::Usr
|
|
|
194
194
|
x << %({"success":true})
|
|
195
195
|
else
|
|
196
196
|
x.res.status = 302
|
|
197
|
-
x.res['
|
|
197
|
+
x.res['location'] = '/'
|
|
198
198
|
end
|
|
199
199
|
}
|
|
200
200
|
},
|
data/skel/app/waxx/waxx.rb
CHANGED
|
@@ -62,7 +62,7 @@ module App::Waxx
|
|
|
62
62
|
desc: {
|
|
63
63
|
desc: "Describes all of the applications interfaces.",
|
|
64
64
|
acl: "dev",
|
|
65
|
-
get: ->(x, app="all"){
|
|
65
|
+
get: -> (x, app="all"){
|
|
66
66
|
return App.error(x, status: 300, title: 'Request Error', message: 'This method only return json or yaml') unless %w(json yaml).include? x.ext
|
|
67
67
|
re = {}
|
|
68
68
|
describe = -> (ap) {
|
metadata
CHANGED
|
@@ -1,40 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: waxx
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dan Fitzpatrick
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir:
|
|
10
10
|
- bin
|
|
11
|
-
cert_chain:
|
|
12
|
-
-
|
|
13
|
-
-----BEGIN CERTIFICATE-----
|
|
14
|
-
MIIEHDCCAoSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDDBFkYW4v
|
|
15
|
-
REM9d2F4eC9EQz1pbzAeFw0xOTA3MjcwOTQ5MDVaFw0yMDA3MjYwOTQ5MDVaMBwx
|
|
16
|
-
GjAYBgNVBAMMEWRhbi9EQz13YXh4L0RDPWlvMIIBojANBgkqhkiG9w0BAQEFAAOC
|
|
17
|
-
AY8AMIIBigKCAYEAsglMsPILqXZwqDOa90PXxZ8BSxJun8XEUVuARccLbjrXVzc8
|
|
18
|
-
mSN+vbz7x3E+XSFJJnwvl3t/q596YsXXZe2L3igRewlegpGKvHl6txutdD87BBs/
|
|
19
|
-
2nFE0tdZPK7Z4zXJTU0DLhnW7P+kWk7/XbUdzK6OCLCwWi/c59X5XA0SqPALSaN/
|
|
20
|
-
LnHyP8RJ9Lgr+HO9t7ifCwnkY/vTnEQldTwMI1AtvA/vU8i0JC/1ga8Q3ZwdY9A3
|
|
21
|
-
uKwGy1aD8n9UgsJ575h/durNzzY45s070qJSypF20AORP78TM5qSYK26DQsRI2Gf
|
|
22
|
-
3mk+JxzxjEYHUaNrwFMDNwNUZC1rtC4ZJnm4rn7W28mV5EY6Y7uJklLLUR5TUIz6
|
|
23
|
-
CDn1xHloCqe0w7kjqYA2wgZmcDQep6njjeH4+MI0Zf6NQsDq2YvyfjWwQ4WjMKSB
|
|
24
|
-
AFwtLsp7uFKPrhQZzK/Tur6+elLrRXpmc/YFUvGKxdqQJnskUW30YMjTamAZ0pcp
|
|
25
|
-
eufQJs2fmy/dN/lHAgMBAAGjaTBnMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
|
|
26
|
-
A1UdDgQWBBTkpfOYyNV5n1gahXFWfTI+4c7yyjAWBgNVHREEDzANgQtkYW5Ad2F4
|
|
27
|
-
eC5pbzAWBgNVHRIEDzANgQtkYW5Ad2F4eC5pbzANBgkqhkiG9w0BAQsFAAOCAYEA
|
|
28
|
-
eeB09ej0LuKC3bFK5rqC+Kqq/CssiV/P9fYR4WZn7+rMYEW9tR8HnmWRs6gTd4OB
|
|
29
|
-
fpvNoGcFcUAJg7lMyluXh2U7dqk4NfcLJqtFEcqhbAbYPrET8rcdFflJ55h5JK2q
|
|
30
|
-
jBjBV06q8jkIFvRttqebb6A2EFl1aE4hyI0t0OJyj0lVRkW157roguS6RU47N4g0
|
|
31
|
-
2u/LLlP67FStO4uw3rUMYNcR1Rdc8feT8WzEom8cyitkSeRBeqQ5w1mo5thyXBwh
|
|
32
|
-
kRnGOP+Ij4VrBxI1uii2e2j/sXdf01lUfJvp1A4WQAAc+vP+qmFAUL9sA1RVbwDN
|
|
33
|
-
cNz8/vxCZDMuVKJElhaLN07fSimHTy5QiOc+EJjmht8HGVo6xeo8FPAGoyYf6VTP
|
|
34
|
-
PpuD1dp8JPvtbfHD2fCgY1Uds71F6B+K0b6ekXli5toqH/ZbYw3+6LFZz/FE5vUo
|
|
35
|
-
Wf5j8aPxUlS26tTkD8GmaWtlnRFSMQPLTGACyoCnF2sC5R1xr7Ab0VxwSm0/qDPN
|
|
36
|
-
-----END CERTIFICATE-----
|
|
37
|
-
date: 2019-07-27 00:00:00.000000000 Z
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2024-10-08 00:00:00.000000000 Z
|
|
38
13
|
dependencies: []
|
|
39
14
|
description: Waxx is a high performace REST/RPC hybrid web application development
|
|
40
15
|
framework.
|
|
@@ -47,6 +22,11 @@ files:
|
|
|
47
22
|
- LICENSE
|
|
48
23
|
- README.md
|
|
49
24
|
- bin/waxx
|
|
25
|
+
- lib/.yardoc/checksums
|
|
26
|
+
- lib/.yardoc/complete
|
|
27
|
+
- lib/.yardoc/object_types
|
|
28
|
+
- lib/.yardoc/objects/root.dat
|
|
29
|
+
- lib/.yardoc/proxy_types
|
|
50
30
|
- lib/waxx.rb
|
|
51
31
|
- lib/waxx/app.rb
|
|
52
32
|
- lib/waxx/conf.rb
|
|
@@ -55,6 +35,7 @@ files:
|
|
|
55
35
|
- lib/waxx/database.rb
|
|
56
36
|
- lib/waxx/encrypt.rb
|
|
57
37
|
- lib/waxx/error.rb
|
|
38
|
+
- lib/waxx/generate.rb
|
|
58
39
|
- lib/waxx/html.rb
|
|
59
40
|
- lib/waxx/http.rb
|
|
60
41
|
- lib/waxx/init.rb
|
|
@@ -80,6 +61,7 @@ files:
|
|
|
80
61
|
- lib/waxx/waxx.rb
|
|
81
62
|
- lib/waxx/x.rb
|
|
82
63
|
- skel/README.md
|
|
64
|
+
- skel/app/about/about.rb
|
|
83
65
|
- skel/app/app.rb
|
|
84
66
|
- skel/app/app/app.rb
|
|
85
67
|
- skel/app/app/error/app_error.rb
|
|
@@ -109,7 +91,6 @@ files:
|
|
|
109
91
|
- skel/opt/stage/config.yaml
|
|
110
92
|
- skel/opt/test/config.yaml
|
|
111
93
|
- skel/private/README.md
|
|
112
|
-
- skel/public/lib/site.css
|
|
113
94
|
- skel/public/lib/waxx/w.ico
|
|
114
95
|
- skel/public/lib/waxx/w.png
|
|
115
96
|
- skel/public/lib/waxx/waxx.js
|
|
@@ -118,10 +99,7 @@ homepage: https://www.waxx.io/
|
|
|
118
99
|
licenses:
|
|
119
100
|
- Apache-2.0
|
|
120
101
|
metadata: {}
|
|
121
|
-
post_install_message:
|
|
122
|
-
|
|
123
|
-
Thanks for installing Waxx.
|
|
124
|
-
See <www.waxx.io> for more info.
|
|
102
|
+
post_install_message:
|
|
125
103
|
rdoc_options: []
|
|
126
104
|
require_paths:
|
|
127
105
|
- lib
|
|
@@ -136,8 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
136
114
|
- !ruby/object:Gem::Version
|
|
137
115
|
version: '0'
|
|
138
116
|
requirements: []
|
|
139
|
-
rubygems_version: 3.
|
|
140
|
-
signing_key:
|
|
117
|
+
rubygems_version: 3.5.14
|
|
118
|
+
signing_key:
|
|
141
119
|
specification_version: 4
|
|
142
120
|
summary: A fast and flexible application development framework
|
|
143
121
|
test_files: []
|
checksums.yaml.gz.sig
DELETED
|
Binary file
|
data/skel/public/lib/site.css
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/* Site-specific CSS */
|
|
2
|
-
body{margin: 0}
|
|
3
|
-
body.home > .container{
|
|
4
|
-
margin-top: 20px;
|
|
5
|
-
}
|
|
6
|
-
nav{
|
|
7
|
-
height: 133px;
|
|
8
|
-
background-color: white;
|
|
9
|
-
line-height: 1;
|
|
10
|
-
}
|
|
11
|
-
.logo{
|
|
12
|
-
font-family: Courier, Courier New, monospace;
|
|
13
|
-
}
|
|
14
|
-
nav .logo{
|
|
15
|
-
margin-top: 40px;
|
|
16
|
-
display: block;
|
|
17
|
-
font-size: 100px;
|
|
18
|
-
color: #333;
|
|
19
|
-
}
|
|
20
|
-
nav .items{
|
|
21
|
-
margin: 100px 0 0 280px;
|
|
22
|
-
}
|
|
23
|
-
nav .items a{
|
|
24
|
-
display: inline-block;
|
|
25
|
-
margin: 0 2em 0 0;
|
|
26
|
-
font-size: 16px;
|
|
27
|
-
font-weight: 100;
|
|
28
|
-
color: #555;
|
|
29
|
-
text-transform: uppercase;
|
|
30
|
-
}
|
|
31
|
-
nav a.btn{
|
|
32
|
-
color: white;
|
|
33
|
-
background-color: #333;
|
|
34
|
-
border: 1px solid #555;
|
|
35
|
-
font-size: 20px;
|
|
36
|
-
padding: 4px 8px 0px;
|
|
37
|
-
margin-right: 6px;
|
|
38
|
-
}
|
|
39
|
-
/* Homepage slides */
|
|
40
|
-
.slides{
|
|
41
|
-
position: absolute;
|
|
42
|
-
top: 133px;
|
|
43
|
-
left: 0;
|
|
44
|
-
line-height: 1;
|
|
45
|
-
z-index: 1;
|
|
46
|
-
width: 100%;
|
|
47
|
-
height: calc(width * .3);
|
|
48
|
-
}
|
|
49
|
-
.slides .demo-code{
|
|
50
|
-
position: absolute;
|
|
51
|
-
z-index: 20;
|
|
52
|
-
top: 50px;
|
|
53
|
-
left: 0;
|
|
54
|
-
min-width: 10%;
|
|
55
|
-
color: black;
|
|
56
|
-
background-color: rgba(255,255,255,0.7);
|
|
57
|
-
border: 1px solid rgba(0,0,0,.4);
|
|
58
|
-
border-radius: 0 8px 8px 0;
|
|
59
|
-
}
|
|
60
|
-
.slides .slide{
|
|
61
|
-
position: absolute;
|
|
62
|
-
top: 0;
|
|
63
|
-
left: 0;
|
|
64
|
-
line-height: 1;
|
|
65
|
-
z-index: 15;
|
|
66
|
-
width: 100%;
|
|
67
|
-
}
|
|
68
|
-
.slides .slide > img{
|
|
69
|
-
width: 100%;
|
|
70
|
-
}
|
|
71
|
-
.slides .caption{
|
|
72
|
-
font-family: Courier, Courier New, monospace;
|
|
73
|
-
position: absolute;
|
|
74
|
-
top: 10%;
|
|
75
|
-
left: 20px;
|
|
76
|
-
right: 30px;
|
|
77
|
-
text-align: right;
|
|
78
|
-
color: rgba(255,255,255,.9);
|
|
79
|
-
font-size: 70px;
|
|
80
|
-
font-weight: bolder;
|
|
81
|
-
z-index: 25;
|
|
82
|
-
text-shadow: rgba(0, 0, 0, 0.7) 0px 2px 3px;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
code{
|
|
86
|
-
font-family: Courier, Courier New, monospace;
|
|
87
|
-
}
|
|
88
|
-
body{
|
|
89
|
-
font-family: Helvetica, Arial, Sans-serif;
|
|
90
|
-
background-color: #e8e8e8;
|
|
91
|
-
}
|
|
92
|
-
h1{
|
|
93
|
-
margin-top: 40px;
|
|
94
|
-
font-size: 44px;
|
|
95
|
-
font-weight: bolder;
|
|
96
|
-
text-transform: uppercase;
|
|
97
|
-
}
|
|
98
|
-
.container{
|
|
99
|
-
margin-bottom: 10px;
|
|
100
|
-
}
|
|
101
|
-
nav a.usr{
|
|
102
|
-
border: 1px solid #999;
|
|
103
|
-
color: #eee;
|
|
104
|
-
display: block;
|
|
105
|
-
margin: 0 4px;
|
|
106
|
-
padding: 4px 8px 2px;
|
|
107
|
-
border-radius: 3px;
|
|
108
|
-
}
|
|
109
|
-
nav a:hover{
|
|
110
|
-
color: #111;
|
|
111
|
-
}
|
|
112
|
-
footer{
|
|
113
|
-
height: 212px;
|
|
114
|
-
margin-top: 40px;
|
|
115
|
-
font-size: 15px;
|
|
116
|
-
line-height: 24px;
|
|
117
|
-
background-color: #292929;
|
|
118
|
-
color: white;
|
|
119
|
-
font-weight: lighter;
|
|
120
|
-
}
|
|
121
|
-
footer div{
|
|
122
|
-
color: white;
|
|
123
|
-
vertical-align: middle;
|
|
124
|
-
}
|
|
125
|
-
footer .logo{
|
|
126
|
-
display: block;
|
|
127
|
-
font-size: 80px;
|
|
128
|
-
color: #ddd;
|
|
129
|
-
line-height: 1.2;
|
|
130
|
-
}
|
|
131
|
-
footer .contact{
|
|
132
|
-
margin-top: 20px;
|
|
133
|
-
}
|
|
134
|
-
footer .copyright{
|
|
135
|
-
font-size: 10px;
|
|
136
|
-
opacity: .5;
|
|
137
|
-
}
|
|
138
|
-
footer a{
|
|
139
|
-
text-decoration: none;
|
|
140
|
-
color: white;
|
|
141
|
-
}
|
|
142
|
-
footer a:hover{
|
|
143
|
-
text-decoration: underline;
|
|
144
|
-
color: white;
|
|
145
|
-
}
|
|
146
|
-
a.edit-icon{
|
|
147
|
-
color: #999;
|
|
148
|
-
}
|
|
149
|
-
a.edit-icon:hover{
|
|
150
|
-
color: #333;
|
|
151
|
-
}
|
|
152
|
-
.doc-menu a{
|
|
153
|
-
display: block;
|
|
154
|
-
padding: 10px;
|
|
155
|
-
border-bottom: 1px solid #fff;
|
|
156
|
-
}
|
|
157
|
-
.doc-menu a:hover, .doc-menu a.on{
|
|
158
|
-
background-color: white;
|
|
159
|
-
}
|
|
160
|
-
.clear{
|
|
161
|
-
clear: both;
|
|
162
|
-
}
|
|
163
|
-
/* Phones */
|
|
164
|
-
@media all and (max-width: 459px) {
|
|
165
|
-
nav{ height: 60px; }
|
|
166
|
-
nav .items{ margin: 2px 0 0 140px; }
|
|
167
|
-
nav .items a{ font-size: 10px; margin-right: 1em; }
|
|
168
|
-
nav .logo{ margin-top: 12px; width: 126px; height: 40px; }
|
|
169
|
-
h1{ margin-top: 40px; font-size: 24px; }
|
|
170
|
-
footer .logo{ width: 116px; height: 40px; margin-top: 21px; }
|
|
171
|
-
footer .copyright{ font-size: 6px; }
|
|
172
|
-
footer{ height: 282px; font-size: 11px;}
|
|
173
|
-
}
|
|
174
|
-
@media all and (min-width: 460px) and (max-width: 539px) {
|
|
175
|
-
nav{ height: 80px; }
|
|
176
|
-
nav .items{ margin: 12px 0 0 210px; }
|
|
177
|
-
nav .items a{ font-size: 12px; margin-right: 1em; }
|
|
178
|
-
nav .logo{ margin-top: 15px; width: 189px; height: 60px; }
|
|
179
|
-
.slide-panel .callout{ top: 229px; width: 140px; height: 164px; font-size: 20px; }
|
|
180
|
-
h1{ margin-top: 40px; font-size: 24px; }
|
|
181
|
-
footer .logo{ width: 116px; height: 40px; margin-top: 21px; }
|
|
182
|
-
footer .copyright{ font-size: 6px; }
|
|
183
|
-
footer{ height: 282px; font-size: 11px;}
|
|
184
|
-
}
|
|
185
|
-
@media all and (min-width: 540px) and (max-width: 749px) {
|
|
186
|
-
nav{ height: 100px; }
|
|
187
|
-
nav .items{ margin: 50px 0 0 240px; }
|
|
188
|
-
nav .items a{ font-size: 13px; margin-right: 1em; }
|
|
189
|
-
nav .logo{ margin-top: 30px; width: 200px; height: 63px; }
|
|
190
|
-
footer .logo{ width: 139px; height: 48px; margin-top: 21px; }
|
|
191
|
-
footer .copyright{ font-size: 6px; }
|
|
192
|
-
}
|
|
193
|
-
/* Tablet */
|
|
194
|
-
@media all and (min-width: 750px) and (max-width: 991px) {
|
|
195
|
-
nav .items{ margin: 100px 0 0 270px; }
|
|
196
|
-
nav .items a{ font-size: 13px; margin-right: 1em; }
|
|
197
|
-
}
|
|
198
|
-
@media all and (min-width: 992px) and (max-width: 1199px) {
|
|
199
|
-
}
|
|
200
|
-
/* Large desktops and up */
|
|
201
|
-
@media all and (min-width: 1200px) {
|
|
202
|
-
}
|
data.tar.gz.sig
DELETED
|
Binary file
|
metadata.gz.sig
DELETED