first commit

This commit is contained in:
Senad Uka
2018-05-07 16:07:00 +02:00
commit 8b4f09f9d5
3368 changed files with 852614 additions and 0 deletions

54
public/bower_components/vex/.bower.json vendored Executable file
View File

@@ -0,0 +1,54 @@
{
"name": "vex",
"version": "2.3.4",
"homepage": "http://github.hubspot.com/vex/docs/welcome",
"authors": [
"Adam Schwartz <aschwartz@hubspot.com>"
],
"description": "Beautiful, functional, dialogs in Javascript",
"main": [
"js/vex.js",
"js/vex.dialog.js",
"js/vex.combined.js",
"css/vex.css",
"css/vex-theme-bottom-right-corner.css",
"css/vex-theme-default.css",
"css/vex-theme-flat-attack.css",
"css/vex-theme-os.css",
"css/vex-theme-plain.css",
"css/vex-theme-top.css",
"css/vex-theme-wireframe.css"
],
"keywords": [
"dialog",
"modal",
"client-side",
"javascript",
"css",
"themes",
"alert",
"confirm",
"prompt"
],
"license": "MIT",
"ignore": [
"node_modules",
"bower_components",
"docs",
".gitignore",
".hsdoc",
"Gruntfile.coffee",
"component.json",
"package.json"
],
"_release": "2.3.4",
"_resolution": {
"type": "version",
"tag": "v2.3.4",
"commit": "d208e620caed97ce003777a34af8499530cc8a06"
},
"_source": "https://github.com/HubSpot/vex.git",
"_target": "2.3.4",
"_originalSource": "vex",
"_direct": true
}

8
public/bower_components/vex/LICENSE vendored Executable file
View File

@@ -0,0 +1,8 @@
Copyright (c) 2013 HubSpot, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

97
public/bower_components/vex/OVERVIEW.md vendored Executable file
View File

@@ -0,0 +1,97 @@
## vex
Dialogs for the 21st century.
### [Demo](http://github.hubspot.com/vex/docs/welcome/) — [Documentation](http://github.hubspot.com/vex/)
### Take control of your dialogs
Vex is a modern dialog library which is highly configurable, easily stylable, and gets out of the way. You'll love vex because it's tiny (`6kb` minified, `2kb` minified+gz), has a clear and simple API, works on mobile devices, and can be customized to match your style in seconds.
#### Features
- Drop-in replacement for `alert`, `confirm`, and `prompt`
- Easilly configurable animations which are smooth as butter
- Tiny footprint (`6kb` minified) and only depends on `jQuery`
- Looks and behaves great on mobile devices
- Open multiple dialogs at once and close them individually or all at once
- Built in CSS spinner for asynchronous dialogs
#### Documentation
- [Documentation Home](http://github.hubspot.com/vex/).
- [Vex Documentation](http://github.hubspot.com/vex/api/vex/).
- [Vex Dialog Documentation](http://github.hubspot.com/vex/api/vex_dialog/).
### How To Use Vex
#### Basics of Opening and Passing Content
To open a dialog, call `vex.open`.
```coffeescript
vex.open
content: '<div>Content</div>'
afterOpen: ($vexContent) ->
# console.log $vexContent.data().vex
$vexContent.append $el
afterClose: ->
console.log 'vexClose'
```
Instead of using callbacks, you can choose to chain off the open call and bind to vexOpen and vexClose events. For example:
```coffeescript
vex
.open()
.append($el)
.bind('vexOpen', (options) ->
options.$vexContent.append $el
)
.bind('vexClose', ->
console.log 'vexClose'
)
```
Read more about Vex in the [API docs](http://github.hubspot.com/vex/api/vex/).
#### Vex Dialog
When including `vex.dialog`, you get dropin replacements for `alert`, `confirm`, and `prompt`.
```html
<script src="vex.dialog.js"></script>
```
### API
Vex Dialog exposes 4 main apis:
- `vex.dialog.alert(stringOrOptions)`
- `vex.dialog.confirm(options)`
- `vex.dialog.prompt(options)`
- `vex.dialog.open(options)`
(Internally, `alert`, `confirm`, and `prompt` call `open` with a different compositions of options.)
Read more about Vex dialog in the [API docs](http://github.hubspot.com/vex/api/vex_dialog/).
#### Options
When calling `vex.open()` you can pass a number of options to handle styling and certain behaviors.
Here are the defaults:
```coffeescript
defaultOptions:
content: ''
showCloseButton: true
overlayClosesOnClick: true
appendLocation: 'body'
className: ''
css: {}
overlayClassName: ''
overlayCSS: {}
closeClassName: ''
closeCSS: {}
```

7
public/bower_components/vex/README.md vendored Executable file
View File

@@ -0,0 +1,7 @@
## vex
### [Demo](http://github.hubspot.com/vex/docs/welcome/) &nbsp;&nbsp; [Documentation](http://github.hubspot.com/vex/)
Vex is a modern dialog library which is highly configurable, easily stylable, and gets out of the way. You'll love vex because it's tiny (`6kb` minified, `2kb` minifed + gzipped), has a clear and simple API, works on mobile devices, and can be customized to match your style in seconds.
![](https://raw.github.com/HubSpot/vex/master/docs/vex.gif)

44
public/bower_components/vex/bower.json vendored Executable file
View File

@@ -0,0 +1,44 @@
{
"name": "vex",
"version": "2.3.4",
"homepage": "http://github.hubspot.com/vex/docs/welcome",
"authors": [
"Adam Schwartz <aschwartz@hubspot.com>"
],
"description": "Beautiful, functional, dialogs in Javascript",
"main": [
"js/vex.js",
"js/vex.dialog.js",
"js/vex.combined.js",
"css/vex.css",
"css/vex-theme-bottom-right-corner.css",
"css/vex-theme-default.css",
"css/vex-theme-flat-attack.css",
"css/vex-theme-os.css",
"css/vex-theme-plain.css",
"css/vex-theme-top.css",
"css/vex-theme-wireframe.css"
],
"keywords": [
"dialog",
"modal",
"client-side",
"javascript",
"css",
"themes",
"alert",
"confirm",
"prompt"
],
"license": "MIT",
"ignore": [
"node_modules",
"bower_components",
"docs",
".gitignore",
".hsdoc",
"Gruntfile.coffee",
"component.json",
"package.json"
]
}

200
public/bower_components/vex/coffee/vex.coffee vendored Executable file
View File

@@ -0,0 +1,200 @@
vexFactory = ($) ->
animationEndSupport = false
$ ->
# Detect CSS Animation Support
s = (document.body || document.documentElement).style
animationEndSupport = s.animation isnt undefined or s.WebkitAnimation isnt undefined or s.MozAnimation isnt undefined or s.MsAnimation isnt undefined or s.OAnimation isnt undefined
# Register global handler for ESC
$(window).bind 'keyup.vex', (event) ->
vex.closeByEscape() if event.keyCode is 27
# Vex
vex =
globalID: 1
animationEndEvent: 'animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend' # Inconsistent casings are intentional http://stackoverflow.com/a/12958895/131898
baseClassNames:
vex: 'vex'
content: 'vex-content'
overlay: 'vex-overlay'
close: 'vex-close'
closing: 'vex-closing'
open: 'vex-open'
defaultOptions:
content: ''
showCloseButton: true
escapeButtonCloses: true
overlayClosesOnClick: true
appendLocation: 'body'
className: ''
css: {}
overlayClassName: ''
overlayCSS: {}
contentClassName: ''
contentCSS: {}
closeClassName: ''
closeCSS: {}
open: (options) ->
options = $.extend {}, vex.defaultOptions, options
options.id = vex.globalID
vex.globalID += 1
# Vex
options.$vex = $('<div>')
.addClass(vex.baseClassNames.vex)
.addClass(options.className)
.css(options.css)
.data(vex: options)
# Overlay
options.$vexOverlay = $('<div>')
.addClass(vex.baseClassNames.overlay)
.addClass(options.overlayClassName)
.css(options.overlayCSS)
.data(vex: options)
if options.overlayClosesOnClick
options.$vexOverlay.bind 'click.vex', (e) ->
return unless e.target is @
vex.close $(@).data().vex.id
options.$vex.append options.$vexOverlay
# Content
options.$vexContent = $('<div>')
.addClass(vex.baseClassNames.content)
.addClass(options.contentClassName)
.css(options.contentCSS)
.append(options.content)
.data(vex: options)
options.$vex.append options.$vexContent
# Close button
if options.showCloseButton
options.$closeButton = $('<div>')
.addClass(vex.baseClassNames.close)
.addClass(options.closeClassName)
.css(options.closeCSS)
.data(vex: options)
.bind('click.vex', -> vex.close $(@).data().vex.id)
options.$vexContent.append options.$closeButton
# Inject DOM and trigger callbacks/events
$(options.appendLocation).append options.$vex
# Set up body className
vex.setupBodyClassName options.$vex
# Call afterOpen callback and trigger vexOpen event
options.afterOpen options.$vexContent, options if options.afterOpen
setTimeout (-> options.$vexContent.trigger 'vexOpen', options), 0
return options.$vexContent # For chaining
getSelectorFromBaseClass: (baseClass) ->
return ".#{baseClass.split(' ').join('.')}"
getAllVexes: ->
return $(""".#{vex.baseClassNames.vex}:not(".#{vex.baseClassNames.closing}") #{vex.getSelectorFromBaseClass(vex.baseClassNames.content)}""")
getVexByID: (id) ->
return vex.getAllVexes().filter(-> $(@).data().vex.id is id)
close: (id) ->
if not id
$lastVex = vex.getAllVexes().last()
return false unless $lastVex.length
id = $lastVex.data().vex.id
return vex.closeByID id
closeAll: ->
ids = vex.getAllVexes().map(-> $(@).data().vex.id).toArray()
return false unless ids?.length
$.each ids.reverse(), (index, id) -> vex.closeByID id
return true
closeByID: (id) ->
$vexContent = vex.getVexByID id
return unless $vexContent.length
$vex = $vexContent.data().vex.$vex
options = $.extend {}, $vexContent.data().vex
beforeClose = ->
options.beforeClose $vexContent, options if options.beforeClose
close = ->
$vexContent.trigger 'vexClose', options
$vex.remove()
$('body').trigger 'vexAfterClose', options # Triggered on the body since $vexContent was removed
options.afterClose $vexContent, options if options.afterClose
hasAnimation = $vexContent.css('animationName') != 'none' && $vexContent.css('animationDuration') != '0s'
if animationEndSupport && hasAnimation
unless beforeClose() is false
$vex
.unbind(vex.animationEndEvent).bind(vex.animationEndEvent, -> close())
.addClass(vex.baseClassNames.closing)
else
unless beforeClose() is false
close()
return true
closeByEscape: ->
ids = vex.getAllVexes().map(-> $(@).data().vex.id).toArray()
return false unless ids?.length
id = Math.max ids...
$lastVex = vex.getVexByID id
return false if $lastVex.data().vex.escapeButtonCloses isnt true
return vex.closeByID id
setupBodyClassName: ($vex) ->
$('body')
.bind('vexOpen.vex', -> $('body').addClass(vex.baseClassNames.open))
.bind('vexAfterClose.vex', -> $('body').removeClass(vex.baseClassNames.open) unless vex.getAllVexes().length)
hideLoading: ->
$('.vex-loading-spinner').remove()
showLoading: ->
vex.hideLoading()
$('body').append("""<div class="vex-loading-spinner #{vex.defaultOptions.className}"></div>""")
if typeof define is 'function' and define.amd
# AMD
define ['jquery'], vexFactory
else if typeof exports is 'object'
# CommonJS
module.exports = vexFactory require('jquery')
else
# Global
window.vex = vexFactory jQuery

View File

@@ -0,0 +1,151 @@
vexDialogFactory = ($, vex) ->
return $.error('Vex is required to use vex.dialog') unless vex?
$formToObject = ($form) ->
object = {}
$.each $form.serializeArray(), ->
if object[@name]
object[@name] = [object[@name]] if !object[@name].push
object[@name].push(@value || '')
else
object[@name] = @value || '';
object
dialog = {}
dialog.buttons =
YES:
text: 'OK'
type: 'submit'
className: 'vex-dialog-button-primary'
NO:
text: 'Cancel'
type: 'button'
className: 'vex-dialog-button-secondary'
click: ($vexContent, event) ->
$vexContent.data().vex.value = false
vex.close $vexContent.data().vex.id
dialog.defaultOptions =
callback: (value) ->
afterOpen: ->
message: 'Message'
input: """<input name="vex" type="hidden" value="_vex-empty-value" />"""
value: false
buttons: [
dialog.buttons.YES
dialog.buttons.NO
]
showCloseButton: false
onSubmit: (event) ->
$form = $ @
$vexContent = $form.parent()
event.preventDefault()
event.stopPropagation()
$vexContent.data().vex.value = dialog.getFormValueOnSubmit $formToObject $form
vex.close $vexContent.data().vex.id
focusFirstInput: true
dialog.defaultAlertOptions =
message: 'Alert'
buttons: [
dialog.buttons.YES
]
dialog.defaultConfirmOptions =
message: 'Confirm'
dialog.open = (options) ->
options = $.extend {}, vex.defaultOptions, dialog.defaultOptions, options
options.content = dialog.buildDialogForm options
beforeClose = options.beforeClose
options.beforeClose = ($vexContent, config) ->
options.callback config.value
beforeClose? $vexContent, config
$vexContent = vex.open options
if options.focusFirstInput
$vexContent.find('button[type="submit"], button[type="button"], input[type="submit"], input[type="button"], textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]').first().focus()
return $vexContent
dialog.alert = (options) ->
if typeof options is 'string'
options = message: options
options = $.extend {}, dialog.defaultAlertOptions, options
dialog.open options
dialog.confirm = (options) ->
if typeof options is 'string'
return $.error('''dialog.confirm(options) requires options.callback.''')
options = $.extend {}, dialog.defaultConfirmOptions, options
dialog.open options
dialog.prompt = (options) ->
if typeof options is 'string'
return $.error('''dialog.prompt(options) requires options.callback.''')
defaultPromptOptions =
message: """<label for="vex">#{ options.label or 'Prompt:' }</label>"""
input: """<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="#{ options.placeholder or '' }" value="#{ options.value or '' }" />"""
options = $.extend {}, defaultPromptOptions, options
dialog.open options
dialog.buildDialogForm = (options) ->
$form = $('<form class="vex-dialog-form" />')
$message = $('<div class="vex-dialog-message" />')
$input = $('<div class="vex-dialog-input" />')
$form
.append($message.append options.message)
.append($input.append options.input)
.append(dialog.buttonsToDOM options.buttons)
.bind('submit.vex', options.onSubmit)
return $form
dialog.getFormValueOnSubmit = (formData) ->
if formData.vex or formData.vex is ''
return true if formData.vex is '_vex-empty-value'
return formData.vex
else
return formData
dialog.buttonsToDOM = (buttons) ->
$buttons = $('<div class="vex-dialog-buttons" />')
$.each buttons, (index, button) ->
$button = $("""<button type="#{button.type}"></button>""")
.text(button.text)
.addClass(button.className + ' vex-dialog-button ' + (if index is 0 then 'vex-first ' else '') + (if index is buttons.length - 1 then 'vex-last ' else ''))
.bind('click.vex', (e) -> button.click($(@).parents(vex.getSelectorFromBaseClass(vex.baseClassNames.content)), e) if button.click)
$button.appendTo $buttons
return $buttons
# return dialog from factory
dialog
if typeof define is 'function' and define.amd
# AMD
define ['jquery', 'vex'], vexDialogFactory
else if typeof exports is 'object'
# CommonJS
module.exports = vexDialogFactory require('jquery'), require('./vex.js')
else
# Global
window.vex.dialog = vexDialogFactory window.jQuery, window.vex

View File

@@ -0,0 +1,437 @@
@keyframes vex-slideup {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 0; }
2% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-webkit-keyframes vex-slideup {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 0; }
2% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-moz-keyframes vex-slideup {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 0; }
2% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-ms-keyframes vex-slideup {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 0; }
2% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-o-keyframes vex-slideup {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 0; }
2% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@keyframes vex-slidedown {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px); } }
@-webkit-keyframes vex-slidedown {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px); } }
@-moz-keyframes vex-slidedown {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px); } }
@-ms-keyframes vex-slidedown {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px); } }
@-o-keyframes vex-slidedown {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(800px);
-webkit-transform: translateY(800px);
-moz-transform: translateY(800px);
-ms-transform: translateY(800px);
-o-transform: translateY(800px); } }
@keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-webkit-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-moz-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-ms-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-o-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-bottom-right-corner {
top: auto;
bottom: 0;
right: 0;
overflow: visible; }
.vex.vex-theme-bottom-right-corner .vex-overlay {
display: none; }
.vex.vex-theme-bottom-right-corner.vex-closing .vex-content {
animation: vex-slidedown 0.5s;
-webkit-animation: vex-slidedown 0.5s;
-moz-animation: vex-slidedown 0.5s;
-ms-animation: vex-slidedown 0.5s;
-o-animation: vex-slidedown 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-bottom-right-corner .vex-content {
animation: vex-slideup 0.5s;
-webkit-animation: vex-slideup 0.5s;
-moz-animation: vex-slideup 0.5s;
-ms-animation: vex-slideup 0.5s;
-o-animation: vex-slideup 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-bottom-right-corner .vex-content {
-moz-border-radius: 5px 0 0 0;
-webkit-border-radius: 5px 0 0 0;
border-radius: 5px 0 0 0;
font-family: "Helvetica Neue", sans-serif;
background: #f0f0f0;
color: #444;
padding: 1em;
max-width: 100%;
width: 450px;
font-size: 1.1em;
line-height: 1.5em;
position: fixed;
bottom: 0;
right: 0;
left: auto; }
.vex.vex-theme-bottom-right-corner .vex-content h1, .vex.vex-theme-bottom-right-corner .vex-content h2, .vex.vex-theme-bottom-right-corner .vex-content h3, .vex.vex-theme-bottom-right-corner .vex-content h4, .vex.vex-theme-bottom-right-corner .vex-content h5, .vex.vex-theme-bottom-right-corner .vex-content h6, .vex.vex-theme-bottom-right-corner .vex-content p, .vex.vex-theme-bottom-right-corner .vex-content ul, .vex.vex-theme-bottom-right-corner .vex-content li {
color: inherit; }
.vex.vex-theme-bottom-right-corner .vex-close {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-bottom-right-corner .vex-close:before {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
position: absolute;
content: "\00D7";
font-size: 26px;
font-weight: normal;
line-height: 31px;
height: 30px;
width: 30px;
text-align: center;
top: 3px;
right: 3px;
color: #bbb;
background: transparent; }
.vex.vex-theme-bottom-right-corner .vex-close:hover:before, .vex.vex-theme-bottom-right-corner .vex-close:active:before {
color: #777;
background: #e0e0e0; }
.vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="week"] {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: #fff;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #8dbdf1;
-webkit-box-shadow: inset 0 0 0 2px #8dbdf1;
box-shadow: inset 0 0 0 2px #8dbdf1;
outline: none; }
.vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-bottom-right-corner .vex-dialog-button {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-bottom-right-corner .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-bottom-right-corner .vex-dialog-button:focus {
animation: vex-pulse 1.1s infinite;
-webkit-animation: vex-pulse 1.1s infinite;
-moz-animation: vex-pulse 1.1s infinite;
-ms-animation: vex-pulse 1.1s infinite;
-o-animation: vex-pulse 1.1s infinite;
-webkit-backface-visibility: hidden;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-bottom-right-corner .vex-dialog-button:focus {
animation: none;
-webkit-animation: none;
-moz-animation: none;
-ms-animation: none;
-o-animation: none;
-webkit-backface-visibility: hidden; } }
.vex.vex-theme-bottom-right-corner .vex-dialog-button.vex-dialog-button-primary {
background: #3288e6;
color: #fff; }
.vex.vex-theme-bottom-right-corner .vex-dialog-button.vex-dialog-button-secondary {
background: #e0e0e0;
color: #777; }
.vex-loading-spinner.vex-theme-bottom-right-corner {
-moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
-moz-border-radius: 100%;
-webkit-border-radius: 100%;
border-radius: 100%;
background: #f0f0f0;
border: .2em solid transparent;
border-top-color: #bbb;
top: -1.1em;
bottom: auto; }
body.vex-open {
overflow: initial; }

View File

@@ -0,0 +1,368 @@
@keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-webkit-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-moz-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-ms-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-o-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-webkit-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-moz-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-ms-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-o-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-webkit-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-moz-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-ms-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-o-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-default {
padding-top: 160px;
padding-bottom: 160px; }
.vex.vex-theme-default.vex-closing .vex-content {
animation: vex-flyout 0.5s;
-webkit-animation: vex-flyout 0.5s;
-moz-animation: vex-flyout 0.5s;
-ms-animation: vex-flyout 0.5s;
-o-animation: vex-flyout 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-default .vex-content {
animation: vex-flyin 0.5s;
-webkit-animation: vex-flyin 0.5s;
-moz-animation: vex-flyin 0.5s;
-ms-animation: vex-flyin 0.5s;
-o-animation: vex-flyin 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-default .vex-content {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
font-family: "Helvetica Neue", sans-serif;
background: #f0f0f0;
color: #444;
padding: 1em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 450px;
font-size: 1.1em;
line-height: 1.5em; }
.vex.vex-theme-default .vex-content h1, .vex.vex-theme-default .vex-content h2, .vex.vex-theme-default .vex-content h3, .vex.vex-theme-default .vex-content h4, .vex.vex-theme-default .vex-content h5, .vex.vex-theme-default .vex-content h6, .vex.vex-theme-default .vex-content p, .vex.vex-theme-default .vex-content ul, .vex.vex-theme-default .vex-content li {
color: inherit; }
.vex.vex-theme-default .vex-close {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-default .vex-close:before {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
position: absolute;
content: "\00D7";
font-size: 26px;
font-weight: normal;
line-height: 31px;
height: 30px;
width: 30px;
text-align: center;
top: 3px;
right: 3px;
color: #bbb;
background: transparent; }
.vex.vex-theme-default .vex-close:hover:before, .vex.vex-theme-default .vex-close:active:before {
color: #777;
background: #e0e0e0; }
.vex.vex-theme-default .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-default .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-default .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="week"] {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: #fff;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-default .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #8dbdf1;
-webkit-box-shadow: inset 0 0 0 2px #8dbdf1;
box-shadow: inset 0 0 0 2px #8dbdf1;
outline: none; }
.vex.vex-theme-default .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-default .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-default .vex-dialog-button {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-default .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-default .vex-dialog-button:focus {
animation: vex-pulse 1.1s infinite;
-webkit-animation: vex-pulse 1.1s infinite;
-moz-animation: vex-pulse 1.1s infinite;
-ms-animation: vex-pulse 1.1s infinite;
-o-animation: vex-pulse 1.1s infinite;
-webkit-backface-visibility: hidden;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-default .vex-dialog-button:focus {
animation: none;
-webkit-animation: none;
-moz-animation: none;
-ms-animation: none;
-o-animation: none;
-webkit-backface-visibility: hidden; } }
.vex.vex-theme-default .vex-dialog-button.vex-dialog-button-primary {
background: #3288e6;
color: #fff; }
.vex.vex-theme-default .vex-dialog-button.vex-dialog-button-secondary {
background: #e0e0e0;
color: #777; }
.vex-loading-spinner.vex-theme-default {
-moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
-moz-border-radius: 100%;
-webkit-border-radius: 100%;
border-radius: 100%;
background: #f0f0f0;
border: .2em solid transparent;
border-top-color: #bbb;
top: -1.1em;
bottom: auto; }

View File

@@ -0,0 +1,325 @@
@keyframes vex-flipin-horizontal {
0% {
opacity: 0;
transform: rotateY(-90deg);
-webkit-transform: rotateY(-90deg);
-moz-transform: rotateY(-90deg);
-ms-transform: rotateY(-90deg);
-o-transform: rotateY(-90deg); }
100% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); } }
@-webkit-keyframes vex-flipin-horizontal {
0% {
opacity: 0;
transform: rotateY(-90deg);
-webkit-transform: rotateY(-90deg);
-moz-transform: rotateY(-90deg);
-ms-transform: rotateY(-90deg);
-o-transform: rotateY(-90deg); }
100% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); } }
@-moz-keyframes vex-flipin-horizontal {
0% {
opacity: 0;
transform: rotateY(-90deg);
-webkit-transform: rotateY(-90deg);
-moz-transform: rotateY(-90deg);
-ms-transform: rotateY(-90deg);
-o-transform: rotateY(-90deg); }
100% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); } }
@-ms-keyframes vex-flipin-horizontal {
0% {
opacity: 0;
transform: rotateY(-90deg);
-webkit-transform: rotateY(-90deg);
-moz-transform: rotateY(-90deg);
-ms-transform: rotateY(-90deg);
-o-transform: rotateY(-90deg); }
100% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); } }
@-o-keyframes vex-flipin-horizontal {
0% {
opacity: 0;
transform: rotateY(-90deg);
-webkit-transform: rotateY(-90deg);
-moz-transform: rotateY(-90deg);
-ms-transform: rotateY(-90deg);
-o-transform: rotateY(-90deg); }
100% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); } }
@keyframes vex-flipout-horizontal {
0% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); }
100% {
opacity: 0;
transform: rotateY(90deg);
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
-o-transform: rotateY(90deg); } }
@-webkit-keyframes vex-flipout-horizontal {
0% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); }
100% {
opacity: 0;
transform: rotateY(90deg);
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
-o-transform: rotateY(90deg); } }
@-moz-keyframes vex-flipout-horizontal {
0% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); }
100% {
opacity: 0;
transform: rotateY(90deg);
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
-o-transform: rotateY(90deg); } }
@-ms-keyframes vex-flipout-horizontal {
0% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); }
100% {
opacity: 0;
transform: rotateY(90deg);
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
-o-transform: rotateY(90deg); } }
@-o-keyframes vex-flipout-horizontal {
0% {
opacity: 1;
transform: rotateY(0deg);
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg); }
100% {
opacity: 0;
transform: rotateY(90deg);
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
-o-transform: rotateY(90deg); } }
.vex.vex-theme-flat-attack {
-moz-perspective: 1300px;
-webkit-perspective: 1300px;
perspective: 1300px;
-moz-perspective-origin: 50% 150px;
-webkit-perspective-origin: 50% 150px;
perspective-origin: 50% 150px;
padding-top: 100px;
padding-bottom: 100px;
font-size: 1.5em; }
.vex.vex-theme-flat-attack.vex-closing .vex-content {
animation: vex-flipout-horizontal 0.5s;
-webkit-animation: vex-flipout-horizontal 0.5s;
-moz-animation: vex-flipout-horizontal 0.5s;
-ms-animation: vex-flipout-horizontal 0.5s;
-o-animation: vex-flipout-horizontal 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-flat-attack .vex-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
animation: vex-flipin-horizontal 0.5s;
-webkit-animation: vex-flipin-horizontal 0.5s;
-moz-animation: vex-flipin-horizontal 0.5s;
-ms-animation: vex-flipin-horizontal 0.5s;
-o-animation: vex-flipin-horizontal 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-flat-attack .vex-content {
font-family: "Helvetica Neue", sans-serif;
font-weight: 200;
background: #fff;
color: #444;
padding: 2em 2em 3em 2em;
line-height: 1.5em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 600px; }
.vex.vex-theme-flat-attack .vex-content h1, .vex.vex-theme-flat-attack .vex-content h2, .vex.vex-theme-flat-attack .vex-content h3, .vex.vex-theme-flat-attack .vex-content h4, .vex.vex-theme-flat-attack .vex-content h5, .vex.vex-theme-flat-attack .vex-content h6, .vex.vex-theme-flat-attack .vex-content p, .vex.vex-theme-flat-attack .vex-content ul, .vex.vex-theme-flat-attack .vex-content li {
color: inherit; }
.vex.vex-theme-flat-attack .vex-close {
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-flat-attack .vex-close:before {
font-family: "Helvetica Neue", sans-serif;
font-weight: 100;
line-height: 1px;
padding-top: .5em;
display: block;
font-size: 2em;
text-indent: 1px;
overflow: hidden;
height: 1.25em;
width: 1.25em;
text-align: center;
top: 0;
right: 0;
color: #fff;
background: #666; }
.vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input {
margin-bottom: .5em; }
.vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="week"] {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: #f0f0f0;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #666;
-webkit-box-shadow: inset 0 0 0 2px #666;
box-shadow: inset 0 0 0 2px #666;
outline: none; }
.vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-buttons {
*zoom: 1;
padding-top: 1em;
margin-bottom: -3em;
margin-left: -2em;
margin-right: -2em; }
.vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-flat-attack .vex-dialog-button {
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
border: 0;
margin: 0;
float: right;
padding: .5em 1em;
font-size: 1.13em;
text-transform: uppercase;
font-weight: 200;
letter-spacing: .1em;
line-height: 1em;
font-family: inherit; }
.vex.vex-theme-flat-attack .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-flat-attack .vex-dialog-button:focus {
outline: none; }
.vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-primary {
background: #666;
color: #fff; }
.vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-primary:focus {
-moz-box-shadow: inset 0 3px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 3px rgba(0, 0, 0, 0.2);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.2); }
.vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary {
background: #fff;
color: #ccc; }
.vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary:focus {
-moz-box-shadow: inset 0 3px #aaa;
-webkit-box-shadow: inset 0 3px #aaa;
box-shadow: inset 0 3px #aaa;
background: #eee;
color: #777; }
.vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary:hover, .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary:active {
color: #777; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-close:before {
background: #ff7ea7; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #ff7ea7;
-webkit-box-shadow: inset 0 0 0 2px #ff7ea7;
box-shadow: inset 0 0 0 2px #ff7ea7; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary {
background: #ff7ea7; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-close:before {
background: #ce4a55; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #ce4a55;
-webkit-box-shadow: inset 0 0 0 2px #ce4a55;
box-shadow: inset 0 0 0 2px #ce4a55; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary {
background: #ce4a55; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-close:before {
background: #34b989; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #34b989;
-webkit-box-shadow: inset 0 0 0 2px #34b989;
box-shadow: inset 0 0 0 2px #34b989; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary {
background: #34b989; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-close:before {
background: #477FA5; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #477FA5;
-webkit-box-shadow: inset 0 0 0 2px #477FA5;
box-shadow: inset 0 0 0 2px #477FA5; }
.vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary {
background: #477FA5; }
.vex-loading-spinner.vex-theme-flat-attack {
height: 4em;
width: 4em; }

View File

@@ -0,0 +1,373 @@
@keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-webkit-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-moz-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-ms-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@-o-keyframes vex-flyin {
0% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); }
100% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); } }
@keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-webkit-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-moz-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-ms-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@-o-keyframes vex-flyout {
0% {
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
opacity: 0;
transform: translateY(-40px);
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px); } }
@keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-webkit-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-moz-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-ms-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-o-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-os {
padding-top: 160px;
padding-bottom: 160px; }
.vex.vex-theme-os.vex-closing .vex-content {
animation: vex-flyout 0.5s;
-webkit-animation: vex-flyout 0.5s;
-moz-animation: vex-flyout 0.5s;
-ms-animation: vex-flyout 0.5s;
-o-animation: vex-flyout 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-os .vex-content {
animation: vex-flyin 0.5s;
-webkit-animation: vex-flyin 0.5s;
-moz-animation: vex-flyin 0.5s;
-ms-animation: vex-flyin 0.5s;
-o-animation: vex-flyin 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-os .vex-content {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, 0.08);
-webkit-box-shadow: inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, 0.08);
box-shadow: inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, 0.08);
font-family: "Helvetica Neue", sans-serif;
border-top: 20px solid #bbb;
background: #f0f0f0;
color: #444;
padding: 1em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 450px;
font-size: 1.1em;
line-height: 1.5em; }
.vex.vex-theme-os .vex-content h1, .vex.vex-theme-os .vex-content h2, .vex.vex-theme-os .vex-content h3, .vex.vex-theme-os .vex-content h4, .vex.vex-theme-os .vex-content h5, .vex.vex-theme-os .vex-content h6, .vex.vex-theme-os .vex-content p, .vex.vex-theme-os .vex-content ul, .vex.vex-theme-os .vex-content li {
color: inherit; }
.vex.vex-theme-os .vex-close {
-moz-border-radius: 0 5px 0 0;
-webkit-border-radius: 0 5px 0 0;
border-radius: 0 5px 0 0;
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-os .vex-close:before {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
position: absolute;
content: "\00D7";
font-size: 26px;
font-weight: normal;
line-height: 31px;
height: 30px;
width: 30px;
text-align: center;
top: 3px;
right: 3px;
color: #bbb;
background: transparent; }
.vex.vex-theme-os .vex-close:hover:before, .vex.vex-theme-os .vex-close:active:before {
color: #777;
background: #e0e0e0; }
.vex.vex-theme-os .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-os .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-os .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="week"] {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: #fff;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-os .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 1px #3288e6;
-webkit-box-shadow: inset 0 0 0 1px #3288e6;
box-shadow: inset 0 0 0 1px #3288e6;
outline: none; }
.vex.vex-theme-os .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-os .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-os .vex-dialog-button {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-os .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-os .vex-dialog-button:focus {
animation: vex-pulse 1.1s infinite;
-webkit-animation: vex-pulse 1.1s infinite;
-moz-animation: vex-pulse 1.1s infinite;
-ms-animation: vex-pulse 1.1s infinite;
-o-animation: vex-pulse 1.1s infinite;
-webkit-backface-visibility: hidden;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-os .vex-dialog-button:focus {
animation: none;
-webkit-animation: none;
-moz-animation: none;
-ms-animation: none;
-o-animation: none;
-webkit-backface-visibility: hidden; } }
.vex.vex-theme-os .vex-dialog-button.vex-dialog-button-primary {
background: #3288e6;
color: #fff; }
.vex.vex-theme-os .vex-dialog-button.vex-dialog-button-secondary {
background: #e0e0e0;
color: #777; }
.vex-loading-spinner.vex-theme-os {
-moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0.5em rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0.5em rgba(0, 0, 0, 0.2);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0.5em rgba(0, 0, 0, 0.2);
-moz-border-radius: 100%;
-webkit-border-radius: 100%;
border-radius: 100%;
background: rgba(255, 255, 255, 0.2);
width: 0;
height: 0;
border: 1.2em solid #bbb;
border-top-color: #f0f0f0;
border-bottom-color: #f0f0f0; }

View File

@@ -0,0 +1,173 @@
@keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-webkit-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-moz-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-ms-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-o-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-plain {
padding-top: 160px;
padding-bottom: 160px; }
.vex.vex-theme-plain .vex-content {
font-family: "Helvetica Neue", sans-serif;
background: #fff;
color: #444;
padding: 1em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 450px;
font-size: 1.1em;
line-height: 1.5em; }
.vex.vex-theme-plain .vex-content h1, .vex.vex-theme-plain .vex-content h2, .vex.vex-theme-plain .vex-content h3, .vex.vex-theme-plain .vex-content h4, .vex.vex-theme-plain .vex-content h5, .vex.vex-theme-plain .vex-content h6, .vex.vex-theme-plain .vex-content p, .vex.vex-theme-plain .vex-content ul, .vex.vex-theme-plain .vex-content li {
color: inherit; }
.vex.vex-theme-plain .vex-close {
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-plain .vex-close:before {
position: absolute;
content: "\00D7";
font-size: 26px;
font-weight: normal;
line-height: 31px;
height: 30px;
width: 30px;
text-align: center;
top: 3px;
right: 3px;
color: #bbb;
background: transparent; }
.vex.vex-theme-plain .vex-close:hover:before, .vex.vex-theme-plain .vex-close:active:before {
color: #777;
background: #e0e0e0; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="week"] {
background: #f0f0f0;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2);
outline: none; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-plain .vex-dialog-button {
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-plain .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-plain .vex-dialog-button:focus {
animation: vex-pulse 1.1s infinite;
-webkit-animation: vex-pulse 1.1s infinite;
-moz-animation: vex-pulse 1.1s infinite;
-ms-animation: vex-pulse 1.1s infinite;
-o-animation: vex-pulse 1.1s infinite;
-webkit-backface-visibility: hidden;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-plain .vex-dialog-button:focus {
animation: none;
-webkit-animation: none;
-moz-animation: none;
-ms-animation: none;
-o-animation: none;
-webkit-backface-visibility: hidden; } }
.vex.vex-theme-plain .vex-dialog-button.vex-dialog-button-primary {
background: #3288e6;
color: #fff; }
.vex.vex-theme-plain .vex-dialog-button.vex-dialog-button-secondary {
background: #e0e0e0;
color: #777; }
.vex-loading-spinner.vex-theme-plain {
height: 2.5em;
width: 2.5em; }

View File

@@ -0,0 +1,432 @@
@keyframes vex-dropin {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 0; }
2% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-webkit-keyframes vex-dropin {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 0; }
2% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-moz-keyframes vex-dropin {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 0; }
2% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-ms-keyframes vex-dropin {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 0; }
2% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@-o-keyframes vex-dropin {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 0; }
1% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 0; }
2% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px);
opacity: 1; }
100% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
opacity: 1; } }
@keyframes vex-dropout {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px); } }
@-webkit-keyframes vex-dropout {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px); } }
@-moz-keyframes vex-dropout {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px); } }
@-ms-keyframes vex-dropout {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px); } }
@-o-keyframes vex-dropout {
0% {
transform: translateY(0);
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0); }
100% {
transform: translateY(-800px);
-webkit-transform: translateY(-800px);
-moz-transform: translateY(-800px);
-ms-transform: translateY(-800px);
-o-transform: translateY(-800px); } }
@keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-webkit-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-moz-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-ms-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-o-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-top.vex-closing .vex-content {
animation: vex-dropout 0.5s;
-webkit-animation: vex-dropout 0.5s;
-moz-animation: vex-dropout 0.5s;
-ms-animation: vex-dropout 0.5s;
-o-animation: vex-dropout 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-top .vex-content {
animation: vex-dropin 0.5s;
-webkit-animation: vex-dropin 0.5s;
-moz-animation: vex-dropin 0.5s;
-ms-animation: vex-dropin 0.5s;
-o-animation: vex-dropin 0.5s;
-webkit-backface-visibility: hidden; }
.vex.vex-theme-top .vex-content {
-moz-border-radius: 0 0 5px 5px;
-webkit-border-radius: 0 0 5px 5px;
border-radius: 0 0 5px 5px;
font-family: "Helvetica Neue", sans-serif;
background: #f0f0f0;
color: #444;
padding: 1em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 450px;
font-size: 1.1em;
line-height: 1.5em; }
.vex.vex-theme-top .vex-content h1, .vex.vex-theme-top .vex-content h2, .vex.vex-theme-top .vex-content h3, .vex.vex-theme-top .vex-content h4, .vex.vex-theme-top .vex-content h5, .vex.vex-theme-top .vex-content h6, .vex.vex-theme-top .vex-content p, .vex.vex-theme-top .vex-content ul, .vex.vex-theme-top .vex-content li {
color: inherit; }
.vex.vex-theme-top .vex-close {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-top .vex-close:before {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
position: absolute;
content: "\00D7";
font-size: 26px;
font-weight: normal;
line-height: 31px;
height: 30px;
width: 30px;
text-align: center;
top: 3px;
right: 3px;
color: #bbb;
background: transparent; }
.vex.vex-theme-top .vex-close:hover:before, .vex.vex-theme-top .vex-close:active:before {
color: #777;
background: #e0e0e0; }
.vex.vex-theme-top .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-top .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-top .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="week"] {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: #fff;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-top .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
-moz-box-shadow: inset 0 0 0 2px #8dbdf1;
-webkit-box-shadow: inset 0 0 0 2px #8dbdf1;
box-shadow: inset 0 0 0 2px #8dbdf1;
outline: none; }
.vex.vex-theme-top .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-top .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-top .vex-dialog-button {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-top .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-top .vex-dialog-button:focus {
animation: vex-pulse 1.1s infinite;
-webkit-animation: vex-pulse 1.1s infinite;
-moz-animation: vex-pulse 1.1s infinite;
-ms-animation: vex-pulse 1.1s infinite;
-o-animation: vex-pulse 1.1s infinite;
-webkit-backface-visibility: hidden;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-top .vex-dialog-button:focus {
animation: none;
-webkit-animation: none;
-moz-animation: none;
-ms-animation: none;
-o-animation: none;
-webkit-backface-visibility: hidden; } }
.vex.vex-theme-top .vex-dialog-button.vex-dialog-button-primary {
background: #3288e6;
color: #fff; }
.vex.vex-theme-top .vex-dialog-button.vex-dialog-button-secondary {
background: #e0e0e0;
color: #777; }
.vex-loading-spinner.vex-theme-top {
-moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
-moz-border-radius: 100%;
-webkit-border-radius: 100%;
border-radius: 100%;
background: #f0f0f0;
border: .2em solid transparent;
border-top-color: #bbb;
top: -1.1em;
bottom: auto; }

View File

@@ -0,0 +1,174 @@
@keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-webkit-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-moz-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-ms-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
@-o-keyframes vex-pulse {
0% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; }
70% {
-moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
-webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
-moz-box-shadow: inset 0 0 0 300px transparent;
-webkit-box-shadow: inset 0 0 0 300px transparent;
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-wireframe {
padding-top: 160px;
padding-bottom: 160px; }
.vex.vex-theme-wireframe .vex-overlay {
background: rgba(255, 255, 255, 0.4); }
.vex.vex-theme-wireframe .vex-content {
font-family: "Helvetica Neue", sans-serif;
background: #fff;
color: #000;
border: 2px solid #000;
padding: 2em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 400px;
font-size: 1.1em;
line-height: 1.5em; }
.vex.vex-theme-wireframe .vex-content h1, .vex.vex-theme-wireframe .vex-content h2, .vex.vex-theme-wireframe .vex-content h3, .vex.vex-theme-wireframe .vex-content h4, .vex.vex-theme-wireframe .vex-content h5, .vex.vex-theme-wireframe .vex-content h6, .vex.vex-theme-wireframe .vex-content p, .vex.vex-theme-wireframe .vex-content ul, .vex.vex-theme-wireframe .vex-content li {
color: inherit; }
.vex.vex-theme-wireframe .vex-close {
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-wireframe .vex-close:before {
position: absolute;
content: "\00D7";
font-size: 40px;
font-weight: normal;
line-height: 80px;
height: 80px;
width: 80px;
text-align: center;
top: 3px;
right: 3px;
color: #000; }
.vex.vex-theme-wireframe .vex-close:hover:before, .vex.vex-theme-wireframe .vex-close:active:before {
color: #000; }
.vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="week"] {
background: #fff;
width: 100%;
padding: .25em .67em;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em;
border: 2px solid #000; }
.vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
border-style: dashed;
outline: none; }
.vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-wireframe .vex-dialog-button {
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-wireframe .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-wireframe .vex-dialog-button:focus {
animation: vex-pulse 1.1s infinite;
-webkit-animation: vex-pulse 1.1s infinite;
-moz-animation: vex-pulse 1.1s infinite;
-ms-animation: vex-pulse 1.1s infinite;
-o-animation: vex-pulse 1.1s infinite;
-webkit-backface-visibility: hidden;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-wireframe .vex-dialog-button:focus {
animation: none;
-webkit-animation: none;
-moz-animation: none;
-ms-animation: none;
-o-animation: none;
-webkit-backface-visibility: hidden; } }
.vex.vex-theme-wireframe .vex-dialog-button.vex-dialog-button-primary {
background: #000;
color: #fff;
border: 2px solid transparent; }
.vex.vex-theme-wireframe .vex-dialog-button.vex-dialog-button-secondary {
background: #fff;
color: #000;
border: 2px solid #000; }
.vex-loading-spinner.vex-theme-wireframe {
height: 2.5em;
width: 2.5em; }

231
public/bower_components/vex/css/vex.css vendored Executable file
View File

@@ -0,0 +1,231 @@
@keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-webkit-keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-moz-keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-ms-keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-o-keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-webkit-keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-moz-keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-ms-keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-o-keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@keyframes vex-rotation {
0% {
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg); }
100% {
transform: rotate(359deg);
-webkit-transform: rotate(359deg);
-moz-transform: rotate(359deg);
-ms-transform: rotate(359deg);
-o-transform: rotate(359deg); } }
@-webkit-keyframes vex-rotation {
0% {
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg); }
100% {
transform: rotate(359deg);
-webkit-transform: rotate(359deg);
-moz-transform: rotate(359deg);
-ms-transform: rotate(359deg);
-o-transform: rotate(359deg); } }
@-moz-keyframes vex-rotation {
0% {
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg); }
100% {
transform: rotate(359deg);
-webkit-transform: rotate(359deg);
-moz-transform: rotate(359deg);
-ms-transform: rotate(359deg);
-o-transform: rotate(359deg); } }
@-ms-keyframes vex-rotation {
0% {
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg); }
100% {
transform: rotate(359deg);
-webkit-transform: rotate(359deg);
-moz-transform: rotate(359deg);
-ms-transform: rotate(359deg);
-o-transform: rotate(359deg); } }
@-o-keyframes vex-rotation {
0% {
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg); }
100% {
transform: rotate(359deg);
-webkit-transform: rotate(359deg);
-moz-transform: rotate(359deg);
-ms-transform: rotate(359deg);
-o-transform: rotate(359deg); } }
.vex, .vex *, .vex *:before, .vex *:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box; }
.vex {
position: fixed;
overflow: auto;
-webkit-overflow-scrolling: touch;
z-index: 1111;
top: 0;
right: 0;
bottom: 0;
left: 0; }
.vex-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll; }
.vex-overlay {
background: #000;
filter: alpha(opacity=40);
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; }
.vex-overlay {
animation: vex-fadein 0.5s;
-webkit-animation: vex-fadein 0.5s;
-moz-animation: vex-fadein 0.5s;
-ms-animation: vex-fadein 0.5s;
-o-animation: vex-fadein 0.5s;
-webkit-backface-visibility: hidden;
position: fixed;
background: rgba(0, 0, 0, 0.4);
top: 0;
right: 0;
bottom: 0;
left: 0; }
.vex.vex-closing .vex-overlay {
animation: vex-fadeout 0.5s;
-webkit-animation: vex-fadeout 0.5s;
-moz-animation: vex-fadeout 0.5s;
-ms-animation: vex-fadeout 0.5s;
-o-animation: vex-fadeout 0.5s;
-webkit-backface-visibility: hidden; }
.vex-content {
animation: vex-fadein 0.5s;
-webkit-animation: vex-fadein 0.5s;
-moz-animation: vex-fadein 0.5s;
-ms-animation: vex-fadein 0.5s;
-o-animation: vex-fadein 0.5s;
-webkit-backface-visibility: hidden;
background: #fff; }
.vex.vex-closing .vex-content {
animation: vex-fadeout 0.5s;
-webkit-animation: vex-fadeout 0.5s;
-moz-animation: vex-fadeout 0.5s;
-ms-animation: vex-fadeout 0.5s;
-o-animation: vex-fadeout 0.5s;
-webkit-backface-visibility: hidden; }
.vex-close:before {
font-family: Arial, sans-serif;
content: "\00D7"; }
.vex-dialog-form {
margin: 0; }
.vex-dialog-button {
text-rendering: optimizeLegibility;
-moz-appearance: none;
-webkit-appearance: none;
cursor: pointer;
-webkit-tap-highlight-color: transparent; }
.vex-loading-spinner {
animation: vex-rotation 0.7s linear infinite;
-webkit-animation: vex-rotation 0.7s linear infinite;
-moz-animation: vex-rotation 0.7s linear infinite;
-ms-animation: vex-rotation 0.7s linear infinite;
-o-animation: vex-rotation 0.7s linear infinite;
-webkit-backface-visibility: hidden;
-moz-box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
-webkit-box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
position: fixed;
z-index: 1112;
margin: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
height: 2em;
width: 2em;
background: #fff; }
body.vex-open {
overflow: hidden; }

View File

@@ -0,0 +1,20 @@
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.min.js
"></script>
<link rel="stylesheet" href="../css/vex.css" />
<link rel="stylesheet" href="../css/vex-theme-os.css" />
<script>
require({
paths: {
jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min'
}
});
</script>
<script>
require(['vex', 'vex.dialog'], function(vex, vexDialog) {
vex.defaultOptions.className = 'vex-theme-os';
vexDialog.alert('Test');
});
</script>
</head>
<body>

View File

@@ -0,0 +1,11 @@
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="vex.combined.min.js"></script>
<link rel="stylesheet" href="../css/vex.css" />
<link rel="stylesheet" href="../css/vex-theme-os.css" />
</head>
<body>
<script>
vex.defaultOptions.className = 'vex-theme-os';
vex.dialog.alert('Test');
</script>

File diff suppressed because one or more lines are too long

153
public/bower_components/vex/js/vex.dialog.js vendored Executable file
View File

@@ -0,0 +1,153 @@
(function() {
var vexDialogFactory;
vexDialogFactory = function($, vex) {
var $formToObject, dialog;
if (vex == null) {
return $.error('Vex is required to use vex.dialog');
}
$formToObject = function($form) {
var object;
object = {};
$.each($form.serializeArray(), function() {
if (object[this.name]) {
if (!object[this.name].push) {
object[this.name] = [object[this.name]];
}
return object[this.name].push(this.value || '');
} else {
return object[this.name] = this.value || '';
}
});
return object;
};
dialog = {};
dialog.buttons = {
YES: {
text: 'OK',
type: 'submit',
className: 'vex-dialog-button-primary'
},
NO: {
text: 'Cancel',
type: 'button',
className: 'vex-dialog-button-secondary',
click: function($vexContent, event) {
$vexContent.data().vex.value = false;
return vex.close($vexContent.data().vex.id);
}
}
};
dialog.defaultOptions = {
callback: function(value) {},
afterOpen: function() {},
message: 'Message',
input: "<input name=\"vex\" type=\"hidden\" value=\"_vex-empty-value\" />",
value: false,
buttons: [dialog.buttons.YES, dialog.buttons.NO],
showCloseButton: false,
onSubmit: function(event) {
var $form, $vexContent;
$form = $(this);
$vexContent = $form.parent();
event.preventDefault();
event.stopPropagation();
$vexContent.data().vex.value = dialog.getFormValueOnSubmit($formToObject($form));
return vex.close($vexContent.data().vex.id);
},
focusFirstInput: true
};
dialog.defaultAlertOptions = {
message: 'Alert',
buttons: [dialog.buttons.YES]
};
dialog.defaultConfirmOptions = {
message: 'Confirm'
};
dialog.open = function(options) {
var $vexContent, beforeClose;
options = $.extend({}, vex.defaultOptions, dialog.defaultOptions, options);
options.content = dialog.buildDialogForm(options);
beforeClose = options.beforeClose;
options.beforeClose = function($vexContent, config) {
options.callback(config.value);
return typeof beforeClose === "function" ? beforeClose($vexContent, config) : void 0;
};
$vexContent = vex.open(options);
if (options.focusFirstInput) {
$vexContent.find('button[type="submit"], button[type="button"], input[type="submit"], input[type="button"], textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]').first().focus();
}
return $vexContent;
};
dialog.alert = function(options) {
if (typeof options === 'string') {
options = {
message: options
};
}
options = $.extend({}, dialog.defaultAlertOptions, options);
return dialog.open(options);
};
dialog.confirm = function(options) {
if (typeof options === 'string') {
return $.error('dialog.confirm(options) requires options.callback.');
}
options = $.extend({}, dialog.defaultConfirmOptions, options);
return dialog.open(options);
};
dialog.prompt = function(options) {
var defaultPromptOptions;
if (typeof options === 'string') {
return $.error('dialog.prompt(options) requires options.callback.');
}
defaultPromptOptions = {
message: "<label for=\"vex\">" + (options.label || 'Prompt:') + "</label>",
input: "<input name=\"vex\" type=\"text\" class=\"vex-dialog-prompt-input\" placeholder=\"" + (options.placeholder || '') + "\" value=\"" + (options.value || '') + "\" />"
};
options = $.extend({}, defaultPromptOptions, options);
return dialog.open(options);
};
dialog.buildDialogForm = function(options) {
var $form, $input, $message;
$form = $('<form class="vex-dialog-form" />');
$message = $('<div class="vex-dialog-message" />');
$input = $('<div class="vex-dialog-input" />');
$form.append($message.append(options.message)).append($input.append(options.input)).append(dialog.buttonsToDOM(options.buttons)).bind('submit.vex', options.onSubmit);
return $form;
};
dialog.getFormValueOnSubmit = function(formData) {
if (formData.vex || formData.vex === '') {
if (formData.vex === '_vex-empty-value') {
return true;
}
return formData.vex;
} else {
return formData;
}
};
dialog.buttonsToDOM = function(buttons) {
var $buttons;
$buttons = $('<div class="vex-dialog-buttons" />');
$.each(buttons, function(index, button) {
var $button;
$button = $("<button type=\"" + button.type + "\"></button>").text(button.text).addClass(button.className + ' vex-dialog-button ' + (index === 0 ? 'vex-first ' : '') + (index === buttons.length - 1 ? 'vex-last ' : '')).bind('click.vex', function(e) {
if (button.click) {
return button.click($(this).parents(vex.getSelectorFromBaseClass(vex.baseClassNames.content)), e);
}
});
return $button.appendTo($buttons);
});
return $buttons;
};
return dialog;
};
if (typeof define === 'function' && define.amd) {
define(['jquery', 'vex'], vexDialogFactory);
} else if (typeof exports === 'object') {
module.exports = vexDialogFactory(require('jquery'), require('./vex.js'));
} else {
window.vex.dialog = vexDialogFactory(window.jQuery, window.vex);
}
}).call(this);

View File

@@ -0,0 +1,2 @@
/*! vex.dialog.js 2.3.3 */
(function(){var a;a=function(a,b){var c,d;return null==b?a.error("Vex is required to use vex.dialog"):(c=function(b){var c;return c={},a.each(b.serializeArray(),function(){return c[this.name]?(c[this.name].push||(c[this.name]=[c[this.name]]),c[this.name].push(this.value||"")):c[this.name]=this.value||""}),c},d={},d.buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary"},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function(a,c){return a.data().vex.value=!1,b.close(a.data().vex.id)}}},d.defaultOptions={callback:function(a){},afterOpen:function(){},message:"Message",input:'<input name="vex" type="hidden" value="_vex-empty-value" />',value:!1,buttons:[d.buttons.YES,d.buttons.NO],showCloseButton:!1,onSubmit:function(e){var f,g;return f=a(this),g=f.parent(),e.preventDefault(),e.stopPropagation(),g.data().vex.value=d.getFormValueOnSubmit(c(f)),b.close(g.data().vex.id)},focusFirstInput:!0},d.defaultAlertOptions={message:"Alert",buttons:[d.buttons.YES]},d.defaultConfirmOptions={message:"Confirm"},d.open=function(c){var e,f;return c=a.extend({},b.defaultOptions,d.defaultOptions,c),c.content=d.buildDialogForm(c),f=c.beforeClose,c.beforeClose=function(a,b){return c.callback(b.value),"function"==typeof f?f(a,b):void 0},e=b.open(c),c.focusFirstInput&&e.find('button[type="submit"], button[type="button"], input[type="submit"], input[type="button"], textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]').first().focus(),e},d.alert=function(b){return"string"==typeof b&&(b={message:b}),b=a.extend({},d.defaultAlertOptions,b),d.open(b)},d.confirm=function(b){return"string"==typeof b?a.error("dialog.confirm(options) requires options.callback."):(b=a.extend({},d.defaultConfirmOptions,b),d.open(b))},d.prompt=function(b){var c;return"string"==typeof b?a.error("dialog.prompt(options) requires options.callback."):(c={message:'<label for="vex">'+(b.label||"Prompt:")+"</label>",input:'<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="'+(b.placeholder||"")+'" value="'+(b.value||"")+'" />'},b=a.extend({},c,b),d.open(b))},d.buildDialogForm=function(b){var c,e,f;return c=a('<form class="vex-dialog-form" />'),f=a('<div class="vex-dialog-message" />'),e=a('<div class="vex-dialog-input" />'),c.append(f.append(b.message)).append(e.append(b.input)).append(d.buttonsToDOM(b.buttons)).bind("submit.vex",b.onSubmit),c},d.getFormValueOnSubmit=function(a){return a.vex||""===a.vex?"_vex-empty-value"===a.vex?!0:a.vex:a},d.buttonsToDOM=function(c){var d;return d=a('<div class="vex-dialog-buttons" />'),a.each(c,function(e,f){var g;return g=a('<button type="'+f.type+'"></button>').text(f.text).addClass(f.className+" vex-dialog-button "+(0===e?"vex-first ":"")+(e===c.length-1?"vex-last ":"")).bind("click.vex",function(c){return f.click?f.click(a(this).parents(b.getSelectorFromBaseClass(b.baseClassNames.content)),c):void 0}),g.appendTo(d)}),d},d)},"function"==typeof define&&define.amd?define(["jquery","vex"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("./vex.js")):window.vex.dialog=a(window.jQuery,window.vex)}).call(this);

196
public/bower_components/vex/js/vex.js vendored Executable file
View File

@@ -0,0 +1,196 @@
(function() {
var vexFactory;
vexFactory = function($) {
var animationEndSupport, vex;
animationEndSupport = false;
$(function() {
var s;
s = (document.body || document.documentElement).style;
animationEndSupport = s.animation !== void 0 || s.WebkitAnimation !== void 0 || s.MozAnimation !== void 0 || s.MsAnimation !== void 0 || s.OAnimation !== void 0;
return $(window).bind('keyup.vex', function(event) {
if (event.keyCode === 27) {
return vex.closeByEscape();
}
});
});
return vex = {
globalID: 1,
animationEndEvent: 'animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend',
baseClassNames: {
vex: 'vex',
content: 'vex-content',
overlay: 'vex-overlay',
close: 'vex-close',
closing: 'vex-closing',
open: 'vex-open'
},
defaultOptions: {
content: '',
showCloseButton: true,
escapeButtonCloses: true,
overlayClosesOnClick: true,
appendLocation: 'body',
className: '',
css: {},
overlayClassName: '',
overlayCSS: {},
contentClassName: '',
contentCSS: {},
closeClassName: '',
closeCSS: {}
},
open: function(options) {
options = $.extend({}, vex.defaultOptions, options);
options.id = vex.globalID;
vex.globalID += 1;
options.$vex = $('<div>').addClass(vex.baseClassNames.vex).addClass(options.className).css(options.css).data({
vex: options
});
options.$vexOverlay = $('<div>').addClass(vex.baseClassNames.overlay).addClass(options.overlayClassName).css(options.overlayCSS).data({
vex: options
});
if (options.overlayClosesOnClick) {
options.$vexOverlay.bind('click.vex', function(e) {
if (e.target !== this) {
return;
}
return vex.close($(this).data().vex.id);
});
}
options.$vex.append(options.$vexOverlay);
options.$vexContent = $('<div>').addClass(vex.baseClassNames.content).addClass(options.contentClassName).css(options.contentCSS).append(options.content).data({
vex: options
});
options.$vex.append(options.$vexContent);
if (options.showCloseButton) {
options.$closeButton = $('<div>').addClass(vex.baseClassNames.close).addClass(options.closeClassName).css(options.closeCSS).data({
vex: options
}).bind('click.vex', function() {
return vex.close($(this).data().vex.id);
});
options.$vexContent.append(options.$closeButton);
}
$(options.appendLocation).append(options.$vex);
vex.setupBodyClassName(options.$vex);
if (options.afterOpen) {
options.afterOpen(options.$vexContent, options);
}
setTimeout((function() {
return options.$vexContent.trigger('vexOpen', options);
}), 0);
return options.$vexContent;
},
getSelectorFromBaseClass: function(baseClass) {
return "." + (baseClass.split(' ').join('.'));
},
getAllVexes: function() {
return $("." + vex.baseClassNames.vex + ":not(\"." + vex.baseClassNames.closing + "\") " + (vex.getSelectorFromBaseClass(vex.baseClassNames.content)));
},
getVexByID: function(id) {
return vex.getAllVexes().filter(function() {
return $(this).data().vex.id === id;
});
},
close: function(id) {
var $lastVex;
if (!id) {
$lastVex = vex.getAllVexes().last();
if (!$lastVex.length) {
return false;
}
id = $lastVex.data().vex.id;
}
return vex.closeByID(id);
},
closeAll: function() {
var ids;
ids = vex.getAllVexes().map(function() {
return $(this).data().vex.id;
}).toArray();
if (!(ids != null ? ids.length : void 0)) {
return false;
}
$.each(ids.reverse(), function(index, id) {
return vex.closeByID(id);
});
return true;
},
closeByID: function(id) {
var $vex, $vexContent, beforeClose, close, hasAnimation, options;
$vexContent = vex.getVexByID(id);
if (!$vexContent.length) {
return;
}
$vex = $vexContent.data().vex.$vex;
options = $.extend({}, $vexContent.data().vex);
beforeClose = function() {
if (options.beforeClose) {
return options.beforeClose($vexContent, options);
}
};
close = function() {
$vexContent.trigger('vexClose', options);
$vex.remove();
$('body').trigger('vexAfterClose', options);
if (options.afterClose) {
return options.afterClose($vexContent, options);
}
};
hasAnimation = $vexContent.css('animationName') !== 'none' && $vexContent.css('animationDuration') !== '0s';
if (animationEndSupport && hasAnimation) {
if (beforeClose() !== false) {
$vex.unbind(vex.animationEndEvent).bind(vex.animationEndEvent, function() {
return close();
}).addClass(vex.baseClassNames.closing);
}
} else {
if (beforeClose() !== false) {
close();
}
}
return true;
},
closeByEscape: function() {
var $lastVex, id, ids;
ids = vex.getAllVexes().map(function() {
return $(this).data().vex.id;
}).toArray();
if (!(ids != null ? ids.length : void 0)) {
return false;
}
id = Math.max.apply(Math, ids);
$lastVex = vex.getVexByID(id);
if ($lastVex.data().vex.escapeButtonCloses !== true) {
return false;
}
return vex.closeByID(id);
},
setupBodyClassName: function($vex) {
return $('body').bind('vexOpen.vex', function() {
return $('body').addClass(vex.baseClassNames.open);
}).bind('vexAfterClose.vex', function() {
if (!vex.getAllVexes().length) {
return $('body').removeClass(vex.baseClassNames.open);
}
});
},
hideLoading: function() {
return $('.vex-loading-spinner').remove();
},
showLoading: function() {
vex.hideLoading();
return $('body').append("<div class=\"vex-loading-spinner " + vex.defaultOptions.className + "\"></div>");
}
};
};
if (typeof define === 'function' && define.amd) {
define(['jquery'], vexFactory);
} else if (typeof exports === 'object') {
module.exports = vexFactory(require('jquery'));
} else {
window.vex = vexFactory(jQuery);
}
}).call(this);

2
public/bower_components/vex/js/vex.min.js vendored Executable file
View File

@@ -0,0 +1,2 @@
/*! vex.js 2.3.3 */
(function(){var a;a=function(a){var b,c;return b=!1,a(function(){var d;return d=(document.body||document.documentElement).style,b=void 0!==d.animation||void 0!==d.WebkitAnimation||void 0!==d.MozAnimation||void 0!==d.MsAnimation||void 0!==d.OAnimation,a(window).bind("keyup.vex",function(a){return 27===a.keyCode?c.closeByEscape():void 0})}),c={globalID:1,animationEndEvent:"animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend",baseClassNames:{vex:"vex",content:"vex-content",overlay:"vex-overlay",close:"vex-close",closing:"vex-closing",open:"vex-open"},defaultOptions:{content:"",showCloseButton:!0,escapeButtonCloses:!0,overlayClosesOnClick:!0,appendLocation:"body",className:"",css:{},overlayClassName:"",overlayCSS:{},contentClassName:"",contentCSS:{},closeClassName:"",closeCSS:{}},open:function(b){return b=a.extend({},c.defaultOptions,b),b.id=c.globalID,c.globalID+=1,b.$vex=a("<div>").addClass(c.baseClassNames.vex).addClass(b.className).css(b.css).data({vex:b}),b.$vexOverlay=a("<div>").addClass(c.baseClassNames.overlay).addClass(b.overlayClassName).css(b.overlayCSS).data({vex:b}),b.overlayClosesOnClick&&b.$vexOverlay.bind("click.vex",function(b){return b.target===this?c.close(a(this).data().vex.id):void 0}),b.$vex.append(b.$vexOverlay),b.$vexContent=a("<div>").addClass(c.baseClassNames.content).addClass(b.contentClassName).css(b.contentCSS).append(b.content).data({vex:b}),b.$vex.append(b.$vexContent),b.showCloseButton&&(b.$closeButton=a("<div>").addClass(c.baseClassNames.close).addClass(b.closeClassName).css(b.closeCSS).data({vex:b}).bind("click.vex",function(){return c.close(a(this).data().vex.id)}),b.$vexContent.append(b.$closeButton)),a(b.appendLocation).append(b.$vex),c.setupBodyClassName(b.$vex),b.afterOpen&&b.afterOpen(b.$vexContent,b),setTimeout(function(){return b.$vexContent.trigger("vexOpen",b)},0),b.$vexContent},getSelectorFromBaseClass:function(a){return"."+a.split(" ").join(".")},getAllVexes:function(){return a("."+c.baseClassNames.vex+':not(".'+c.baseClassNames.closing+'") '+c.getSelectorFromBaseClass(c.baseClassNames.content))},getVexByID:function(b){return c.getAllVexes().filter(function(){return a(this).data().vex.id===b})},close:function(a){var b;if(!a){if(b=c.getAllVexes().last(),!b.length)return!1;a=b.data().vex.id}return c.closeByID(a)},closeAll:function(){var b;return b=c.getAllVexes().map(function(){return a(this).data().vex.id}).toArray(),(null!=b?b.length:void 0)?(a.each(b.reverse(),function(a,b){return c.closeByID(b)}),!0):!1},closeByID:function(d){var e,f,g,h,i,j;return f=c.getVexByID(d),f.length?(e=f.data().vex.$vex,j=a.extend({},f.data().vex),g=function(){return j.beforeClose?j.beforeClose(f,j):void 0},h=function(){return f.trigger("vexClose",j),e.remove(),a("body").trigger("vexAfterClose",j),j.afterClose?j.afterClose(f,j):void 0},i="none"!==f.css("animationName")&&"0s"!==f.css("animationDuration"),b&&i?g()!==!1&&e.unbind(c.animationEndEvent).bind(c.animationEndEvent,function(){return h()}).addClass(c.baseClassNames.closing):g()!==!1&&h(),!0):void 0},closeByEscape:function(){var b,d,e;return e=c.getAllVexes().map(function(){return a(this).data().vex.id}).toArray(),(null!=e?e.length:void 0)?(d=Math.max.apply(Math,e),b=c.getVexByID(d),b.data().vex.escapeButtonCloses!==!0?!1:c.closeByID(d)):!1},setupBodyClassName:function(b){return a("body").bind("vexOpen.vex",function(){return a("body").addClass(c.baseClassNames.open)}).bind("vexAfterClose.vex",function(){return c.getAllVexes().length?void 0:a("body").removeClass(c.baseClassNames.open)})},hideLoading:function(){return a(".vex-loading-spinner").remove()},showLoading:function(){return c.hideLoading(),a("body").append('<div class="vex-loading-spinner '+c.defaultOptions.className+'"></div>')}}},"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):window.vex=a(jQuery)}).call(this);

View File

@@ -0,0 +1,139 @@
@import mixins
// Overlay/content animations
=keyframes-vex-fadein
+vex-keyframes("vex-fadein")
0%
opacity: 0
100%
opacity: 1
=keyframes-vex-fadeout
+vex-keyframes("vex-fadeout")
0%
opacity: 1
100%
opacity: 0
// Content animations
=keyframes-vex-flyin
+vex-keyframes("vex-flyin")
0%
opacity: 0
+vex-transform(translateY(-40px))
100%
opacity: 1
+vex-transform(translateY(0))
=keyframes-vex-flyout
+vex-keyframes("vex-flyout")
0%
opacity: 1
+vex-transform(translateY(0))
100%
opacity: 0
+vex-transform(translateY(-40px))
=keyframes-vex-dropin
+vex-keyframes("vex-dropin")
// We start at 0 first and, while hidden
// move to -800px, where the animation
// really begins. This was necessary because
// otherwise, when starting the animation
// at -800px, the browser scrolls up 800px
// to try to display this object positioned
// above the page.
// https://github.com/HubSpot/vex/issues/21
0%
+vex-transform(translateY(0))
opacity: 0
1%
+vex-transform(translateY(-800px))
opacity: 0
// Real animation begins here
2%
+vex-transform(translateY(-800px))
opacity: 1
100%
+vex-transform(translateY(0))
opacity: 1
=keyframes-vex-dropout
+vex-keyframes("vex-dropout")
0%
+vex-transform(translateY(0))
100%
+vex-transform(translateY(-800px))
=keyframes-vex-slideup
+vex-keyframes("vex-slideup")
// We start at 0 first and, while hidden
// move to -800px, where the animation
// really begins. This was necessary because
// otherwise, when starting the animation
// at -800px, the browser scrolls up 800px
// to try to display this object positioned
// above the page.
// https://github.com/HubSpot/vex/issues/21
0%
+vex-transform(translateY(0))
opacity: 0
1%
+vex-transform(translateY(800px))
opacity: 0
// Real animation begins here
2%
+vex-transform(translateY(800px))
opacity: 1
100%
+vex-transform(translateY(0))
opacity: 1
=keyframes-vex-slidedown
+vex-keyframes("vex-slidedown")
0%
+vex-transform(translateY(0))
100%
+vex-transform(translateY(800px))
=keyframes-vex-flipin-horizontal
+vex-keyframes("vex-flipin-horizontal")
0%
opacity: 0
+vex-transform(rotateY(-90deg))
100%
opacity: 1
+vex-transform(rotateY(0deg))
=keyframes-vex-flipout-horizontal
+vex-keyframes("vex-flipout-horizontal")
0%
opacity: 1
+vex-transform(rotateY(0deg))
100%
opacity: 0
+vex-transform(rotateY(90deg))
// Spinner animations
=keyframes-vex-rotation
+vex-keyframes("vex-rotation")
0%
+vex-transform(rotate(0deg))
100%
+vex-transform(rotate(359deg))
// Button animations
=keyframes-vex-pulse
+vex-keyframes("vex-pulse")
0%
+box-shadow(inset 0 0 0 300px transparent)
70%
+box-shadow(inset 0 0 0 300px rgba(255, 255, 255, .25))
100%
+box-shadow(inset 0 0 0 300px transparent)

100
public/bower_components/vex/sass/_mixins.sass vendored Executable file
View File

@@ -0,0 +1,100 @@
=vex-keyframes($name)
@keyframes #{$name}
@content
@-webkit-keyframes #{$name}
@content
@-moz-keyframes #{$name}
@content
@-ms-keyframes #{$name}
@content
@-o-keyframes #{$name}
@content
=vex-animation($animation)
animation: $animation
-webkit-animation: $animation
-moz-animation: $animation
-ms-animation: $animation
-o-animation: $animation
-webkit-backface-visibility: hidden
=vex-transform($transform)
transform: $transform
-webkit-transform: $transform
-moz-transform: $transform
-ms-transform: $transform
-o-transform: $transform
=vex-preserve-3d
-webkit-transform-style: preserve-3d
-moz-transform-style: preserve-3d
transform-style: preserve-3d
// copied from Compass (https://github.com/Compass/compass) on the 21st of January 2015:
$prefix-context: null
$current-prefix: null
$critical-usage-threshold: 0.01 !default
$default-has-layout-approach: zoom !default
$has-layout-support-threshold: $critical-usage-threshold !default
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/_support.scss
=box-sizing($box-model)
-moz-box-sizing: $box-model
-webkit-box-sizing: $box-model
box-sizing: $box-model
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/css3/_box-shadow.scss
=box-shadow($shadow...)
-moz-box-shadow: $shadow
-webkit-box-shadow: $shadow
box-shadow: $shadow
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/css3/_border-radius.scss
=border-radius($radius)
-moz-border-radius: $radius
-webkit-border-radius: $radius
border-radius: $radius
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/css3/_transform.scss
=perspective($p)
-moz-perspective: $p
-webkit-perspective: $p
perspective: $p
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/css3/_transform.scss
=perspective-origin($origin: 50%)
-moz-perspective-origin: $origin
-webkit-perspective-origin: $origin
perspective-origin: $origin
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/_support.scss
=appearance($appearance)
$appearance: unquote($appearance)
-moz-appearance: $appearance
-webkit-appearance: $appearance
=has-layout($approach: $default-has-layout-approach)
@if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold)
@if $approach == zoom
+has-layout-zoom
@else if $approach == block
+has-layout-block
@else
@warn "Unknown has-layout approach: #{$approach}"
+has-layout-zoom
=has-layout-zoom
@if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold)
*zoom: 1
=pie-clearfix
&:after
content: ""
display: table
clear: both
+has-layout
// full mixin: https://github.com/Compass/compass/blob/stable/core/stylesheets/compass/_support.scss
@function support-legacy-browser($browser, $min-version, $max-version: null, $threshold: $critical-usage-threshold)
@return true

View File

@@ -0,0 +1,138 @@
@import mixins
@import keyframes
+keyframes-vex-slideup
+keyframes-vex-slidedown
+keyframes-vex-pulse
$blue: #3288e6
.vex.vex-theme-bottom-right-corner
top: auto
bottom: 0
right: 0
overflow: visible
.vex-overlay
display: none
&.vex-closing .vex-content
+vex-animation(vex-slidedown .5s)
.vex-content
+vex-animation(vex-slideup .5s)
.vex-content
+border-radius(5px 0 0 0)
font-family: "Helvetica Neue", sans-serif
background: #f0f0f0
color: #444
padding: 1em
max-width: 100%
width: 450px
font-size: 1.1em
line-height: 1.5em
position: fixed
bottom: 0
right: 0
left: auto
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
+border-radius(5px)
position: absolute
top: 0
right: 0
cursor: pointer
&:before
+border-radius(3px)
position: absolute
content: "\00D7"
font-size: 26px
font-weight: normal
line-height: 31px
height: 30px
width: 30px
text-align: center
top: 3px
right: 3px
color: #bbb
background: transparent
&:hover:before, &:active:before
color: #777
background: #e0e0e0
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: 1em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
+border-radius(3px)
background: #fff
width: 100%
padding: .25em .67em
border: 0
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
&:focus
+box-shadow(inset 0 0 0 2px lighten($blue, 20%))
outline: none
.vex-dialog-buttons
+pie-clearfix()
.vex-dialog-button
+border-radius(3px)
border: 0
float: right
margin: 0 0 0 .5em
font-family: inherit
text-transform: uppercase
letter-spacing: .1em
font-size: .8em
line-height: 1em
padding: .75em 2em
&.vex-last
margin-left: 0
&:focus
+vex-animation(vex-pulse 1.1s infinite)
outline: none
// vex-pulse uses -webkit-filter which
// doesn't play so nice in mobile webkit
@media (max-width: 568px)
+vex-animation(none)
&.vex-dialog-button-primary
background: $blue
color: #fff
&.vex-dialog-button-secondary
background: #e0e0e0
color: #777
.vex-loading-spinner.vex-theme-bottom-right-corner
+box-shadow(0 0 0 .5em #f0f0f0, 0 0 1px .5em rgba(0, 0, 0, 0.3))
+border-radius(100%)
background: #f0f0f0
border: .2em solid transparent
border-top-color: #bbb
top: -1.1em
bottom: auto
body.vex-open
overflow: initial

View File

@@ -0,0 +1,128 @@
@import mixins
@import keyframes
+keyframes-vex-flyin
+keyframes-vex-flyout
+keyframes-vex-pulse
$blue: #3288e6
.vex.vex-theme-default
padding-top: 160px
padding-bottom: 160px
&.vex-closing .vex-content
+vex-animation(vex-flyout .5s)
.vex-content
+vex-animation(vex-flyin .5s)
.vex-content
+border-radius(5px)
font-family: "Helvetica Neue", sans-serif
background: #f0f0f0
color: #444
padding: 1em
position: relative
margin: 0 auto
max-width: 100%
width: 450px
font-size: 1.1em
line-height: 1.5em
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
+border-radius(5px)
position: absolute
top: 0
right: 0
cursor: pointer
&:before
+border-radius(3px)
position: absolute
content: "\00D7"
font-size: 26px
font-weight: normal
line-height: 31px
height: 30px
width: 30px
text-align: center
top: 3px
right: 3px
color: #bbb
background: transparent
&:hover:before, &:active:before
color: #777
background: #e0e0e0
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: 1em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
+border-radius(3px)
background: #fff
width: 100%
padding: .25em .67em
border: 0
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
&:focus
+box-shadow(inset 0 0 0 2px lighten($blue, 20%))
outline: none
.vex-dialog-buttons
+pie-clearfix()
.vex-dialog-button
+border-radius(3px)
border: 0
float: right
margin: 0 0 0 .5em
font-family: inherit
text-transform: uppercase
letter-spacing: .1em
font-size: .8em
line-height: 1em
padding: .75em 2em
&.vex-last
margin-left: 0
&:focus
+vex-animation(vex-pulse 1.1s infinite)
outline: none
// vex-pulse uses -webkit-filter which
// doesn't play so nice in mobile webkit
@media (max-width: 568px)
+vex-animation(none)
&.vex-dialog-button-primary
background: $blue
color: #fff
&.vex-dialog-button-secondary
background: #e0e0e0
color: #777
.vex-loading-spinner.vex-theme-default
+box-shadow(0 0 0 .5em #f0f0f0, 0 0 1px .5em rgba(0, 0, 0, 0.3))
+border-radius(100%)
background: #f0f0f0
border: .2em solid transparent
border-top-color: #bbb
top: -1.1em
bottom: auto

View File

@@ -0,0 +1,165 @@
@import mixins
@import keyframes
+keyframes-vex-flipin-horizontal
+keyframes-vex-flipout-horizontal
$green: #34b989
$pink: #ff7ea7
$red: #ce4a55
$blue: #477FA5
=vex-theme-flat-attack-color($color)
.vex-close:before
background: $color
.vex-dialog-form
.vex-dialog-input
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
&:focus
+box-shadow(inset 0 0 0 2px $color)
.vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary
background: $color
.vex.vex-theme-flat-attack
+perspective(1300px)
+perspective-origin(50% 150px)
padding-top: 100px
padding-bottom: 100px
font-size: 1.5em
&.vex-closing .vex-content
+vex-animation(vex-flipout-horizontal .5s)
.vex-content
+vex-preserve-3d
+vex-animation(vex-flipin-horizontal .5s)
.vex-content
font-family: "Helvetica Neue", sans-serif
font-weight: 200
background: #fff
color: #444
padding: 2em 2em 3em 2em
line-height: 1.5em
position: relative
margin: 0 auto
max-width: 100%
width: 600px
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
position: absolute
top: 0
right: 0
cursor: pointer
&:before
font-family: "Helvetica Neue", sans-serif
font-weight: 100
line-height: 1px
padding-top: .5em
display: block
font-size: 2em
text-indent: 1px
overflow: hidden
height: 1.25em
width: 1.25em
text-align: center
top: 0
right: 0
color: #fff
background: #666
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: .5em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
+border-radius(3px)
background: #f0f0f0
width: 100%
padding: .25em .67em
border: 0
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
&:focus
+box-shadow(inset 0 0 0 2px #666)
outline: none
.vex-dialog-buttons
+pie-clearfix()
padding-top: 1em
margin-bottom: -3em
margin-left: -2em
margin-right: -2em
.vex-dialog-button
+border-radius(0)
border: 0
margin: 0
float: right
padding: .5em 1em
font-size: 1.13em
text-transform: uppercase
font-weight: 200
letter-spacing: .1em
line-height: 1em
font-family: inherit
&.vex-last
margin-left: 0
&:focus
outline: none
&.vex-dialog-button-primary
background: #666
color: #fff
&:focus
+box-shadow(inset 0 3px rgba(0, 0, 0, .2))
&.vex-dialog-button-secondary
background: #fff
color: #ccc
&:focus
+box-shadow(inset 0 3px #aaa)
background: #eee
color: #777
&:hover, &:active
color: #777
// Theme colors
&.vex-theme-flat-attack-pink
+vex-theme-flat-attack-color($pink)
&.vex-theme-flat-attack-red
+vex-theme-flat-attack-color($red)
&.vex-theme-flat-attack-green
+vex-theme-flat-attack-color($green)
&.vex-theme-flat-attack-blue
+vex-theme-flat-attack-color($blue)
.vex-loading-spinner.vex-theme-flat-attack
height: 4em
width: 4em

View File

@@ -0,0 +1,131 @@
@import mixins
@import keyframes
+keyframes-vex-flyin
+keyframes-vex-flyout
+keyframes-vex-pulse
$blue: #3288e6
.vex.vex-theme-os
padding-top: 160px
padding-bottom: 160px
&.vex-closing .vex-content
+vex-animation(vex-flyout .5s)
.vex-content
+vex-animation(vex-flyin .5s)
.vex-content
+border-radius(5px)
+box-shadow(inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, .08))
font-family: "Helvetica Neue", sans-serif
border-top: 20px solid #bbb
background: #f0f0f0
color: #444
padding: 1em
position: relative
margin: 0 auto
max-width: 100%
width: 450px
font-size: 1.1em
line-height: 1.5em
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
+border-radius(0 5px 0 0)
position: absolute
top: 0
right: 0
cursor: pointer
&:before
+border-radius(3px)
position: absolute
content: "\00D7"
font-size: 26px
font-weight: normal
line-height: 31px
height: 30px
width: 30px
text-align: center
top: 3px
right: 3px
color: #bbb
background: transparent
&:hover:before, &:active:before
color: #777
background: #e0e0e0
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: 1em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
+border-radius(3px)
background: #fff
width: 100%
padding: .25em .67em
border: 0
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
&:focus
+box-shadow(inset 0 0 0 1px $blue)
outline: none
.vex-dialog-buttons
+pie-clearfix()
.vex-dialog-button
+border-radius(3px)
border: 0
float: right
margin: 0 0 0 .5em
font-family: inherit
text-transform: uppercase
letter-spacing: .1em
font-size: .8em
line-height: 1em
padding: .75em 2em
&.vex-last
margin-left: 0
&:focus
+vex-animation(vex-pulse 1.1s infinite)
outline: none
// vex-pulse uses -webkit-filter which
// doesn't play so nice in mobile webkit
@media (max-width: 568px)
+vex-animation(none)
&.vex-dialog-button-primary
background: $blue
color: #fff
&.vex-dialog-button-secondary
background: #e0e0e0
color: #777
.vex-loading-spinner.vex-theme-os
+box-shadow(0 0 0 1px rgba(0, 0, 0, .2), 0 0 .5em rgba(0, 0, 0, .2))
+border-radius(100%)
background: rgba(255, 255, 255, .2)
width: 0
height: 0
border: 1.2em solid #bbb
border-top-color: #f0f0f0
border-bottom-color: #f0f0f0

View File

@@ -0,0 +1,111 @@
@import mixins
@import keyframes
+keyframes-vex-pulse
$blue: #3288e6
.vex.vex-theme-plain
padding-top: 160px
padding-bottom: 160px
.vex-content
font-family: "Helvetica Neue", sans-serif
background: #fff
color: #444
padding: 1em
position: relative
margin: 0 auto
max-width: 100%
width: 450px
font-size: 1.1em
line-height: 1.5em
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
position: absolute
top: 0
right: 0
cursor: pointer
&:before
position: absolute
content: "\00D7"
font-size: 26px
font-weight: normal
line-height: 31px
height: 30px
width: 30px
text-align: center
top: 3px
right: 3px
color: #bbb
background: transparent
&:hover:before, &:active:before
color: #777
background: #e0e0e0
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: 1em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
background: #f0f0f0
width: 100%
padding: .25em .67em
border: 0
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
&:focus
+box-shadow(inset 0 0 0 2px rgba(0, 0, 0, .2))
outline: none
.vex-dialog-buttons
+pie-clearfix()
.vex-dialog-button
+border-radius(0)
border: 0
float: right
margin: 0 0 0 .5em
font-family: inherit
text-transform: uppercase
letter-spacing: .1em
font-size: .8em
line-height: 1em
padding: .75em 2em
&.vex-last
margin-left: 0
&:focus
+vex-animation(vex-pulse 1.1s infinite)
outline: none
// vex-pulse uses -webkit-filter which
// doesn't play so nice in mobile webkit
@media (max-width: 568px)
+vex-animation(none)
&.vex-dialog-button-primary
background: $blue
color: #fff
&.vex-dialog-button-secondary
background: #e0e0e0
color: #777
.vex-loading-spinner.vex-theme-plain
height: 2.5em
width: 2.5em

View File

@@ -0,0 +1,126 @@
@import mixins
@import keyframes
+keyframes-vex-dropin
+keyframes-vex-dropout
+keyframes-vex-pulse
$blue: #3288e6
.vex.vex-theme-top
&.vex-closing .vex-content
+vex-animation(vex-dropout .5s)
.vex-content
+vex-animation(vex-dropin .5s)
.vex-content
+border-radius(0 0 5px 5px)
font-family: "Helvetica Neue", sans-serif
background: #f0f0f0
color: #444
padding: 1em
position: relative
margin: 0 auto
max-width: 100%
width: 450px
font-size: 1.1em
line-height: 1.5em
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
+border-radius(5px)
position: absolute
top: 0
right: 0
cursor: pointer
&:before
+border-radius(3px)
position: absolute
content: "\00D7"
font-size: 26px
font-weight: normal
line-height: 31px
height: 30px
width: 30px
text-align: center
top: 3px
right: 3px
color: #bbb
background: transparent
&:hover:before, &:active:before
color: #777
background: #e0e0e0
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: 1em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
+border-radius(3px)
background: #fff
width: 100%
padding: .25em .67em
border: 0
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
&:focus
+box-shadow(inset 0 0 0 2px lighten($blue, 20%))
outline: none
.vex-dialog-buttons
+pie-clearfix()
.vex-dialog-button
+border-radius(3px)
border: 0
float: right
margin: 0 0 0 .5em
font-family: inherit
text-transform: uppercase
letter-spacing: .1em
font-size: .8em
line-height: 1em
padding: .75em 2em
&.vex-last
margin-left: 0
&:focus
+vex-animation(vex-pulse 1.1s infinite)
outline: none
// vex-pulse uses -webkit-filter which
// doesn't play so nice in mobile webkit
@media (max-width: 568px)
+vex-animation(none)
&.vex-dialog-button-primary
background: $blue
color: #fff
&.vex-dialog-button-secondary
background: #e0e0e0
color: #777
.vex-loading-spinner.vex-theme-top
+box-shadow(0 0 0 .5em #f0f0f0, 0 0 1px .5em rgba(0, 0, 0, 0.3))
+border-radius(100%)
background: #f0f0f0
border: .2em solid transparent
border-top-color: #bbb
top: -1.1em
bottom: auto

View File

@@ -0,0 +1,113 @@
@import mixins
@import keyframes
+keyframes-vex-pulse
.vex.vex-theme-wireframe
padding-top: 160px
padding-bottom: 160px
.vex-overlay
background: rgba(255, 255, 255, .4)
.vex-content
font-family: "Helvetica Neue", sans-serif
background: #fff
color: #000
border: 2px solid #000
padding: 2em
position: relative
margin: 0 auto
max-width: 100%
width: 400px
font-size: 1.1em
line-height: 1.5em
h1, h2, h3, h4, h5, h6, p, ul, li
color: inherit
.vex-close
position: absolute
top: 0
right: 0
cursor: pointer
&:before
position: absolute
content: "\00D7"
font-size: 40px
font-weight: normal
line-height: 80px
height: 80px
width: 80px
text-align: center
top: 3px
right: 3px
color: #000
&:hover:before, &:active:before
color: #000
.vex-dialog-form
.vex-dialog-message
margin-bottom: .5em
.vex-dialog-input
margin-bottom: 1em
textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]
background: #fff
width: 100%
padding: .25em .67em
font-family: inherit
font-weight: inherit
font-size: inherit
min-height: 2.5em
margin: 0 0 .25em
border: 2px solid #000
&:focus
border-style: dashed
outline: none
.vex-dialog-buttons
+pie-clearfix()
.vex-dialog-button
+border-radius(0)
border: 0
float: right
margin: 0 0 0 .5em
font-family: inherit
text-transform: uppercase
letter-spacing: .1em
font-size: .8em
line-height: 1em
padding: .75em 2em
&.vex-last
margin-left: 0
&:focus
+vex-animation(vex-pulse 1.1s infinite)
outline: none
// vex-pulse uses -webkit-filter which
// doesn't play so nice in mobile webkit
@media (max-width: 568px)
+vex-animation(none)
&.vex-dialog-button-primary
background: #000
color: #fff
border: 2px solid transparent
&.vex-dialog-button-secondary
background: #fff
color: #000
border: 2px solid #000
.vex-loading-spinner.vex-theme-wireframe
height: 2.5em
width: 2.5em

84
public/bower_components/vex/sass/vex.sass vendored Executable file
View File

@@ -0,0 +1,84 @@
@import mixins
@import keyframes
+keyframes-vex-fadein
+keyframes-vex-fadeout
+keyframes-vex-rotation
.vex, .vex *, .vex *:before, .vex *:after
+box-sizing(border-box)
.vex
position: fixed
overflow: auto
-webkit-overflow-scrolling: touch
z-index: 1111
top: 0
right: 0
bottom: 0
left: 0
.vex-scrollbar-measure
position: absolute
top: -9999px
width: 50px
height: 50px
overflow: scroll
// IE
.vex-overlay
background: #000
filter: alpha(opacity=40) /* IE 57 */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)" /* IE 8 */
.vex-overlay
+vex-animation(vex-fadein .5s)
position: fixed
background: rgba(0, 0, 0, .4)
top: 0
right: 0
bottom: 0
left: 0
.vex.vex-closing &
+vex-animation(vex-fadeout .5s)
.vex-content
+vex-animation(vex-fadein .5s)
background: #fff
.vex.vex-closing &
+vex-animation(vex-fadeout .5s)
.vex-close:before
font-family: Arial, sans-serif
content: "\00D7"
.vex-dialog-form
margin: 0 // Browser reset
.vex-dialog-button
text-rendering: optimizeLegibility
+appearance(none)
cursor: pointer
-webkit-tap-highlight-color: transparent
.vex-loading-spinner
+vex-animation(vex-rotation .7s linear infinite)
+box-shadow(0 0 1em rgba(0, 0, 0, 0.1))
position: fixed
z-index: 1112
margin: auto
top: 0
right: 0
bottom: 0
left: 0
height: 2em
width: 2em
background: #fff
// Prevent background scrolling when vex is open
// https://github.com/HubSpot/vex/issues/18
body.vex-open
overflow: hidden