Repository: HubSpot/offline Branch: master Commit: a17291864212 Files: 136 Total size: 289.5 KB Directory structure: gitextract_8akg9yce/ ├── .github/ │ ├── ISSUE_TEMPLATE │ └── PULL_REQUEST_TEMPLATE ├── .gitignore ├── .hsdoc ├── Gruntfile.coffee ├── LICENSE ├── README.md ├── bower.json ├── coffee/ │ ├── offline.coffee │ ├── reconnect.coffee │ ├── requests.coffee │ ├── simulate.coffee │ ├── snake.coffee │ └── ui.coffee ├── docs/ │ └── welcome/ │ ├── app.js │ ├── images/ │ │ ├── ethernet-cable.sketch/ │ │ │ ├── Data │ │ │ ├── fonts │ │ │ └── version │ │ ├── macbook-pro-top.sketch/ │ │ │ ├── Data │ │ │ ├── fonts │ │ │ └── version │ │ └── macbook-pro.sketch/ │ │ ├── Data │ │ ├── fonts │ │ └── version │ └── index.html ├── install.json ├── js/ │ ├── offline.js │ ├── reconnect.js │ ├── requests.js │ ├── simulate.js │ ├── snake.js │ └── ui.js ├── offline.js ├── package.json ├── sass/ │ ├── _arabic.sass │ ├── _chinese-simplified.sass │ ├── _chinese-traditional.sass │ ├── _content.sass │ ├── _czech.sass │ ├── _dutch.sass │ ├── _english.sass │ ├── _french.sass │ ├── _german.sass │ ├── _italian.sass │ ├── _keyframes.sass │ ├── _mixins.sass │ ├── _offline-theme-base-indicator.sass │ ├── _offline-theme-base.sass │ ├── _pashto.sass │ ├── _persian.sass │ ├── _polish.sass │ ├── _portuguese-brazil.sass │ ├── _spanish.sass │ ├── _turkish.sass │ ├── offline-language-arabic-indicator.sass │ ├── offline-language-arabic.sass │ ├── offline-language-chinese-simplified-indicator.sass │ ├── offline-language-chinese-simplified.sass │ ├── offline-language-chinese-traditional-indicator.sass │ ├── offline-language-chinese-traditional.sass │ ├── offline-language-czech-indicator.sass │ ├── offline-language-czech.sass │ ├── offline-language-dutch-indicator.sass │ ├── offline-language-dutch.sass │ ├── offline-language-english-indicator.sass │ ├── offline-language-english.sass │ ├── offline-language-french-indicator.sass │ ├── offline-language-french.sass │ ├── offline-language-german-indicator.sass │ ├── offline-language-german.sass │ ├── offline-language-italian-indicator.sass │ ├── offline-language-italian.sass │ ├── offline-language-pashto-indicator.sass │ ├── offline-language-pashto.sass │ ├── offline-language-polish-indicator.sass │ ├── offline-language-polish.sass │ ├── offline-language-portuguese-brazil-indicator.sass │ ├── offline-language-portuguese-brazil.sass │ ├── offline-language-simplified-chinese-indicator.sass │ ├── offline-language-spanish-indicator.sass │ ├── offline-language-spanish.sass │ ├── offline-language-turkish-indicator.sass │ ├── offline-language-turkish.sass │ ├── offline-theme-chrome-indicator.sass │ ├── offline-theme-chrome.sass │ ├── offline-theme-dark-indicator.sass │ ├── offline-theme-dark.sass │ ├── offline-theme-default-indicator.sass │ ├── offline-theme-default.sass │ ├── offline-theme-hubspot.sass │ ├── offline-theme-slide-indicator.sass │ └── offline-theme-slide.sass ├── test/ │ ├── index.html │ └── snake.html └── themes/ ├── offline-language-arabic-indicator.css ├── offline-language-arabic.css ├── offline-language-chinese-simplified-indicator.css ├── offline-language-chinese-simplified.css ├── offline-language-chinese-traditional-indicator.css ├── offline-language-chinese-traditional.css ├── offline-language-czech-indicator.css ├── offline-language-czech.css ├── offline-language-dutch-indicator.css ├── offline-language-dutch.css ├── offline-language-english-indicator.css ├── offline-language-english.css ├── offline-language-french-indicator.css ├── offline-language-french.css ├── offline-language-german-indicator.css ├── offline-language-german.css ├── offline-language-hebrew-indicator.css ├── offline-language-hebrew.css ├── offline-language-italian-indicator.css ├── offline-language-italian.css ├── offline-language-pashto-indicator.css ├── offline-language-pashto.css ├── offline-language-persian-indicator.css ├── offline-language-persian.css ├── offline-language-polish-indicator.css ├── offline-language-polish.css ├── offline-language-portuguese-brazil-indicator.css ├── offline-language-portuguese-brazil.css ├── offline-language-simplified-chinese-indicator.css ├── offline-language-spanish-indicator.css ├── offline-language-spanish.css ├── offline-language-turkish-indicator.css ├── offline-language-turkish.css ├── offline-theme-chrome-indicator.css ├── offline-theme-chrome.css ├── offline-theme-dark-indicator.css ├── offline-theme-dark.css ├── offline-theme-default-indicator.css ├── offline-theme-default.css ├── offline-theme-hubspot.css ├── offline-theme-slide-indicator.css └── offline-theme-slide.css ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/ISSUE_TEMPLATE ================================================ ================================================ FILE: .github/PULL_REQUEST_TEMPLATE ================================================ ================================================ FILE: .gitignore ================================================ node_modules/ .sass-cache/ ================================================ FILE: .hsdoc ================================================ title: "Offline" source: "{coffee/*,sass/*}" assets: "{js/*,themes/*,offline.min.js,docs/welcome/*,test/*}" ================================================ FILE: Gruntfile.coffee ================================================ module.exports = (grunt) -> grunt.initConfig pkg: grunt.file.readJSON('package.json') coffee: compile: expand: true flatten: true src: ['coffee/*.coffee'] dest: 'js/' ext: '.js' watch: options: atBegin: true coffee: files: ['coffee/*', 'sass/*'] tasks: ['coffee', 'uglify', 'compass'] uglify: options: banner: '/*! <%= pkg.name %> <%= pkg.version %> */\n' minified: src: ['js/*', '!js/snake.js'] dest: 'offline.min.js' original: src: ['js/*', '!js/snake.js'] dest: 'offline.js' options: mangle: false beautify: beautify: true indent_level: 2 space_colon: false compass: dist: options: sassDir: 'sass' cssDir: 'themes' grunt.loadNpmTasks 'grunt-contrib-watch' grunt.loadNpmTasks 'grunt-contrib-uglify' grunt.loadNpmTasks 'grunt-contrib-coffee' grunt.loadNpmTasks 'grunt-contrib-compass' grunt.registerTask 'default', ['coffee', 'uglify', 'compass'] ================================================ FILE: LICENSE ================================================ Copyright (c) 2014 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. ================================================ FILE: README.md ================================================ ___ **This project isn't actively maintained.** ___ Offline ====== **Note to users pre-0.6.0: Offline previously used a cloudfront hosted file as one of it's methods of detecting the connection status. This method is now deprecated and the image has been removed. Please upgrade to Offline 0.7.0+.** Improve the experience of your app when your users lose connection. - Monitors ajax requests looking for failure - Confirms the connection status by requesting an image or fake resource - Automatically grabs ajax requests made while the connection is down and remakes them after the connection is restored. - Simple UI with beautiful themes - 3kb minified and compressed Installation ------------------- Include [the javascript](https://raw.github.com/HubSpot/offline/v0.7.14/offline.min.js), one of [the themes](http://github.hubspot.com/offline/docs/welcome/), and one of [the languages](https://github.com/HubSpot/offline/tree/master/themes) on your site. You're done! To use only the JavaScript API without a UI indicator, simply leave out the CSS file. If you'd like to get a peek at how it looks on your site, disconnect your internet, or try out the [simulator](http://craigshoemaker.github.io/offlinejs-simulate-ui/). Advanced -------- Optionally, you can provide some configuration by setting `Offline.options` after bringing in the script. Options (any can be provided as a function), with their defaults: ```javascript { // Should we check the connection status immediatly on page load. checkOnLoad: false, // Should we monitor AJAX requests to help decide if we have a connection. interceptRequests: true, // Should we automatically retest periodically when the connection is down (set to false to disable). reconnect: { // How many seconds should we wait before rechecking. initialDelay: 3, // How long should we wait between retries. delay: (1.5 * last delay, capped at 1 hour) }, // Should we store and attempt to remake requests which fail while the connection is down. requests: true, // Should we show a snake game while the connection is down to keep the user entertained? // It's not included in the normal build, you should bring in js/snake.js in addition to // offline.min.js. game: false } ``` Properties ---------- `Offline.check()`: Check the current status of the connection. `Offline.state`: The current state of the connection 'up' or 'down' `Offline.on(event, handler, context)`: Bind an event. Events: - up: The connection has gone from down to up - down: The connection has gone from up to down - confirmed-up: A connection test has succeeded, fired even if the connection was already up - confirmed-down: A connection test has failed, fired even if the connection was already down - checking: We are testing the connection - reconnect:started: We are beginning the reconnect process - reconnect:stopped: We are done attempting to reconnect - reconnect:tick: Fired every second during a reconnect attempt, when a check is not happening - reconnect:connecting: We are reconnecting now - reconnect:failure: A reconnect check attempt failed - requests:flush: Any pending requests have been remade - requests:capture: A new request is being held `Offline.off(event, handler)`: Unbind an event Checking -------- By default, Offline makes an XHR request to load your `/favicon.ico` to check the connection. If you don't have such a file, it will 404 in the console, but otherwise work fine (even a 404 means the connection is up). You can change the URL it hits (an endpoint which will respond with a quick 204 is perfect): ```javascript Offline.options = {checks: {xhr: {url: '/connection-test'}}}; ``` Make sure that the URL you check has the same origin as your page (the connection method, domain and port all must be the same), or you will run into CORS issues. You can add `Access-Control` headers to the endpoint to fix it on modern browsers, but it will still cause issues on IE9 and below. If you do want to run tests on a different domain, try the image method. It loads an image, which are allowed to cross domains. ```javascript Offline.options = {checks: {image: {url: 'my-image.gif'}, active: 'image'}} ``` The one caveat is that with the image method, we can't distinguish a 404 from a genuine connection issue, so any error at all will appear to Offline as a connection issue. Offline also includes a check called `'up'` and another called `'down'` which will always report being up or down respectively for testing. You can activate them by setting the `active` option, adding a data attribute to your script tag with the name `data-simulate` and value `'up'` or `'down'`, or by setting `localStorage.OFFLINE_SIMULATE` to `'up'` or `'down'`. Reconnect --------- The reconnect module automatically retests the connection periodically when it is down. A successful AJAX request will also trigger a silent recheck (if `interceptRequests` is not false). You can disable the reconnect module by setting the `reconnect` to false. Reconnect can be configured by setting options on the reconnect setting. Requests -------- The requests module holds any failed AJAX requests and, after deduping them, remakes them when the connection is restored. You can disable it by setting the `requests` setting to false. You can also set deDupBody to be true if you want deduping to also take into account the content of the request. Dependencies ------------ None! Browser Support --------------- Modern Chrome, Firefox, Safari and IE8+ Note that not all browsers (including Safari and old IE) support the offline events, forcing Offline to use less accurate methods of detection. ================================================ FILE: bower.json ================================================ { "name": "offline", "homepage": "http://github.hubspot.com/offline/docs/welcome", "authors": [ "Zack Bloom ", "Adam Schwartz " ], "repository": { "type": "git", "url": "git://github.com/HubSpot/offline.git" }, "description": "Automatically detect when a browser is offline", "main": "offline.js", "license": "MIT", "keywords": [ "offline", "online", "internet", "network", "ajax", "notification", "javascript", "client-side" ], "ignore": [ "**/.*", "node_modules", "bower_components", "coffee", "docs", "js", "test", "bower.json", "package.json" ] } ================================================ FILE: coffee/offline.coffee ================================================ # We get a clue that the browser might be offline from suspicious requests or # the HTML5 offline api. If we suspect it's offline, we make a request for any random path # which (probably) doesn't exist. If we get a response, we're still online, if not, # we trigger an event and update our status. extendNative = (to, from) -> for key of from:: try val = from::[key] if not to[key]? and typeof val isnt 'function' to[key] = val catch e Offline = {} Offline.options = if window.Offline then window.Offline.options or {} else {} defaultOptions = checks: xhr: url: -> # This can be any endpoint, even one that will 404. "/favicon.ico?_=#{ (new Date()).getTime() }" timeout: 5000 type: 'HEAD' image: url: -> # This can be any image, this is the better option if your image is on a different domain, otherwise just use XHR "/favicon.ico?_=#{ (new Date()).getTime() }" active: 'xhr' checkOnLoad: false interceptRequests: true reconnect: true deDupBody: false grab = (obj, key) -> cur = obj parts = key.split('.') for part, i in parts cur = cur[part] break if typeof cur isnt 'object' if i is parts.length - 1 cur else undefined Offline.getOption = (key) -> val = grab(Offline.options, key) ? grab(defaultOptions, key) if typeof val is 'function' val() else val # These events are available in modern browsers, but they mean different things. # In FF and IE they mean the user has explicitly entered "Offline Mode" # In Chrome they mean that the internet connection was lost or restored window.addEventListener? 'online', -> # The event fires slightly before the browser is ready to make a request setTimeout Offline.confirmUp, 100 , false window.addEventListener? 'offline', -> Offline.confirmDown() , false Offline.state = 'up' Offline.markUp = -> Offline.trigger 'confirmed-up' return if Offline.state is 'up' Offline.state = 'up' Offline.trigger 'up' Offline.markDown = -> Offline.trigger 'confirmed-down' return if Offline.state is 'down' Offline.state = 'down' Offline.trigger 'down' handlers = {} Offline.on = (event, handler, ctx) -> events = event.split(' ') if events.length > 1 Offline.on(e, handler, ctx) for e in events else handlers[event] ?= [] handlers[event].push [ctx, handler] Offline.off = (event, handler) -> return unless handlers[event]? if not handler handlers[event] = [] else i = 0 while i < handlers[event].length [ctx, _handler] = handlers[event][i] if _handler is handler handlers[event].splice i, 1 else i++ Offline.trigger = (event) -> if handlers[event]? # we have to make a copy of the handlers since its possible that the called functions will modify the handlers array by calling off/on for [ctx, handler] in handlers[event][..] handler.call(ctx) checkXHR = (xhr, onUp, onDown) -> checkStatus = -> if xhr.status and xhr.status < 12000 onUp() else onDown() if xhr.onprogress is null # onprogress would be undefined on older browsers # XDomainRequest doesn't implement addEventListener _onerror = xhr.onerror xhr.onerror = -> onDown() _onerror?(arguments...) _ontimeout = xhr.ontimeout xhr.ontimeout = -> onDown() _ontimeout?(arguments...) _onload = xhr.onload xhr.onload = -> checkStatus() _onload?(arguments...) else _onreadystatechange = xhr.onreadystatechange xhr.onreadystatechange = -> if xhr.readyState is 4 checkStatus() else if xhr.readyState is 0 onDown() _onreadystatechange?(arguments...) Offline.checks = {} Offline.checks.xhr = -> xhr = new XMLHttpRequest xhr.offline = false # It doesn't matter what this hits, even a 404 is considered up. It is important however that # it's on the same domain and port, so CORS issues don't come into play. xhr.open(Offline.getOption('checks.xhr.type'), Offline.getOption('checks.xhr.url'), true) if xhr.timeout? xhr.timeout = Offline.getOption('checks.xhr.timeout') checkXHR xhr, Offline.markUp, Offline.markDown try xhr.send() catch e # Catch NETWORK_ERRORS Offline.markDown() xhr Offline.checks.image = -> img = document.createElement 'img' img.onerror = Offline.markDown img.onload = Offline.markUp img.src = Offline.getOption('checks.image.url') undefined Offline.checks.down = Offline.markDown Offline.checks.up = Offline.markUp Offline.check = -> Offline.trigger 'checking' Offline.checks[Offline.getOption('checks.active')]() Offline.confirmUp = Offline.confirmDown = Offline.check Offline.onXHR = (cb) -> monitorXHR = (req, flags) -> _open = req.open req.open = (type, url, async, user, password) -> cb {type, url, async, flags, user, password, xhr: req} _open.apply req, arguments _XMLHttpRequest = window.XMLHttpRequest window.XMLHttpRequest = (flags) -> req = new _XMLHttpRequest(flags) monitorXHR req, flags _setRequestHeader = req.setRequestHeader req.headers = {} req.setRequestHeader = (name, value) -> req.headers[name] = value _setRequestHeader.call req, name, value _overrideMimeType = req.overrideMimeType req.overrideMimeType = (type) -> req.mimeType = type _overrideMimeType.call req, type req extendNative window.XMLHttpRequest, _XMLHttpRequest if window.XDomainRequest? _XDomainRequest = window.XDomainRequest window.XDomainRequest = -> req = new _XDomainRequest monitorXHR req req extendNative window.XDomainRequest, _XDomainRequest init = -> if Offline.getOption 'interceptRequests' Offline.onXHR ({xhr}) -> unless xhr.offline is false checkXHR xhr, Offline.markUp, Offline.confirmDown if Offline.getOption 'checkOnLoad' Offline.check() # We call init in a setTimeout to give time for options to be set setTimeout init, 0 window.Offline = Offline ================================================ FILE: coffee/reconnect.coffee ================================================ unless window.Offline throw new Error "Offline Reconnect brought in without offline.js" rc = Offline.reconnect = {} retryIntv = null reset = -> if rc.state? and rc.state isnt 'inactive' Offline.trigger 'reconnect:stopped' rc.state = 'inactive' rc.remaining = rc.delay = Offline.getOption('reconnect.initialDelay') ? 3 next = -> delay = Offline.getOption('reconnect.delay') ? Math.min(Math.ceil(rc.delay * 1.5), 3600) rc.remaining = rc.delay = delay tick = -> return if rc.state is 'connecting' rc.remaining -= 1 Offline.trigger 'reconnect:tick' if rc.remaining is 0 tryNow() tryNow = -> return if rc.state isnt 'waiting' Offline.trigger 'reconnect:connecting' rc.state = 'connecting' Offline.check() down = -> return unless Offline.getOption('reconnect') reset() rc.state = 'waiting' Offline.trigger 'reconnect:started' retryIntv = setInterval tick, 1000 up = -> if retryIntv? clearInterval retryIntv reset() nope = -> return unless Offline.getOption('reconnect') if rc.state is 'connecting' Offline.trigger 'reconnect:failure' rc.state = 'waiting' next() rc.tryNow = tryNow reset() Offline.on 'down', down Offline.on 'confirmed-down', nope Offline.on 'up', up ================================================ FILE: coffee/requests.coffee ================================================ unless window.Offline throw new Error "Requests module brought in without offline.js" held = [] waitingOnConfirm = false holdRequest = (req) -> return if Offline.getOption('requests') is false Offline.trigger 'requests:capture' if Offline.state isnt 'down' waitingOnConfirm = true held.push req makeRequest = ({xhr, url, type, user, password, body}) -> return if Offline.getOption('requests') is false xhr.abort() xhr.open(type, url, true, user, password) xhr.setRequestHeader(name, val) for name, val of xhr.headers if xhr.mimeType xhr.overrideMimeType xhr.mimeType xhr.send(body) clear = -> held = [] flush = -> return if Offline.getOption('requests') is false Offline.trigger 'requests:flush' requests = {} # Dedup requests, favoring the later request # TODO: Throw out PUT/POST/DELETE requests after too much time? for request in held # Break cache breaking url = request.url.replace /(\?|&)_=[0-9]+/, (match, chr) -> if chr is '?' then chr else '' if Offline.getOption('deDupBody') body = request.body if body.toString() is '[object Object]' body = JSON.stringify(body) else body = body.toString() requests["#{ request.type.toUpperCase() } - #{ url } - #{ body }"] = request; else requests["#{ request.type.toUpperCase() } - #{ url }"] = request for key, request of requests makeRequest request clear() setTimeout -> unless Offline.getOption('requests') is false Offline.on 'confirmed-up', -> if waitingOnConfirm waitingOnConfirm = false clear() Offline.on 'up', flush Offline.on 'down', -> waitingOnConfirm = false Offline.onXHR (request) -> {xhr, async} = request return if xhr.offline is false hold = -> holdRequest request _send = xhr.send xhr.send = (body) -> request.body = body _send.apply xhr, arguments return unless async if xhr.onprogress is null xhr.addEventListener 'error', hold, false xhr.addEventListener 'timeout', hold, false else _onreadystatechange = xhr.onreadystatechange xhr.onreadystatechange = -> if xhr.readyState is 0 hold() else if xhr.readyState is 4 and (xhr.status is 0 or xhr.status >= 12000) hold() _onreadystatechange?(arguments...) Offline.requests = { flush, clear } , 0 ================================================ FILE: coffee/simulate.coffee ================================================ unless Offline throw new Error("Offline simulate brought in without offline.js") for state in ['up', 'down'] try simulate = document.querySelector("script[data-simulate='#{ state }']") or localStorage?.OFFLINE_SIMULATE is state catch e simulate = false if simulate Offline.options ?= {} Offline.options.checks ?= {} Offline.options.checks.active = state ================================================ FILE: coffee/snake.coffee ================================================ canvas = dot = score = speed = stop = snake = randDot = fill = null render = -> canvas = document.createElementNS('http://www.w3.org/2000/svg', 'svg') canvas.setAttribute 'style', 'width: 100%; height: 100%; margin: -8px; position: absolute; top: 0; left: 0; z-index: 1000' canvas.setAttribute 'viewBox', '0 0 1000 1000' document.body.appendChild canvas dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle') dot.setAttribute 'r', 20 do randDot = -> dot.setAttribute 'cx', (Math.random() * 960)|0 + 20 dot.setAttribute 'cy', (Math.random() * 960)|0 + 20 canvas.appendChild dot snake = direction: 0 nodes: [] score = 0 speed = 10 stop = false move() move = -> return if stop lastNode = snake.nodes[snake.nodes.length - 1] if lastNode lastX = +lastNode.getAttribute('cx') lastY = +lastNode.getAttribute('cy') else lastX = 500 lastY = 500 if snake.nodes.length > score old = snake.nodes.shift() canvas.removeChild old nX = lastX + Math.cos(snake.direction) * speed nY = lastY + Math.sin(snake.direction) * speed node = document.createElementNS('http://www.w3.org/2000/svg', 'circle') node.setAttribute 'r', 20 node.setAttribute 'cx', nX node.setAttribute 'cy', nY if fill node.style.fill = fill dotX = +dot.getAttribute('cx') dotY = +dot.getAttribute('cy') if dotX - 20 < nX < dotX + 20 and dotY - 20 < nY < dotY + 20 score++ speed++ randDot() canvas.appendChild node snake.nodes.push node requestAnimationFrame move keyHandler = (e) -> if 37 <= e.keyCode <= 40 snake.direction = Math.PI/2 * ((e.keyCode - 35) % 4) return false show = -> document.addEventListener 'keydown', keyHandler render() hide = -> document.removeEventListener 'keydown', keyHandler stop = true document.removeChild canvas setTimeout -> if Offline.getOption('game') and document.addEventListener? Offline.on 'down', show Offline.on 'up', hide Offline.on 'reconnect:failure', -> fill = '#ec8787' setTimeout -> fill = 'black' , 2000 , 0 ================================================ FILE: coffee/ui.coffee ================================================ unless window.Offline throw new Error "Offline UI brought in without offline.js" TEMPLATE = '
' RETRY_TEMPLATE = '' createFromHTML = (html) -> el = document.createElement('div') el.innerHTML = html el.children[0] el = content = null addClass = (name) -> removeClass name el.className += " #{ name }" removeClass = (name) -> el.className = el.className.replace new RegExp("(^| )#{ name.split(' ').join('|') }( |$)", 'gi'), ' ' flashTimeouts = {} flashClass = (name, time) -> addClass name if flashTimeouts[name]? clearTimeout flashTimeouts[name] flashTimeouts[name] = setTimeout -> removeClass name delete flashTimeouts[name] , time * 1000 roundTime = (sec) -> units = 'day': 86400 'hour': 3600 'minute': 60 'second': 1 for unit, mult of units if sec >= mult val = Math.floor(sec / mult) return [val, unit] return ['now', ''] render = -> el = createFromHTML TEMPLATE document.body.appendChild el if Offline.reconnect? and Offline.getOption('reconnect') el.appendChild createFromHTML RETRY_TEMPLATE button = el.querySelector('.offline-ui-retry') handler = (e) -> e.preventDefault() Offline.reconnect.tryNow() if button.addEventListener? button.addEventListener 'click', handler, false else button.attachEvent 'click', handler addClass "offline-ui-#{ Offline.state }" content = el.querySelector('.offline-ui-content') init = -> render() Offline.on 'up', -> removeClass 'offline-ui-down' addClass 'offline-ui-up' flashClass 'offline-ui-up-2s', 2 flashClass 'offline-ui-up-5s', 5 Offline.on 'down', -> removeClass 'offline-ui-up' addClass 'offline-ui-down' flashClass 'offline-ui-down-2s', 2 flashClass 'offline-ui-down-5s', 5 Offline.on 'reconnect:connecting', -> addClass 'offline-ui-connecting' removeClass 'offline-ui-waiting' Offline.on 'reconnect:tick', -> addClass 'offline-ui-waiting' removeClass 'offline-ui-connecting' [time, unit] = roundTime Offline.reconnect.remaining content.setAttribute 'data-retry-in-value', time content.setAttribute 'data-retry-in-unit', unit Offline.on 'reconnect:stopped', -> removeClass 'offline-ui-connecting offline-ui-waiting' content.setAttribute 'data-retry-in-value', null content.setAttribute 'data-retry-in-unit', null Offline.on 'reconnect:failure', -> flashClass 'offline-ui-reconnect-failed-2s', 2 flashClass 'offline-ui-reconnect-failed-5s', 5 Offline.on 'reconnect:success', -> flashClass 'offline-ui-reconnect-succeeded-2s', 2 flashClass 'offline-ui-reconnect-succeeded-5s', 5 if document.readyState is 'complete' init() else if document.addEventListener? document.addEventListener 'DOMContentLoaded', init, false else # IE8 _onreadystatechange = document.onreadystatechange document.onreadystatechange = -> if document.readyState is 'complete' init() _onreadystatechange?(arguments...) ================================================ FILE: docs/welcome/app.js ================================================ $(function(){ var themes = [{ name: 'default', title: 'Default' }, { name: 'slide', title: 'Slide' }, { name: 'dark', title: 'Dark' }, { name: 'chrome', title: 'Chrome' }]; var indicatorThemes = [{ name: 'default-indicator', title: 'Default' }, { name: 'slide-indicator', title: 'Slide' }, { name: 'dark-indicator', title: 'Dark' }, { name: 'chrome-indicator', title: 'Chrome' }]; var addThemes = function(themes, selector) { $.each(themes, function(i, theme){ $(selector).append('
'+ '

' + theme.title + '

' + '

download

'+ '
' + '
'); }); }; addThemes(themes, '.full-themes'); addThemes(indicatorThemes, '.indicator-themes'); $('.browser iframe').each(function(){ var _this = this; var themeName = $(this).data('theme'); doc = (this.contentWindow || this.documentWindow).document; doc.open(); doc.write('' + '' + '' + '
' + ''); doc.close(); }); var phases = [ [5, 'offline-ui offline-ui-down offline-ui-down-5s', '', ''], [3, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '5 seconds', '5s'], [1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '4 seconds', '4s'], [1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '3 seconds', '3s'], [1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '2 seconds', '2s'], [1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '1 seconds', '1s'], [1, 'offline-ui offline-ui-up offline-ui-up-5s', '', ''] ]; var nextPhase = function() { var phase; $('.browser iframe').each(function(){ var $offline = $(this).contents().find('.offline-ui'), $content = $offline.find('.offline-ui-content'); phase = parseInt($offline.attr('data-phase'), 10); $offline.get(0).className = phases[phase][1]; $content.attr('data-retry-in', phases[phase][2]); $content.attr('data-retry-in-abbr', phases[phase][3]); phase = (phase + 1) % phases.length; $offline.attr('data-phase', phase); }); setTimeout(function(){ nextPhase(); }, phases[phase][0] * 1000); }; nextPhase(); }); ================================================ FILE: docs/welcome/images/ethernet-cable.sketch/fonts ================================================ ================================================ FILE: docs/welcome/images/ethernet-cable.sketch/version ================================================ 14 ================================================ FILE: docs/welcome/images/macbook-pro-top.sketch/fonts ================================================ ================================================ FILE: docs/welcome/images/macbook-pro-top.sketch/version ================================================ 14 ================================================ FILE: docs/welcome/images/macbook-pro.sketch/fonts ================================================ ================================================ FILE: docs/welcome/images/macbook-pro.sketch/version ================================================ 14 ================================================ FILE: docs/welcome/index.html ================================================ Offline.js – Handle your users losing their internet connection like a pro

Offline.js

Every app goes offline

★ On GitHub

What is Offline.js?

Offline.js is a library to automatically alert your users when they've lost internet connectivity, like Gmail.

It captures AJAX requests which were made while the connection was down, and remakes them when it's back up, so your app reacts perfectly.

It has a number of beautiful themes and requires no configuration.


Install

The easiest way to add Offline to your site is with Eager.

Click Install to see a live preview of Offline on your website.



Download

Offline.js


Pick a Theme

Indicator Themes

Submit a theme! Fork us on GitHub

Documentation


HubSpot



================================================ FILE: install.json ================================================ { "resources": { "head": [ { "type": "script", "src": "./offline.min.js" }, { "type": "style", "src": "./themes/offline-language-{{ options.language }}.css", "if": "!options.indicator" }, { "type": "style", "src": "./themes/offline-language-{{ options.language }}-indicator.css", "if": "options.indicator" }, { "type": "style", "src": "./themes/offline-theme-{{ options.theme }}.css", "if": "!options.indicator" }, { "type": "style", "src": "./themes/offline-theme-{{ options.theme }}-indicator.css", "if": "options.indicator" } ] }, "options": { "properties": { "indicator": { "title": "Always on", "description": "When checked, a connectivity indicator will always be present on the bottom-left corner of the page. When unchecked, Offline will only show a message when there are connectivity issues.", "type": "boolean", "default": false }, "language": { "title": "Language", "description": "The language of the message displayed to the user when connectivity is lost or regained.", "type": "string", "enum": [ "arabic", "chinese-simplified", "chinese-traditional", "dutch", "english", "french", "german", "italian", "pashto", "persian", "polish", "portuguese-brazil", "spanish", "turkish" ], "enumNames": { "arabic": "Arabic", "chinese-simplified": "Simplified Chinese", "chinese-traditional": "Traditional Chinese", "czech": "Czech", "dutch": "Dutch", "english": "English", "french": "French", "german": "German", "italian": "Italian", "pashto": "Pashto", "persian": "Persian", "polish": "Polish", "portuguese-brazil": "Brazilian Portuguese", "spanish": "Spanish", "turkish": "Turkish" }, "default": "english" }, "theme": { "title": "Theme", "description": "Describes the look and feel of the message.", "type": "string", "enum": [ "default", "dark", "chrome", "slide" ], "enumNames": { "default": "Default", "dark": "Dark", "chrome": "Chrome", "slide": "Slide" }, "default": "default" } } } } ================================================ FILE: js/offline.js ================================================ (function() { var Offline, checkXHR, defaultOptions, extendNative, grab, handlers, init; extendNative = function(to, from) { var e, key, results, val; results = []; for (key in from.prototype) { try { val = from.prototype[key]; if ((to[key] == null) && typeof val !== 'function') { results.push(to[key] = val); } else { results.push(void 0); } } catch (_error) { e = _error; } } return results; }; Offline = {}; Offline.options = window.Offline ? window.Offline.options || {} : {}; defaultOptions = { checks: { xhr: { url: function() { return "/favicon.ico?_=" + ((new Date()).getTime()); }, timeout: 5000, type: 'HEAD' }, image: { url: function() { return "/favicon.ico?_=" + ((new Date()).getTime()); } }, active: 'xhr' }, checkOnLoad: false, interceptRequests: true, reconnect: true, deDupBody: false }; grab = function(obj, key) { var cur, i, j, len, part, parts; cur = obj; parts = key.split('.'); for (i = j = 0, len = parts.length; j < len; i = ++j) { part = parts[i]; cur = cur[part]; if (typeof cur !== 'object') { break; } } if (i === parts.length - 1) { return cur; } else { return void 0; } }; Offline.getOption = function(key) { var ref, val; val = (ref = grab(Offline.options, key)) != null ? ref : grab(defaultOptions, key); if (typeof val === 'function') { return val(); } else { return val; } }; if (typeof window.addEventListener === "function") { window.addEventListener('online', function() { return setTimeout(Offline.confirmUp, 100); }, false); } if (typeof window.addEventListener === "function") { window.addEventListener('offline', function() { return Offline.confirmDown(); }, false); } Offline.state = 'up'; Offline.markUp = function() { Offline.trigger('confirmed-up'); if (Offline.state === 'up') { return; } Offline.state = 'up'; return Offline.trigger('up'); }; Offline.markDown = function() { Offline.trigger('confirmed-down'); if (Offline.state === 'down') { return; } Offline.state = 'down'; return Offline.trigger('down'); }; handlers = {}; Offline.on = function(event, handler, ctx) { var e, events, j, len, results; events = event.split(' '); if (events.length > 1) { results = []; for (j = 0, len = events.length; j < len; j++) { e = events[j]; results.push(Offline.on(e, handler, ctx)); } return results; } else { if (handlers[event] == null) { handlers[event] = []; } return handlers[event].push([ctx, handler]); } }; Offline.off = function(event, handler) { var _handler, ctx, i, ref, results; if (handlers[event] == null) { return; } if (!handler) { return handlers[event] = []; } else { i = 0; results = []; while (i < handlers[event].length) { ref = handlers[event][i], ctx = ref[0], _handler = ref[1]; if (_handler === handler) { results.push(handlers[event].splice(i, 1)); } else { results.push(i++); } } return results; } }; Offline.trigger = function(event) { var ctx, handler, j, len, ref, ref1, results; if (handlers[event] != null) { ref = handlers[event].slice(0); results = []; for (j = 0, len = ref.length; j < len; j++) { ref1 = ref[j], ctx = ref1[0], handler = ref1[1]; results.push(handler.call(ctx)); } return results; } }; checkXHR = function(xhr, onUp, onDown) { var _onerror, _onload, _onreadystatechange, _ontimeout, checkStatus; checkStatus = function() { if (xhr.status && xhr.status < 12000) { return onUp(); } else { return onDown(); } }; if (xhr.onprogress === null) { _onerror = xhr.onerror; xhr.onerror = function() { onDown(); return typeof _onerror === "function" ? _onerror.apply(null, arguments) : void 0; }; _ontimeout = xhr.ontimeout; xhr.ontimeout = function() { onDown(); return typeof _ontimeout === "function" ? _ontimeout.apply(null, arguments) : void 0; }; _onload = xhr.onload; return xhr.onload = function() { checkStatus(); return typeof _onload === "function" ? _onload.apply(null, arguments) : void 0; }; } else { _onreadystatechange = xhr.onreadystatechange; return xhr.onreadystatechange = function() { if (xhr.readyState === 4) { checkStatus(); } else if (xhr.readyState === 0) { onDown(); } return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0; }; } }; Offline.checks = {}; Offline.checks.xhr = function() { var e, xhr; xhr = new XMLHttpRequest; xhr.offline = false; xhr.open(Offline.getOption('checks.xhr.type'), Offline.getOption('checks.xhr.url'), true); if (xhr.timeout != null) { xhr.timeout = Offline.getOption('checks.xhr.timeout'); } checkXHR(xhr, Offline.markUp, Offline.markDown); try { xhr.send(); } catch (_error) { e = _error; Offline.markDown(); } return xhr; }; Offline.checks.image = function() { var img; img = document.createElement('img'); img.onerror = Offline.markDown; img.onload = Offline.markUp; img.src = Offline.getOption('checks.image.url'); return void 0; }; Offline.checks.down = Offline.markDown; Offline.checks.up = Offline.markUp; Offline.check = function() { Offline.trigger('checking'); return Offline.checks[Offline.getOption('checks.active')](); }; Offline.confirmUp = Offline.confirmDown = Offline.check; Offline.onXHR = function(cb) { var _XDomainRequest, _XMLHttpRequest, monitorXHR; monitorXHR = function(req, flags) { var _open; _open = req.open; return req.open = function(type, url, async, user, password) { cb({ type: type, url: url, async: async, flags: flags, user: user, password: password, xhr: req }); return _open.apply(req, arguments); }; }; _XMLHttpRequest = window.XMLHttpRequest; window.XMLHttpRequest = function(flags) { var _overrideMimeType, _setRequestHeader, req; req = new _XMLHttpRequest(flags); monitorXHR(req, flags); _setRequestHeader = req.setRequestHeader; req.headers = {}; req.setRequestHeader = function(name, value) { req.headers[name] = value; return _setRequestHeader.call(req, name, value); }; _overrideMimeType = req.overrideMimeType; req.overrideMimeType = function(type) { req.mimeType = type; return _overrideMimeType.call(req, type); }; return req; }; extendNative(window.XMLHttpRequest, _XMLHttpRequest); if (window.XDomainRequest != null) { _XDomainRequest = window.XDomainRequest; window.XDomainRequest = function() { var req; req = new _XDomainRequest; monitorXHR(req); return req; }; return extendNative(window.XDomainRequest, _XDomainRequest); } }; init = function() { if (Offline.getOption('interceptRequests')) { Offline.onXHR(function(arg) { var xhr; xhr = arg.xhr; if (xhr.offline !== false) { return checkXHR(xhr, Offline.markUp, Offline.confirmDown); } }); } if (Offline.getOption('checkOnLoad')) { return Offline.check(); } }; setTimeout(init, 0); window.Offline = Offline; }).call(this); ================================================ FILE: js/reconnect.js ================================================ (function() { var down, next, nope, rc, reset, retryIntv, tick, tryNow, up; if (!window.Offline) { throw new Error("Offline Reconnect brought in without offline.js"); } rc = Offline.reconnect = {}; retryIntv = null; reset = function() { var ref; if ((rc.state != null) && rc.state !== 'inactive') { Offline.trigger('reconnect:stopped'); } rc.state = 'inactive'; return rc.remaining = rc.delay = (ref = Offline.getOption('reconnect.initialDelay')) != null ? ref : 3; }; next = function() { var delay, ref; delay = (ref = Offline.getOption('reconnect.delay')) != null ? ref : Math.min(Math.ceil(rc.delay * 1.5), 3600); return rc.remaining = rc.delay = delay; }; tick = function() { if (rc.state === 'connecting') { return; } rc.remaining -= 1; Offline.trigger('reconnect:tick'); if (rc.remaining === 0) { return tryNow(); } }; tryNow = function() { if (rc.state !== 'waiting') { return; } Offline.trigger('reconnect:connecting'); rc.state = 'connecting'; return Offline.check(); }; down = function() { if (!Offline.getOption('reconnect')) { return; } reset(); rc.state = 'waiting'; Offline.trigger('reconnect:started'); return retryIntv = setInterval(tick, 1000); }; up = function() { if (retryIntv != null) { clearInterval(retryIntv); } return reset(); }; nope = function() { if (!Offline.getOption('reconnect')) { return; } if (rc.state === 'connecting') { Offline.trigger('reconnect:failure'); rc.state = 'waiting'; return next(); } }; rc.tryNow = tryNow; reset(); Offline.on('down', down); Offline.on('confirmed-down', nope); Offline.on('up', up); }).call(this); ================================================ FILE: js/requests.js ================================================ (function() { var clear, flush, held, holdRequest, makeRequest, waitingOnConfirm; if (!window.Offline) { throw new Error("Requests module brought in without offline.js"); } held = []; waitingOnConfirm = false; holdRequest = function(req) { if (Offline.getOption('requests') === false) { return; } Offline.trigger('requests:capture'); if (Offline.state !== 'down') { waitingOnConfirm = true; } return held.push(req); }; makeRequest = function(arg) { var body, name, password, ref, type, url, user, val, xhr; xhr = arg.xhr, url = arg.url, type = arg.type, user = arg.user, password = arg.password, body = arg.body; if (Offline.getOption('requests') === false) { return; } xhr.abort(); xhr.open(type, url, true, user, password); ref = xhr.headers; for (name in ref) { val = ref[name]; xhr.setRequestHeader(name, val); } if (xhr.mimeType) { xhr.overrideMimeType(xhr.mimeType); } return xhr.send(body); }; clear = function() { return held = []; }; flush = function() { var body, i, key, len, request, requests, url; if (Offline.getOption('requests') === false) { return; } Offline.trigger('requests:flush'); requests = {}; for (i = 0, len = held.length; i < len; i++) { request = held[i]; url = request.url.replace(/(\?|&)_=[0-9]+/, function(match, chr) { if (chr === '?') { return chr; } else { return ''; } }); if (Offline.getOption('deDupBody')) { body = request.body; if (body.toString() === '[object Object]') { body = JSON.stringify(body); } else { body = body.toString(); } requests[(request.type.toUpperCase()) + " - " + url + " - " + body] = request; } else { requests[(request.type.toUpperCase()) + " - " + url] = request; } } for (key in requests) { request = requests[key]; makeRequest(request); } return clear(); }; setTimeout(function() { if (Offline.getOption('requests') !== false) { Offline.on('confirmed-up', function() { if (waitingOnConfirm) { waitingOnConfirm = false; return clear(); } }); Offline.on('up', flush); Offline.on('down', function() { return waitingOnConfirm = false; }); Offline.onXHR(function(request) { var _onreadystatechange, _send, async, hold, xhr; xhr = request.xhr, async = request.async; if (xhr.offline === false) { return; } hold = function() { return holdRequest(request); }; _send = xhr.send; xhr.send = function(body) { request.body = body; return _send.apply(xhr, arguments); }; if (!async) { return; } if (xhr.onprogress === null) { xhr.addEventListener('error', hold, false); return xhr.addEventListener('timeout', hold, false); } else { _onreadystatechange = xhr.onreadystatechange; return xhr.onreadystatechange = function() { if (xhr.readyState === 0) { hold(); } else if (xhr.readyState === 4 && (xhr.status === 0 || xhr.status >= 12000)) { hold(); } return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0; }; } }); return Offline.requests = { flush: flush, clear: clear }; } }, 0); }).call(this); ================================================ FILE: js/simulate.js ================================================ (function() { var base, e, i, len, ref, simulate, state; if (!Offline) { throw new Error("Offline simulate brought in without offline.js"); } ref = ['up', 'down']; for (i = 0, len = ref.length; i < len; i++) { state = ref[i]; try { simulate = document.querySelector("script[data-simulate='" + state + "']") || (typeof localStorage !== "undefined" && localStorage !== null ? localStorage.OFFLINE_SIMULATE : void 0) === state; } catch (_error) { e = _error; simulate = false; } } if (simulate) { if (Offline.options == null) { Offline.options = {}; } if ((base = Offline.options).checks == null) { base.checks = {}; } Offline.options.checks.active = state; } }).call(this); ================================================ FILE: js/snake.js ================================================ (function() { var canvas, dot, fill, hide, keyHandler, move, randDot, render, score, show, snake, speed, stop; canvas = dot = score = speed = stop = snake = randDot = fill = null; render = function() { canvas = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); canvas.setAttribute('style', 'width: 100%; height: 100%; margin: -8px; position: absolute; top: 0; left: 0; z-index: 1000'); canvas.setAttribute('viewBox', '0 0 1000 1000'); document.body.appendChild(canvas); dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle'); dot.setAttribute('r', 20); (randDot = function() { dot.setAttribute('cx', (Math.random() * 960) | 0 + 20); return dot.setAttribute('cy', (Math.random() * 960) | 0 + 20); })(); canvas.appendChild(dot); snake = { direction: 0, nodes: [] }; score = 0; speed = 10; stop = false; return move(); }; move = function() { var dotX, dotY, lastNode, lastX, lastY, nX, nY, node, old; if (stop) { return; } lastNode = snake.nodes[snake.nodes.length - 1]; if (lastNode) { lastX = +lastNode.getAttribute('cx'); lastY = +lastNode.getAttribute('cy'); } else { lastX = 500; lastY = 500; } if (snake.nodes.length > score) { old = snake.nodes.shift(); canvas.removeChild(old); } nX = lastX + Math.cos(snake.direction) * speed; nY = lastY + Math.sin(snake.direction) * speed; node = document.createElementNS('http://www.w3.org/2000/svg', 'circle'); node.setAttribute('r', 20); node.setAttribute('cx', nX); node.setAttribute('cy', nY); if (fill) { node.style.fill = fill; } dotX = +dot.getAttribute('cx'); dotY = +dot.getAttribute('cy'); if ((dotX - 20 < nX && nX < dotX + 20) && (dotY - 20 < nY && nY < dotY + 20)) { score++; speed++; randDot(); } canvas.appendChild(node); snake.nodes.push(node); return requestAnimationFrame(move); }; keyHandler = function(e) { var ref; if ((37 <= (ref = e.keyCode) && ref <= 40)) { snake.direction = Math.PI / 2 * ((e.keyCode - 35) % 4); return false; } }; show = function() { document.addEventListener('keydown', keyHandler); return render(); }; hide = function() { document.removeEventListener('keydown', keyHandler); stop = true; return document.removeChild(canvas); }; setTimeout(function() { if (Offline.getOption('game') && (document.addEventListener != null)) { Offline.on('down', show); Offline.on('up', hide); return Offline.on('reconnect:failure', function() { fill = '#ec8787'; return setTimeout(function() { return fill = 'black'; }, 2000); }); } }, 0); }).call(this); ================================================ FILE: js/ui.js ================================================ (function() { var RETRY_TEMPLATE, TEMPLATE, _onreadystatechange, addClass, content, createFromHTML, el, flashClass, flashTimeouts, init, removeClass, render, roundTime; if (!window.Offline) { throw new Error("Offline UI brought in without offline.js"); } TEMPLATE = '
'; RETRY_TEMPLATE = ''; createFromHTML = function(html) { var el; el = document.createElement('div'); el.innerHTML = html; return el.children[0]; }; el = content = null; addClass = function(name) { removeClass(name); return el.className += " " + name; }; removeClass = function(name) { return el.className = el.className.replace(new RegExp("(^| )" + (name.split(' ').join('|')) + "( |$)", 'gi'), ' '); }; flashTimeouts = {}; flashClass = function(name, time) { addClass(name); if (flashTimeouts[name] != null) { clearTimeout(flashTimeouts[name]); } return flashTimeouts[name] = setTimeout(function() { removeClass(name); return delete flashTimeouts[name]; }, time * 1000); }; roundTime = function(sec) { var mult, unit, units, val; units = { 'day': 86400, 'hour': 3600, 'minute': 60, 'second': 1 }; for (unit in units) { mult = units[unit]; if (sec >= mult) { val = Math.floor(sec / mult); return [val, unit]; } } return ['now', '']; }; render = function() { var button, handler; el = createFromHTML(TEMPLATE); document.body.appendChild(el); if ((Offline.reconnect != null) && Offline.getOption('reconnect')) { el.appendChild(createFromHTML(RETRY_TEMPLATE)); button = el.querySelector('.offline-ui-retry'); handler = function(e) { e.preventDefault(); return Offline.reconnect.tryNow(); }; if (button.addEventListener != null) { button.addEventListener('click', handler, false); } else { button.attachEvent('click', handler); } } addClass("offline-ui-" + Offline.state); return content = el.querySelector('.offline-ui-content'); }; init = function() { render(); Offline.on('up', function() { removeClass('offline-ui-down'); addClass('offline-ui-up'); flashClass('offline-ui-up-2s', 2); return flashClass('offline-ui-up-5s', 5); }); Offline.on('down', function() { removeClass('offline-ui-up'); addClass('offline-ui-down'); flashClass('offline-ui-down-2s', 2); return flashClass('offline-ui-down-5s', 5); }); Offline.on('reconnect:connecting', function() { addClass('offline-ui-connecting'); return removeClass('offline-ui-waiting'); }); Offline.on('reconnect:tick', function() { var ref, time, unit; addClass('offline-ui-waiting'); removeClass('offline-ui-connecting'); ref = roundTime(Offline.reconnect.remaining), time = ref[0], unit = ref[1]; content.setAttribute('data-retry-in-value', time); return content.setAttribute('data-retry-in-unit', unit); }); Offline.on('reconnect:stopped', function() { removeClass('offline-ui-connecting offline-ui-waiting'); content.setAttribute('data-retry-in-value', null); return content.setAttribute('data-retry-in-unit', null); }); Offline.on('reconnect:failure', function() { flashClass('offline-ui-reconnect-failed-2s', 2); return flashClass('offline-ui-reconnect-failed-5s', 5); }); return Offline.on('reconnect:success', function() { flashClass('offline-ui-reconnect-succeeded-2s', 2); return flashClass('offline-ui-reconnect-succeeded-5s', 5); }); }; if (document.readyState === 'complete') { init(); } else if (document.addEventListener != null) { document.addEventListener('DOMContentLoaded', init, false); } else { _onreadystatechange = document.onreadystatechange; document.onreadystatechange = function() { if (document.readyState === 'complete') { init(); } return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0; }; } }).call(this); ================================================ FILE: offline.js ================================================ /*! offline-js 0.7.19 */ (function() { var Offline, checkXHR, defaultOptions, extendNative, grab, handlers, init; extendNative = function(to, from) { var key, results, val; results = []; for (key in from.prototype) try { val = from.prototype[key], null == to[key] && "function" != typeof val ? results.push(to[key] = val) :results.push(void 0); } catch (_error) { _error; } return results; }, Offline = {}, Offline.options = window.Offline ? window.Offline.options || {} :{}, defaultOptions = { checks:{ xhr:{ url:function() { return "/favicon.ico?_=" + new Date().getTime(); }, timeout:5e3, type:"HEAD" }, image:{ url:function() { return "/favicon.ico?_=" + new Date().getTime(); } }, active:"xhr" }, checkOnLoad:!1, interceptRequests:!0, reconnect:!0, deDupBody:!1 }, grab = function(obj, key) { var cur, i, j, len, part, parts; for (cur = obj, parts = key.split("."), i = j = 0, len = parts.length; j < len && (part = parts[i], "object" == typeof (cur = cur[part])); i = ++j) ; return i === parts.length - 1 ? cur :void 0; }, Offline.getOption = function(key) { var ref, val; return val = null != (ref = grab(Offline.options, key)) ? ref :grab(defaultOptions, key), "function" == typeof val ? val() :val; }, "function" == typeof window.addEventListener && window.addEventListener("online", function() { return setTimeout(Offline.confirmUp, 100); }, !1), "function" == typeof window.addEventListener && window.addEventListener("offline", function() { return Offline.confirmDown(); }, !1), Offline.state = "up", Offline.markUp = function() { if (Offline.trigger("confirmed-up"), "up" !== Offline.state) return Offline.state = "up", Offline.trigger("up"); }, Offline.markDown = function() { if (Offline.trigger("confirmed-down"), "down" !== Offline.state) return Offline.state = "down", Offline.trigger("down"); }, handlers = {}, Offline.on = function(event, handler, ctx) { var e, events, j, len, results; if (events = event.split(" "), events.length > 1) { for (results = [], j = 0, len = events.length; j < len; j++) e = events[j], results.push(Offline.on(e, handler, ctx)); return results; } return null == handlers[event] && (handlers[event] = []), handlers[event].push([ ctx, handler ]); }, Offline.off = function(event, handler) { var _handler, i, ref, results; if (null != handlers[event]) { if (handler) { for (i = 0, results = []; i < handlers[event].length; ) ref = handlers[event][i], ref[0], _handler = ref[1], _handler === handler ? results.push(handlers[event].splice(i, 1)) :results.push(i++); return results; } return handlers[event] = []; } }, Offline.trigger = function(event) { var ctx, handler, j, len, ref, ref1, results; if (null != handlers[event]) { for (ref = handlers[event].slice(0), results = [], j = 0, len = ref.length; j < len; j++) ref1 = ref[j], ctx = ref1[0], handler = ref1[1], results.push(handler.call(ctx)); return results; } }, checkXHR = function(xhr, onUp, onDown) { var _onerror, _onload, _onreadystatechange, _ontimeout, checkStatus; return checkStatus = function() { return xhr.status && xhr.status < 12e3 ? onUp() :onDown(); }, null === xhr.onprogress ? (_onerror = xhr.onerror, xhr.onerror = function() { return onDown(), "function" == typeof _onerror ? _onerror.apply(null, arguments) :void 0; }, _ontimeout = xhr.ontimeout, xhr.ontimeout = function() { return onDown(), "function" == typeof _ontimeout ? _ontimeout.apply(null, arguments) :void 0; }, _onload = xhr.onload, xhr.onload = function() { return checkStatus(), "function" == typeof _onload ? _onload.apply(null, arguments) :void 0; }) :(_onreadystatechange = xhr.onreadystatechange, xhr.onreadystatechange = function() { return 4 === xhr.readyState ? checkStatus() :0 === xhr.readyState && onDown(), "function" == typeof _onreadystatechange ? _onreadystatechange.apply(null, arguments) :void 0; }); }, Offline.checks = {}, Offline.checks.xhr = function() { var xhr; xhr = new XMLHttpRequest(), xhr.offline = !1, xhr.open(Offline.getOption("checks.xhr.type"), Offline.getOption("checks.xhr.url"), !0), null != xhr.timeout && (xhr.timeout = Offline.getOption("checks.xhr.timeout")), checkXHR(xhr, Offline.markUp, Offline.markDown); try { xhr.send(); } catch (_error) { _error, Offline.markDown(); } return xhr; }, Offline.checks.image = function() { var img; img = document.createElement("img"), img.onerror = Offline.markDown, img.onload = Offline.markUp, img.src = Offline.getOption("checks.image.url"); }, Offline.checks.down = Offline.markDown, Offline.checks.up = Offline.markUp, Offline.check = function() { return Offline.trigger("checking"), Offline.checks[Offline.getOption("checks.active")](); }, Offline.confirmUp = Offline.confirmDown = Offline.check, Offline.onXHR = function(cb) { var _XDomainRequest, _XMLHttpRequest, monitorXHR; if (monitorXHR = function(req, flags) { var _open; return _open = req.open, req.open = function(type, url, async, user, password) { return cb({ type:type, url:url, async:async, flags:flags, user:user, password:password, xhr:req }), _open.apply(req, arguments); }; }, _XMLHttpRequest = window.XMLHttpRequest, window.XMLHttpRequest = function(flags) { var _overrideMimeType, _setRequestHeader, req; return req = new _XMLHttpRequest(flags), monitorXHR(req, flags), _setRequestHeader = req.setRequestHeader, req.headers = {}, req.setRequestHeader = function(name, value) { return req.headers[name] = value, _setRequestHeader.call(req, name, value); }, _overrideMimeType = req.overrideMimeType, req.overrideMimeType = function(type) { return req.mimeType = type, _overrideMimeType.call(req, type); }, req; }, extendNative(window.XMLHttpRequest, _XMLHttpRequest), null != window.XDomainRequest) return _XDomainRequest = window.XDomainRequest, window.XDomainRequest = function() { var req; return req = new _XDomainRequest(), monitorXHR(req), req; }, extendNative(window.XDomainRequest, _XDomainRequest); }, init = function() { if (Offline.getOption("interceptRequests") && Offline.onXHR(function(arg) { var xhr; if (xhr = arg.xhr, !1 !== xhr.offline) return checkXHR(xhr, Offline.markUp, Offline.confirmDown); }), Offline.getOption("checkOnLoad")) return Offline.check(); }, setTimeout(init, 0), window.Offline = Offline; }).call(this), function() { var down, next, nope, rc, reset, retryIntv, tick, tryNow, up; if (!window.Offline) throw new Error("Offline Reconnect brought in without offline.js"); rc = Offline.reconnect = {}, retryIntv = null, reset = function() { var ref; return null != rc.state && "inactive" !== rc.state && Offline.trigger("reconnect:stopped"), rc.state = "inactive", rc.remaining = rc.delay = null != (ref = Offline.getOption("reconnect.initialDelay")) ? ref :3; }, next = function() { var delay, ref; return delay = null != (ref = Offline.getOption("reconnect.delay")) ? ref :Math.min(Math.ceil(1.5 * rc.delay), 3600), rc.remaining = rc.delay = delay; }, tick = function() { if ("connecting" !== rc.state) return rc.remaining -= 1, Offline.trigger("reconnect:tick"), 0 === rc.remaining ? tryNow() :void 0; }, tryNow = function() { if ("waiting" === rc.state) return Offline.trigger("reconnect:connecting"), rc.state = "connecting", Offline.check(); }, down = function() { if (Offline.getOption("reconnect")) return reset(), rc.state = "waiting", Offline.trigger("reconnect:started"), retryIntv = setInterval(tick, 1e3); }, up = function() { return null != retryIntv && clearInterval(retryIntv), reset(); }, nope = function() { if (Offline.getOption("reconnect")) return "connecting" === rc.state ? (Offline.trigger("reconnect:failure"), rc.state = "waiting", next()) :void 0; }, rc.tryNow = tryNow, reset(), Offline.on("down", down), Offline.on("confirmed-down", nope), Offline.on("up", up); }.call(this), function() { var clear, flush, held, holdRequest, makeRequest, waitingOnConfirm; if (!window.Offline) throw new Error("Requests module brought in without offline.js"); held = [], waitingOnConfirm = !1, holdRequest = function(req) { if (!1 !== Offline.getOption("requests")) return Offline.trigger("requests:capture"), "down" !== Offline.state && (waitingOnConfirm = !0), held.push(req); }, makeRequest = function(arg) { var body, name, password, ref, type, url, user, val, xhr; if (xhr = arg.xhr, url = arg.url, type = arg.type, user = arg.user, password = arg.password, body = arg.body, !1 !== Offline.getOption("requests")) { xhr.abort(), xhr.open(type, url, !0, user, password), ref = xhr.headers; for (name in ref) val = ref[name], xhr.setRequestHeader(name, val); return xhr.mimeType && xhr.overrideMimeType(xhr.mimeType), xhr.send(body); } }, clear = function() { return held = []; }, flush = function() { var body, i, key, len, request, requests, url; if (!1 !== Offline.getOption("requests")) { for (Offline.trigger("requests:flush"), requests = {}, i = 0, len = held.length; i < len; i++) request = held[i], url = request.url.replace(/(\?|&)_=[0-9]+/, function(match, chr) { return "?" === chr ? chr :""; }), Offline.getOption("deDupBody") ? (body = request.body, body = "[object Object]" === body.toString() ? JSON.stringify(body) :body.toString(), requests[request.type.toUpperCase() + " - " + url + " - " + body] = request) :requests[request.type.toUpperCase() + " - " + url] = request; for (key in requests) request = requests[key], makeRequest(request); return clear(); } }, setTimeout(function() { if (!1 !== Offline.getOption("requests")) return Offline.on("confirmed-up", function() { if (waitingOnConfirm) return waitingOnConfirm = !1, clear(); }), Offline.on("up", flush), Offline.on("down", function() { return waitingOnConfirm = !1; }), Offline.onXHR(function(request) { var _onreadystatechange, _send, async, hold, xhr; if (xhr = request.xhr, async = request.async, !1 !== xhr.offline && (hold = function() { return holdRequest(request); }, _send = xhr.send, xhr.send = function(body) { return request.body = body, _send.apply(xhr, arguments); }, async)) return null === xhr.onprogress ? (xhr.addEventListener("error", hold, !1), xhr.addEventListener("timeout", hold, !1)) :(_onreadystatechange = xhr.onreadystatechange, xhr.onreadystatechange = function() { return 0 === xhr.readyState ? hold() :4 === xhr.readyState && (0 === xhr.status || xhr.status >= 12e3) && hold(), "function" == typeof _onreadystatechange ? _onreadystatechange.apply(null, arguments) :void 0; }); }), Offline.requests = { flush:flush, clear:clear }; }, 0); }.call(this), function() { var base, i, len, ref, simulate, state; if (!Offline) throw new Error("Offline simulate brought in without offline.js"); for (ref = [ "up", "down" ], i = 0, len = ref.length; i < len; i++) { state = ref[i]; try { simulate = document.querySelector("script[data-simulate='" + state + "']") || ("undefined" != typeof localStorage && null !== localStorage ? localStorage.OFFLINE_SIMULATE :void 0) === state; } catch (_error) { _error, simulate = !1; } } simulate && (null == Offline.options && (Offline.options = {}), null == (base = Offline.options).checks && (base.checks = {}), Offline.options.checks.active = state); }.call(this), function() { var RETRY_TEMPLATE, TEMPLATE, _onreadystatechange, addClass, content, createFromHTML, el, flashClass, flashTimeouts, init, removeClass, render, roundTime; if (!window.Offline) throw new Error("Offline UI brought in without offline.js"); TEMPLATE = '
', RETRY_TEMPLATE = '', createFromHTML = function(html) { var el; return el = document.createElement("div"), el.innerHTML = html, el.children[0]; }, el = content = null, addClass = function(name) { return removeClass(name), el.className += " " + name; }, removeClass = function(name) { return el.className = el.className.replace(new RegExp("(^| )" + name.split(" ").join("|") + "( |$)", "gi"), " "); }, flashTimeouts = {}, flashClass = function(name, time) { return addClass(name), null != flashTimeouts[name] && clearTimeout(flashTimeouts[name]), flashTimeouts[name] = setTimeout(function() { return removeClass(name), delete flashTimeouts[name]; }, 1e3 * time); }, roundTime = function(sec) { var mult, unit, units, val; units = { day:86400, hour:3600, minute:60, second:1 }; for (unit in units) if (mult = units[unit], sec >= mult) return val = Math.floor(sec / mult), [ val, unit ]; return [ "now", "" ]; }, render = function() { var button, handler; return el = createFromHTML(TEMPLATE), document.body.appendChild(el), null != Offline.reconnect && Offline.getOption("reconnect") && (el.appendChild(createFromHTML(RETRY_TEMPLATE)), button = el.querySelector(".offline-ui-retry"), handler = function(e) { return e.preventDefault(), Offline.reconnect.tryNow(); }, null != button.addEventListener ? button.addEventListener("click", handler, !1) :button.attachEvent("click", handler)), addClass("offline-ui-" + Offline.state), content = el.querySelector(".offline-ui-content"); }, init = function() { return render(), Offline.on("up", function() { return removeClass("offline-ui-down"), addClass("offline-ui-up"), flashClass("offline-ui-up-2s", 2), flashClass("offline-ui-up-5s", 5); }), Offline.on("down", function() { return removeClass("offline-ui-up"), addClass("offline-ui-down"), flashClass("offline-ui-down-2s", 2), flashClass("offline-ui-down-5s", 5); }), Offline.on("reconnect:connecting", function() { return addClass("offline-ui-connecting"), removeClass("offline-ui-waiting"); }), Offline.on("reconnect:tick", function() { var ref, time, unit; return addClass("offline-ui-waiting"), removeClass("offline-ui-connecting"), ref = roundTime(Offline.reconnect.remaining), time = ref[0], unit = ref[1], content.setAttribute("data-retry-in-value", time), content.setAttribute("data-retry-in-unit", unit); }), Offline.on("reconnect:stopped", function() { return removeClass("offline-ui-connecting offline-ui-waiting"), content.setAttribute("data-retry-in-value", null), content.setAttribute("data-retry-in-unit", null); }), Offline.on("reconnect:failure", function() { return flashClass("offline-ui-reconnect-failed-2s", 2), flashClass("offline-ui-reconnect-failed-5s", 5); }), Offline.on("reconnect:success", function() { return flashClass("offline-ui-reconnect-succeeded-2s", 2), flashClass("offline-ui-reconnect-succeeded-5s", 5); }); }, "complete" === document.readyState ? init() :null != document.addEventListener ? document.addEventListener("DOMContentLoaded", init, !1) :(_onreadystatechange = document.onreadystatechange, document.onreadystatechange = function() { return "complete" === document.readyState && init(), "function" == typeof _onreadystatechange ? _onreadystatechange.apply(null, arguments) :void 0; }); }.call(this); ================================================ FILE: package.json ================================================ { "name": "offline-js", "version": "0.7.19", "description": "Automatically detect when a browser is offline", "authors": [ "Adam Schwartz ", "Zack Bloom " ], "repository": { "type": "git", "url": "git://github.com/HubSpot/offline.git" }, "main": "offline.js", "license": "MIT", "devDependencies": { "coffee-script": "^1.9.3", "color": "^0.9.0", "grunt": "^0.4.1", "grunt-cli": "^0.1.9", "grunt-contrib-coffee": "^0.13.0", "grunt-contrib-compass": "^1.0.3", "grunt-contrib-uglify": "^0.9.1", "grunt-contrib-watch": "^0.6.1" }, "scripts": { "build": "grunt" } } ================================================ FILE: sass/_arabic.sass ================================================ @charset "utf-8" $upComputer: "الحاسوب متصل بالإنترنت." $upDevice: "جهازك متصل بالإنترنت" $upDeviceSmall: ".جهازك متصل" $downComputer: ".الحاسوب فقد الاتصال بالإنترنت" $downDevice: ".جهازك فقد الاتصال بالإنترنت" $downDeviceSmall: ".جهازك غير متصل" $connecting: "...محاولة إعادة الاتصال" $retryButton: " إعادة الاتصال" $reconnectFailed: ".فشلت محاولة الاتصال" $retryingSecondBeforeValueSingularComputer: " الاتصال فقد إعادة الاتصال في" $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: " إعادة الاتصال في" $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " ...ثانية" $retryingSecondAfterValuePluralComputer: " ...ثواني" $retryingSecondAfterValueSingularDeviceSmall: "...ث" $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " ...دقيقة" $retryingMinuteAfterValuePluralComputer: " ...دقائق" $retryingMinuteAfterValueSingularDeviceSmall: "...د" $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " ...ساعه" $retryingHourAfterValuePluralComputer: " ...ساعات" $retryingHourAfterValueSingularDeviceSmall: "...س" $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_chinese-simplified.sass ================================================ @charset "utf-8" $upComputer: "您的电脑已经连接到网络。" $upDevice: "您的设备已经连接到网络。" $upDeviceSmall: "您的设备已经连接到网络。" $downComputer: "您的电脑失去了网络连接。" $downDevice: "您的设备失去了网络连接。" $downDeviceSmall: "您的设备失去了网络连接。" $connecting: "正在尝试重连..." $retryButton: "重连" $reconnectFailed: "尝试连接网络失败。" $retryingSecondBeforeValueSingularComputer: "失去网络连接。 即将重连:" $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "即将重连:" $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: "秒..." $retryingSecondAfterValuePluralComputer: "秒..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: "分钟..." $retryingMinuteAfterValuePluralComputer: "分钟..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: "小时..." $retryingHourAfterValuePluralComputer: "小时..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_chinese-traditional.sass ================================================ @charset "utf-8" $upComputer: "您的電腦已經連接到網絡。" $upDevice: "您的設備已經連接到網絡。" $upDeviceSmall: "您的設備已經連接到網絡。" $downComputer: "您的電腦失去了網絡連接。" $downDevice: "您的設備失去了網絡連接。" $downDeviceSmall: "您的設備失去了網絡連接。" $connecting: "正在嘗試重連..." $retryButton: "重連" $reconnectFailed: "嘗試連接網絡失敗。" $retryingSecondBeforeValueSingularComputer: "失去網絡連接。即將重連:" $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "即將重連:" $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: "秒..." $retryingSecondAfterValuePluralComputer: "秒..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: "分鐘..." $retryingMinuteAfterValuePluralComputer: "分鐘..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: "小時..." $retryingHourAfterValuePluralComputer: "小時..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_content.sass ================================================ =offline-content .offline-ui .offline-ui-retry &:before content: $retryButton &.offline-ui-up .offline-ui-content:before content: $upComputer @media (max-width: 1024px) content: $upDevice @media (max-width: 568px) content: $upDeviceSmall &.offline-ui-down .offline-ui-content:before content: $downComputer @media (max-width: 1024px) content: $downDevice @media (max-width: 568px) content: $downDeviceSmall &.offline-ui-connecting, &.offline-ui-connecting-2s .offline-ui-content:before content: $connecting &.offline-ui-waiting .offline-ui-content &[data-retry-in-unit="second"] &:before content: $retryingSecondBeforeValuePluralComputer attr(data-retry-in-value) $retryingSecondAfterValuePluralComputer @media (max-width: 568px) content: $retryingSecondBeforeValuePluralDeviceSmall attr(data-retry-in-value) $retryingSecondAfterValuePluralDeviceSmall &[data-retry-in-value="1"] &:before content: $retryingSecondBeforeValueSingularComputer attr(data-retry-in-value) $retryingSecondAfterValueSingularComputer @media (max-width: 568px) content: $retryingSecondBeforeValueSingularDeviceSmall attr(data-retry-in-value) $retryingSecondAfterValueSingularDeviceSmall &[data-retry-in-unit="minute"] &:before content: $retryingMinuteBeforeValuePluralComputer attr(data-retry-in-value) $retryingMinuteAfterValuePluralComputer @media (max-width: 568px) content: $retryingMinuteBeforeValuePluralDeviceSmall attr(data-retry-in-value) $retryingMinuteAfterValuePluralDeviceSmall &[data-retry-in-value="1"] &:before content: $retryingMinuteBeforeValueSingularComputer attr(data-retry-in-value) $retryingMinuteAfterValueSingularComputer @media (max-width: 568px) content: $retryingMinuteBeforeValueSingularDeviceSmall attr(data-retry-in-value) $retryingMinuteAfterValueSingularDeviceSmall &[data-retry-in-unit="hour"] &:before content: $retryingHourBeforeValuePluralComputer attr(data-retry-in-value) $retryingHourAfterValuePluralComputer @media (max-width: 568px) content: $retryingHourBeforeValuePluralDeviceSmall attr(data-retry-in-value) $retryingHourAfterValuePluralDeviceSmall &[data-retry-in-value="1"] &:before content: $retryingHourBeforeValueSingularComputer attr(data-retry-in-value) $retryingHourAfterValueSingularComputer @media (max-width: 568px) content: $retryingHourBeforeValueSingularDeviceSmall attr(data-retry-in-value) $retryingHourAfterValueSingularDeviceSmall &.offline-ui-reconnect-failed-2s &.offline-ui-waiting .offline-ui-retry display: none .offline-ui-content:before content: $reconnectFailed ================================================ FILE: sass/_czech.sass ================================================ @charset "utf-8" $upComputer: "Váš počítač je připojen k internetu." $upDevice: "Vaše zařízení je připojeno k internetu." $upDeviceSmall: "Vaše zařízení je připojeno." $downComputer: "Váš počítač ztratil připojení k internetu." $downDevice: "Vaše zařízení ztratilo připojení k internetu." $downDeviceSmall: "Vaše zařízení není připojeno." $connecting: "Zkouším se znovu připojit..." $retryButton: "Znovu připojit" $reconnectFailed: "Pokus o připojení selhal." $retryingSecondBeforeValueSingularComputer: "Připojení ztraceno. Znovu zkusím za " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Znovu zkusím za " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " sekundu..." $retryingSecondAfterValuePluralComputer: " sekund..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minutu..." $retryingMinuteAfterValuePluralComputer: " minut..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " hodinu..." $retryingHourAfterValuePluralComputer: " hodin..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_dutch.sass ================================================ @charset "utf-8" $upComputer: "Computer verbonden met internet." $upDevice: "Apparaat verbonden met internet." $upDeviceSmall: "Apparaat verbonden met internet." $downComputer: "Computer niet verbonden met internet." $downDevice: "Apparaat niet verbonden met internet." $downDeviceSmall: "Apparaat niet verbonden met internet." $connecting: "Opnieuw proberen..." $retryButton: "Opnieuw" $reconnectFailed: "Poging mislukt." $retryingSecondBeforeValueSingularComputer: "Internetverbinding kwijt. Opnieuw proberen over " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Opnieuw proberen over " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " seconde..." $retryingSecondAfterValuePluralComputer: " seconden..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minuut..." $retryingMinuteAfterValuePluralComputer: " minuten..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " uur..." $retryingHourAfterValuePluralComputer: " uren..." $retryingHourAfterValueSingularDeviceSmall: "u..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_english.sass ================================================ @charset "utf-8" $upComputer: "Your computer is connected to the internet." $upDevice: "Your device is connected to the internet." $upDeviceSmall: "Your device is connected." $downComputer: "Your computer lost its internet connection." $downDevice: "Your device lost its internet connection." $downDeviceSmall: "Your device isn't connected." $connecting: "Attempting to reconnect..." $retryButton: "Reconnect" $reconnectFailed: "Connection attempt failed." $retryingSecondBeforeValueSingularComputer: "Connection lost. Reconnecting in " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Reconnecting in " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " second..." $retryingSecondAfterValuePluralComputer: " seconds..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minute..." $retryingMinuteAfterValuePluralComputer: " minutes..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " hour..." $retryingHourAfterValuePluralComputer: " hours..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_french.sass ================================================ @charset "utf-8" $upComputer: "Votre ordinateur est connecté à Internet." $upDevice: "Votre appareil est connecté à Internet." $upDeviceSmall: "Votre appareil est connecté." $downComputer: "Votre ordinateur a perdu sa connexion Internet." $downDevice: "Votre appareil a perdu sa connexion Internet." $downDeviceSmall: "Votre appareil n'est pas branché." $connecting: "Tentative de reconnexion..." $retryButton: "Reconnecter" $reconnectFailed: "La tentative de connexion a échoué." $retryingSecondBeforeValueSingularComputer: "Connexion perdue. Reconnexion dans " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Reconnexion dans " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " seconde..." $retryingSecondAfterValuePluralComputer: " secondes..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minute..." $retryingMinuteAfterValuePluralComputer: " minutes..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " heure..." $retryingHourAfterValuePluralComputer: " heures..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_german.sass ================================================ @charset "utf-8" $upComputer: "Dein Computer ist mit dem Internet verbunden." $upDevice: "Deing Gerät ist mit dem Internet verbunden." $upDeviceSmall: "Dein Gerät ist online." $downComputer: "Dein Computer wurde vom Internet getrennt." $downDevice: "Dein Gerät wurde vom Internet getrennt." $downDeviceSmall: "Keine Internetverbindung." $connecting: "Versuche Verbindung wiederherzustellen..." $retryButton: "Verbinden" $reconnectFailed: "Verbindung Fehlgeschlagen." $retryingSecondBeforeValueSingularComputer: "Keine Verbindung. Verbinde nochmal in " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Verbinde in " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " Sekunde..." $retryingSecondAfterValuePluralComputer: " Sekunden..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " Minute..." $retryingMinuteAfterValuePluralComputer: " Minuten..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " Stunde..." $retryingHourAfterValuePluralComputer: " Stunden..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_italian.sass ================================================ @charset "utf-8" $upComputer: "Il tuo computer è connesso ad internet." $upDevice: "Il tuo device è connesso ad internet." $upDeviceSmall: "Il tuo device è connesso." $downComputer: "Il tuo computer si è disconnesso da internet." $downDevice: "Il tuo device si è disconnesso da internet." $downDeviceSmall: "Il tuo device si è disconnesso." $connecting: "Connessione in corso..." $retryButton: "Riconnetti" $reconnectFailed: "Tentativo di connessione fallito." $retryingSecondBeforeValueSingularComputer: "Connessione persa. Riconnessione tra " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Riconnessione tra " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " secondo..." $retryingSecondAfterValuePluralComputer: " secondi..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minuto..." $retryingMinuteAfterValuePluralComputer: " minuti..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " ora..." $retryingHourAfterValuePluralComputer: " ore..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_keyframes.sass ================================================ @import compass/css3 @import mixins =keyframes-offline-fadein +offline-keyframes("offline-fadein") 0% opacity: 0 100% opacity: 1 =keyframes-offline-fadeout +offline-keyframes("offline-fadeout") 0% opacity: 1 100% opacity: 0 =keyframes-offline-fadeout-and-hide +offline-keyframes("offline-fadeout-and-hide") 0% opacity: 1 display: block 99% opacity: 0 display: block 100% opacity: 0 display: none =keyframes-offline-dropin +offline-keyframes("offline-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% +offline-transform(translateY(0)) opacity: 0 1% +offline-transform(translateY(-800px)) opacity: 0 // Real animation begins here 2% +offline-transform(translateY(-800px)) opacity: 1 100% +offline-transform(translateY(0)) opacity: 1 =keyframes-offline-dropout +offline-keyframes("offline-dropout") 0% +offline-transform(translateY(0)) 100% +offline-transform(translateY(-800px)) =keyframes-offline-rotation +offline-keyframes("offline-rotation") 0% +offline-transform(rotate(0deg)) 100% +offline-transform(rotate(359deg)) ================================================ FILE: sass/_mixins.sass ================================================ =offline-keyframes($name) @-webkit-keyframes #{$name} @content @-moz-keyframes #{$name} @content @-ms-keyframes #{$name} @content @-o-keyframes #{$name} @content @keyframes #{$name} @content =offline-animation($animation) -webkit-animation: $animation -moz-animation: $animation -ms-animation: $animation -o-animation: $animation animation: $animation -webkit-backface-visibility: hidden =offline-transform($transform) transform: $transform -webkit-transform: $transform -moz-transform: $transform -ms-transform: $transform -o-transform: $transform =offline-preserve-3d -webkit-transform-style: preserve-3d -moz-transform-style: preserve-3d transform-style: preserve-3d ================================================ FILE: sass/_offline-theme-base-indicator.sass ================================================ @import compass/css3 .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after +box-sizing(border-box) .offline-ui display: none position: fixed background: #fff z-index: 2000 display: inline-block .offline-ui-retry display: none &.offline-ui-up display: block &.offline-ui-down display: block ================================================ FILE: sass/_offline-theme-base.sass ================================================ @import compass/css3 @import compass/css3/user-interface .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after +box-sizing(border-box) .offline-ui display: none position: fixed background: #fff z-index: 2000 margin: auto top: 0 left: 0 right: 0 .offline-ui-content:before display: inline .offline-ui-retry +user-select(none) display: none &:before display: inline &.offline-ui-up &.offline-ui-up-5s display: block &.offline-ui-down display: block &.offline-ui-waiting .offline-ui-retry display: block &.offline-ui-reconnect-failed-2s &.offline-ui-waiting .offline-ui-retry display: none ================================================ FILE: sass/_pashto.sass ================================================ @charset "utf-8" $upComputer: "ستاسو د کمپيوټر له انټرنيټ سره وصل دی." $upDevice: "ستاسو وسيله چې د انټرنټ سره نښلي." $upDeviceSmall: "ستاسو آله سره نښلي." $downComputer: "ستاسو د کمپيوټر د خپل د انټرنېټ پیوستون له لاسه ورکړ." $downDevice: "ستاسو آله خپل د انټرنېټ پیوستون له لاسه ورکړ." $downDeviceSmall: "ستاسو آله نه نښلي." $connecting: "هڅه کوي تر څو یو ځل بیا سره نښلوي" $retryButton: "بيا ونښلوي" $reconnectFailed: "پیوستون هڅه ناکامه شوه." $retryingSecondBeforeValueSingularComputer: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "بيا په سره نښلوي" $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: "دوهم..." $retryingSecondAfterValuePluralComputer: "ثانيو ..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: "دقیقه ..." $retryingMinuteAfterValuePluralComputer: "دقیقو ..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: "ساعت ..." $retryingHourAfterValuePluralComputer: "ساعتونو کې ..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_persian.sass ================================================ @charset "utf-8" $upComputer: "ارتباط کامپیوتر شما با اینترنت برقرار است." $upDevice: "ارتباط دستگاه شما با اینترنت برقرار است." $upDeviceSmall: "دستگاه شما متصل است." $downComputer: "ازتباط کامپیوتر شما با اینترنت قطع شده است." $downDevice: "ارتباط دستگاه شما با اینترنت قطع شده است." $downDeviceSmall: "دستگاه شما متصل نیست." $connecting: "تلاش برای اتصال مجدد..." $retryButton: "اتصال مجدد" $reconnectFailed: "تلاش برای اتصال مجدد بی نتیجه بود." $retryingSecondBeforeValueSingularComputer: "اتصال قطع شد. اتصال مجدد در " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "اتصال مجدد در " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " ثانیه..." $retryingSecondAfterValuePluralComputer: " ثانیه..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " دقیقه..." $retryingMinuteAfterValuePluralComputer: " دقیقه..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " ساعت..." $retryingHourAfterValuePluralComputer: " ساعت..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_polish.sass ================================================ @charset "utf-8" $upComputer: "Twój komputer jest podłączony do internetu." $upDevice: "Twoje urządzenie jest podłączone do internetu." $upDeviceSmall: "Twoje urządzenie jest podłączone." $downComputer: "Twój komputer stracił połączenie z internetem." $downDevice: "Twoje urządzenie straciło połączenie z internetem." $downDeviceSmall: "Twoje urządzenie nie jest podłączone." $connecting: "Próbuję połączyć..." $retryButton: "Połącz teraz" $reconnectFailed: "Nieudana próba podłączenia." $retryingSecondBeforeValueSingularComputer: "Połączenie utracone. Ponawiam za " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Ponawiam za " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " sekundę..." $retryingSecondAfterValuePluralComputer: " sekund..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minutę..." $retryingMinuteAfterValuePluralComputer: " minut..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " godzinę..." $retryingHourAfterValuePluralComputer: " godzin..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_portuguese-brazil.sass ================================================ @charset "utf-8" $upComputer: "Seu computador está conectado à internet." $upDevice: "O dispositivo está conectado à internet." $upDeviceSmall: "O dispositivo está conectado." $downComputer: "O computador perdeu sua conexão com a internet." $downDevice: "O dispositivo perdeu sua conexão com a internet." $downDeviceSmall: "Seu dispositivo não está conectado." $connecting: "Tentando reconectar..." $retryButton: "Reconectar" $reconnectFailed: "Tentativa de conexão falhou." $retryingSecondBeforeValueSingularComputer: "Conexão perdida. Reconectando em " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Reconectando em " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " segundo..." $retryingSecondAfterValuePluralComputer: " segundos..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minuto..." $retryingMinuteAfterValuePluralComputer: " minutos..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " hora..." $retryingHourAfterValuePluralComputer: " horas..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_spanish.sass ================================================ @charset "utf-8" $upComputer: "Tu computador está conectado a internet." $upDevice: "Tu dispositivo está conectado a internet." $upDeviceSmall: "Tu dispositivo está conectado." $downComputer: "Tu computador perdió su conexión a internet." $downDevice: "Tu dispositivo perdió su conexión a internet." $downDeviceSmall: "Tu dispositivo no está conectado." $connecting: "Intentando reconectar..." $retryButton: "Reconectar" $reconnectFailed: "Intento fallido." $retryingSecondBeforeValueSingularComputer: "Conexión perdida. Reconectando en " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: "Reconectando en " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " segundo..." $retryingSecondAfterValuePluralComputer: " segundos..." $retryingSecondAfterValueSingularDeviceSmall: "s..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " minuto..." $retryingMinuteAfterValuePluralComputer: " minutos..." $retryingMinuteAfterValueSingularDeviceSmall: "m..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " hora..." $retryingHourAfterValuePluralComputer: " horas..." $retryingHourAfterValueSingularDeviceSmall: "h..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/_turkish.sass ================================================ @charset "utf-8" $upComputer: "Bilgisayarınız internete bağlı." $upDevice: "Cihazınız internete bağlı." $upDeviceSmall: "Cihazınız bağlı." $downComputer: "Bilgisayarınız internet bağlantısı kesildi." $downDevice: "Cihazınızın internet bağlantısı kesildi." $downDeviceSmall: "Cihazınız internete bağlı değil." $connecting: "Yeniden bağlanmaya çalışıyor..." $retryButton: "Yeniden bağlan" $reconnectFailed: "Bağlantı denemesi başarısız oldu." $retryingSecondBeforeValueSingularComputer: "Bağlantı kesildi. " $retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer $retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer $retryingSecondBeforeValueSingularDeviceSmall: " " $retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall $retryingSecondAfterValueSingularComputer: " saniye içinde tekrar bağlanmayı deneyecek..." $retryingSecondAfterValuePluralComputer: " saniye içinde tekrar bağlanmayı deneyecek..." $retryingSecondAfterValueSingularDeviceSmall: "saniye içinde tekrar bağlanmayı deneyecek..." $retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall $retryingMinuteAfterValueSingularComputer: " dakika içersinde tekrar bağlanmayı deneyecek..." $retryingMinuteAfterValuePluralComputer: " dakika içersinde tekrar bağlanmayı deneyecek..." $retryingMinuteAfterValueSingularDeviceSmall: "dakika içersinde tekrar bağlanmayı deneyecek..." $retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall $retryingHourAfterValueSingularComputer: " saat içersinde tekrar bağlanmayı deneyecek..." $retryingHourAfterValuePluralComputer: " saat içersinde tekrar bağlanmayı deneyecek..." $retryingHourAfterValueSingularDeviceSmall: "saat içersinde tekrar bağlanmayı deneyecek..." $retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall ================================================ FILE: sass/offline-language-arabic-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "متصل." &.offline-ui-down .offline-ui-content:before content: "غير متصل." ================================================ FILE: sass/offline-language-arabic.sass ================================================ @import content @import arabic +offline-content ================================================ FILE: sass/offline-language-chinese-simplified-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "在线" &.offline-ui-down .offline-ui-content:before content: "离线" ================================================ FILE: sass/offline-language-chinese-simplified.sass ================================================ @import content @import chinese-simplified +offline-content ================================================ FILE: sass/offline-language-chinese-traditional-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "在線" &.offline-ui-down .offline-ui-content:before content: "離線" ================================================ FILE: sass/offline-language-chinese-traditional.sass ================================================ @import content @import chinese-traditional +offline-content ================================================ FILE: sass/offline-language-czech-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Online" &.offline-ui-down .offline-ui-content:before content: "Offline" ================================================ FILE: sass/offline-language-czech.sass ================================================ @import content @import czech +offline-content ================================================ FILE: sass/offline-language-dutch-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Online" &.offline-ui-down .offline-ui-content:before content: "Offline" ================================================ FILE: sass/offline-language-dutch.sass ================================================ @import content @import dutch +offline-content ================================================ FILE: sass/offline-language-english-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Online" &.offline-ui-down .offline-ui-content:before content: "Offline" ================================================ FILE: sass/offline-language-english.sass ================================================ @import content @import english +offline-content ================================================ FILE: sass/offline-language-french-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Connecté" &.offline-ui-down .offline-ui-content:before content: "Pas connecté" ================================================ FILE: sass/offline-language-french.sass ================================================ @import content @import french +offline-content ================================================ FILE: sass/offline-language-german-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Online" &.offline-ui-down .offline-ui-content:before content: "Offline" ================================================ FILE: sass/offline-language-german.sass ================================================ @import content @import german +offline-content ================================================ FILE: sass/offline-language-italian-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Online" &.offline-ui-down .offline-ui-content:before content: "Offline" ================================================ FILE: sass/offline-language-italian.sass ================================================ @import content @import italian +offline-content ================================================ FILE: sass/offline-language-pashto-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Online" &.offline-ui-down .offline-ui-content:before content: "Offline" ================================================ FILE: sass/offline-language-pashto.sass ================================================ @import content @import pashto +offline-content ================================================ FILE: sass/offline-language-polish-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Połączony" &.offline-ui-down .offline-ui-content:before content: "Rozłączony" ================================================ FILE: sass/offline-language-polish.sass ================================================ @import content @import polish +offline-content ================================================ FILE: sass/offline-language-portuguese-brazil-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Conectado" &.offline-ui-down .offline-ui-content:before content: "Desconectado" ================================================ FILE: sass/offline-language-portuguese-brazil.sass ================================================ @import content @import portuguese-brazil +offline-content ================================================ FILE: sass/offline-language-simplified-chinese-indicator.sass ================================================ @charset "utf-8" .offline-ui &.offline-ui-up .offline-ui-content:before content: "在线" &.offline-ui-down .offline-ui-content:before content: "离线" ================================================ FILE: sass/offline-language-spanish-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "En línea" &.offline-ui-down .offline-ui-content:before content: "Fuera de línea" ================================================ FILE: sass/offline-language-spanish.sass ================================================ @import content @import spanish +offline-content ================================================ FILE: sass/offline-language-turkish-indicator.sass ================================================ .offline-ui &.offline-ui-up .offline-ui-content:before content: "Çevrimiçi" &.offline-ui-down .offline-ui-content:before content: "Çevrimdışı" ================================================ FILE: sass/offline-language-turkish.sass ================================================ @import content @import turkish +offline-content ================================================ FILE: sass/offline-theme-chrome-indicator.sass ================================================ @import compass/css3 @import offline-theme-base-indicator $green: #80d580 $red: #ec8787 .offline-ui +box-shadow(0 0 0 1px rgba(0, 0, 0, .15)) +border-radius(4px 4px 0 0) font-family: "Lucida Grande", sans-serif font-size: 12px padding: 7px background: #f6f6f6 color: #888 bottom: 0 left: 20px .offline-ui-content padding-left: 16px &:after +border-radius(50%) content: " " display: block position: absolute top: 0 bottom: 1px left: 8px margin: auto height: 9px width: 9px &.offline-ui-up .offline-ui-content:after background: $green &.offline-ui-down .offline-ui-content:after background: $red ================================================ FILE: sass/offline-theme-chrome.sass ================================================ @import compass/css3 @import mixins @import keyframes @import offline-theme-base $green: #80d580 $red: #ec8787 +keyframes-offline-dropin +keyframes-offline-dropout +keyframes-offline-rotation .offline-ui +box-shadow(0 0 0 1px rgba(0, 0, 0, .15), 0 0 1em rgba(0, 0, 0, .3)) font-family: "Lucida Grande", sans-serif font-size: 14px padding: 1em width: 38em max-width: 100% background: #f6f6f6 color: #444 overflow: hidden .offline-ui-content padding-left: 2em &:before line-height: 1.25em &:after +border-radius(50%) content: " " display: block position: absolute top: 0 bottom: 0 left: 1em margin: auto height: 1em width: 1em .offline-ui-retry +box-shadow(0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75)) +border-radius(2px) +background-image(linear-gradient(#ededed, #ededed 38%, #dedede)) position: absolute right: 4em top: 1em bottom: 1em border: 1px solid rgba(0, 0, 0, 0.25) text-shadow: 0 1px 0 #f0f0f0 padding: 0 1em line-height: 1.6em height: 1.7em margin: auto font-size: 12px text-decoration: none color: inherit &.offline-ui-up +offline-animation(offline-dropout forwards .5s 2s) .offline-ui-content:after background: $green &.offline-ui-down +offline-animation(offline-dropin .5s) .offline-ui-content:after background: $red &.offline-ui-connecting, &.offline-ui-waiting padding-right: 3em .offline-ui-content:after background: $red &:after +offline-animation(offline-rotation .7s linear infinite) +border-radius(50%) content: " " display: block position: absolute right: 1em top: 0 bottom: 0 margin: auto height: 1em width: 1em border: 2px solid rgba(0, 0, 0, 0) border-top-color: rgba(0, 0, 0, .5) border-left-color: rgba(0, 0, 0, .5) opacity: 0.7 &.offline-ui-waiting padding-right: 11em &.offline-ui-reconnect-failed-2s padding-right: 0 ================================================ FILE: sass/offline-theme-dark-indicator.sass ================================================ @import compass/css3 @import offline-theme-base-indicator $green: #80d580 $red: #e24949 .offline-ui +box-shadow(0 0 0 1px rgba(0, 0, 0, .15)) +border-radius(4px 4px 0 0) font-family: "Helvetica Neue", sans-serif font-weight: 300 padding: 1em background: #000 color: #ccc bottom: 0 left: 20px .offline-ui-content padding-left: 1.5em &:after +border-radius(50%) content: " " display: block position: absolute top: 0 bottom: 0 left: 1em margin: auto height: .8em width: .8em &.offline-ui-up .offline-ui-content:after background: $green &.offline-ui-down .offline-ui-content:after background: $red ================================================ FILE: sass/offline-theme-dark.sass ================================================ @import compass/css3 @import mixins @import keyframes @import offline-theme-base $green: #80d580 $red: #e24949 +keyframes-offline-dropin +keyframes-offline-dropout +keyframes-offline-rotation .offline-ui +border-radius(0 0 4px 4px) font-family: "Helvetica Neue", sans-serif font-weight: 300 padding: 1em width: 38em max-width: 100% background: #000 color: #ccc overflow: hidden @media (max-width: 38em) +border-radius(0) .offline-ui-content padding-left: 2em &:before line-height: 1.25em &:after +border-radius(50%) content: " " display: block position: absolute top: 0 bottom: 0 left: 1em margin: auto height: 1em width: 1em .offline-ui-retry position: absolute right: 3em top: 0 bottom: 0 background: rgba(255, 255, 255, .2) text-decoration: none color: inherit line-height: 3.5em height: 3.5em margin: auto padding: 0 1em &.offline-ui-up +offline-animation(offline-dropout forwards .5s 2s) .offline-ui-content:after background: $green &.offline-ui-down +offline-animation(offline-dropin .5s) .offline-ui-content:after background: $red &.offline-ui-connecting, &.offline-ui-waiting padding-right: 3em .offline-ui-content:after background: $red &:after +offline-animation(offline-rotation .7s linear infinite) +border-radius(50%) content: " " display: block position: absolute right: 1em top: 0 bottom: 0 margin: auto height: 1em width: 1em border: 2px solid transparent border-top-color: rgba(255, 255, 255, .5) border-left-color: rgba(255, 255, 255, .5) opacity: 0.7 &.offline-ui-waiting padding-right: 11em &.offline-ui-reconnect-failed-2s padding-right: 0 ================================================ FILE: sass/offline-theme-default-indicator.sass ================================================ @import compass/css3 @import offline-theme-base-indicator $red: #ec8787 $green: #d6e9c6 $darkRed: #551313 $darkGreen: #468847 .offline-ui +border-radius(4px) font-family: "Helvetica Neue", sans-serif padding: 1em max-width: 100% bottom: 1em left: 1em &.offline-ui-up background: $green color: $darkGreen &.offline-ui-down background: $red color: $darkRed ================================================ FILE: sass/offline-theme-default.sass ================================================ @import compass/css3 @import mixins @import keyframes @import offline-theme-base $red: #ec8787 $green: #d6e9c6 $yellow: #f8ecad $darkRed: #551313 $darkGreen: #468847 $darkYellow: #7c6d1f +keyframes-offline-fadein +keyframes-offline-fadeout-and-hide +keyframes-offline-rotation .offline-ui +border-radius(4px) font-family: "Helvetica Neue", sans-serif padding: 1em top: 1em width: 38em max-width: 100% overflow: hidden @media (max-width: 38em) +border-radius(0) top: 0 .offline-ui-content:before line-height: 1.25em .offline-ui-retry position: absolute right: 3em top: 0 bottom: 0 background: rgba(0, 0, 0, .1) text-decoration: none color: inherit line-height: 3.5em height: 3.5em margin: auto padding: 0 1em &.offline-ui-up +offline-animation(offline-fadeout-and-hide forwards .5s 2s) background: $green color: $darkGreen &.offline-ui-down +offline-animation(offline-fadein .5s) background: $red color: $darkRed &.offline-ui-connecting, &.offline-ui-waiting background: $yellow color: $darkYellow padding-right: 3em &:after +offline-animation(offline-rotation .7s linear infinite) +border-radius(50%) content: " " display: block position: absolute right: 1em top: 0 bottom: 0 margin: auto height: 1em width: 1em border: 2px solid rgba(0, 0, 0, 0) border-top-color: $darkYellow border-left-color: $darkYellow opacity: 0.7 &.offline-ui-waiting padding-right: 11em &.offline-ui-reconnect-failed-2s padding-right: 0 ================================================ FILE: sass/offline-theme-hubspot.sass ================================================ @import compass/css3 @import offline-theme-default .offline-ui +border-radius(0 0 4px 4px) +box-shadow(inset 0 0 0 1px rgba(0, 0, 0, .15), 0 2px 8px rgba(0, 0, 0, .1)) font-family: "Helvetica Neue", Helvetica, sans-serif, sans-serif font-size: 13px top: 42px ================================================ FILE: sass/offline-theme-slide-indicator.sass ================================================ @import compass/css3 @import offline-theme-base-indicator $red: #ec8787 $green: #d6e9c6 $darkRed: #551313 $darkGreen: #468847 .offline-ui +border-radius(4px 4px 0 0) font-family: "Helvetica Neue", sans-serif padding: 1em max-width: 100% bottom: 0 left: 1em &.offline-ui-up background: $green color: $darkGreen &.offline-ui-down background: $red color: $darkRed ================================================ FILE: sass/offline-theme-slide.sass ================================================ @import compass/css3 @import mixins @import keyframes @import offline-theme-base $red: #ec8787 $green: #d6e9c6 $yellow: #f8ecad $darkRed: #551313 $darkGreen: #468847 $darkYellow: #7c6d1f +keyframes-offline-dropin +keyframes-offline-dropout +keyframes-offline-rotation .offline-ui +border-radius(0 0 4px 4px) font-family: "Helvetica Neue", sans-serif padding: 1em width: 38em max-width: 100% overflow: hidden @media (max-width: 38em) +border-radius(0) .offline-ui-retry position: absolute right: 3em top: 0 bottom: 0 background: rgba(0, 0, 0, .1) text-decoration: none color: inherit line-height: 3.5em height: 3.5em margin: auto padding: 0 1em &.offline-ui-up +offline-animation(offline-dropout forwards .5s 2s) background: $green color: $darkGreen &.offline-ui-down +offline-animation(offline-dropin .5s) background: $red color: $darkRed &.offline-ui-connecting, &.offline-ui-waiting background: $yellow color: $darkYellow padding-right: 3em &:after +offline-animation(offline-rotation .7s linear infinite) +border-radius(50%) content: " " display: block position: absolute right: 1em top: 0 bottom: 0 margin: auto height: 1em width: 1em border: 2px solid rgba(0, 0, 0, 0) border-top-color: $darkYellow border-left-color: $darkYellow opacity: 0.7 &.offline-ui-waiting padding-right: 11em &.offline-ui-reconnect-failed-2s padding-right: 0 ================================================ FILE: test/index.html ================================================ ================================================ FILE: test/snake.html ================================================

Disable your internet connection to play!

================================================ FILE: themes/offline-language-arabic-indicator.css ================================================ @charset "UTF-8"; /* line 5, ../sass/offline-language-arabic-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "متصل."; } /* line 10, ../sass/offline-language-arabic-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "غير متصل."; } ================================================ FILE: themes/offline-language-arabic.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: " إعادة الاتصال"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "الحاسوب متصل بالإنترنت."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "جهازك متصل بالإنترنت"; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: ".جهازك متصل"; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: ".الحاسوب فقد الاتصال بالإنترنت"; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: ".جهازك فقد الاتصال بالإنترنت"; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: ".جهازك غير متصل"; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "...محاولة إعادة الاتصال"; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ثواني"; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: " إعادة الاتصال في" attr(data-retry-in-value) "...ث"; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ثانية"; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: " إعادة الاتصال في" attr(data-retry-in-value) "...ث"; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...دقائق"; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: " إعادة الاتصال في" attr(data-retry-in-value) "...د"; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...دقيقة"; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: " إعادة الاتصال في" attr(data-retry-in-value) "...د"; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ساعات"; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: " إعادة الاتصال في" attr(data-retry-in-value) "...س"; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ساعه"; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: " إعادة الاتصال في" attr(data-retry-in-value) "...س"; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: ".فشلت محاولة الاتصال"; } ================================================ FILE: themes/offline-language-chinese-simplified-indicator.css ================================================ @charset "UTF-8"; /* line 5, ../sass/offline-language-chinese-simplified-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "鍦ㄧ嚎"; } /* line 10, ../sass/offline-language-chinese-simplified-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "绂荤嚎"; } ================================================ FILE: themes/offline-language-chinese-simplified.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "重连"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "您的电脑已经连接到网络。"; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "您的设备已经连接到网络。"; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "您的设备已经连接到网络。"; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "您的电脑失去了网络连接。"; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "您的设备失去了网络连接。"; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "您的设备失去了网络连接。"; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "正在尝试重连..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "秒..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "即将重连:" attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "秒..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "即将重连:" attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "分钟..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "即将重连:" attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "分钟..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "即将重连:" attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "小时..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "即将重连:" attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "小时..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "即将重连:" attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "尝试连接网络失败。"; } ================================================ FILE: themes/offline-language-chinese-traditional-indicator.css ================================================ @charset "UTF-8"; /* line 5, ../sass/offline-language-chinese-traditional-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "鍦ㄧ窔"; } /* line 10, ../sass/offline-language-chinese-traditional-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "闆㈢窔"; } ================================================ FILE: themes/offline-language-chinese-traditional.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "重連"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "您的電腦已經連接到網絡。"; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "您的設備已經連接到網絡。"; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "您的設備已經連接到網絡。"; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "您的電腦失去了網絡連接。"; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "您的設備失去了網絡連接。"; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "您的設備失去了網絡連接。"; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "正在嘗試重連..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "秒..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "即將重連:" attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "秒..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "即將重連:" attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "分鐘..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "即將重連:" attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "分鐘..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "即將重連:" attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "小時..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "即將重連:" attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "小時..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "即將重連:" attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "嘗試連接網絡失敗。"; } ================================================ FILE: themes/offline-language-czech-indicator.css ================================================ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Online"; } .offline-ui.offline-ui-down .offline-ui-content:before { content: "Offline"; } ================================================ FILE: themes/offline-language-czech.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Znovu připojit"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Váš počítač je připojen k internetu."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Vaše zařízení je připojeno k internetu."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Vaše zařízení je připojeno."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Váš počítač ztratil připojení k internetu."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Vaše zařízení ztratilo připojení k internetu."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Vaše zařízení není připojeno."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Zkouším se znovu připojit..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " sekund..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Znovu zkusím za " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " sekundu..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Znovu zkusím za " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " minut..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Znovu zkusím za " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " minutu..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Znovu zkusím za " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " hodin..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Znovu zkusím za " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " hodinu..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Znovu zkusím za " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Pokus o připojení selhal."; } ================================================ FILE: themes/offline-language-dutch-indicator.css ================================================ /* line 5, ../sass/offline-language-dutch-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Online"; } /* line 10, ../sass/offline-language-dutch-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Offline"; } ================================================ FILE: themes/offline-language-dutch.css ================================================ /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Opnieuw"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Computer verbonden met internet."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Apparaat verbonden met internet."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Apparaat verbonden met internet."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Computer niet verbonden met internet."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Apparaat niet verbonden met internet."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Apparaat niet verbonden met internet."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Opnieuw proberen..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " seconden..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Opnieuw proberen over " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " seconde..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Opnieuw proberen over " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " minuten..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Opnieuw proberen over " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " minuut..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Opnieuw proberen over " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " uren..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Opnieuw proberen over " attr(data-retry-in-value) "u..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " uur..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Opnieuw proberen over " attr(data-retry-in-value) "u..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Poging mislukt."; } ================================================ FILE: themes/offline-language-english-indicator.css ================================================ /* line 5, ../sass/offline-language-english-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Online"; } /* line 10, ../sass/offline-language-english-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Offline"; } ================================================ FILE: themes/offline-language-english.css ================================================ /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Reconnect"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Your computer is connected to the internet."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Your device is connected to the internet."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Your device is connected."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Your computer lost its internet connection."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Your device lost its internet connection."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Your device isn't connected."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Attempting to reconnect..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " seconds..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Reconnecting in " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " second..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Reconnecting in " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " minutes..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Reconnecting in " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " minute..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Reconnecting in " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " hours..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Reconnecting in " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " hour..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Reconnecting in " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Connection attempt failed."; } ================================================ FILE: themes/offline-language-french-indicator.css ================================================ @charset "UTF-8"; /* line 5, ../sass/offline-language-french-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Connecté"; } /* line 10, ../sass/offline-language-french-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Pas connecté"; } ================================================ FILE: themes/offline-language-french.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Reconnecter"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Votre ordinateur est connecté à Internet."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Votre appareil est connecté à Internet."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Votre appareil est connecté."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Votre ordinateur a perdu sa connexion Internet."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Votre appareil a perdu sa connexion Internet."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Votre appareil n'est pas branché."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Tentative de reconnexion..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " secondes..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Reconnexion dans " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " seconde..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Reconnexion dans " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " minutes..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Reconnexion dans " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " minute..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Reconnexion dans " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " heures..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Reconnexion dans " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " heure..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Reconnexion dans " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "La tentative de connexion a échoué."; } ================================================ FILE: themes/offline-language-german-indicator.css ================================================ /* line 5, ../sass/offline-language-german-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Online"; } /* line 10, ../sass/offline-language-german-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Offline"; } ================================================ FILE: themes/offline-language-german.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Verbinden"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Dein Computer ist mit dem Internet verbunden."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Deing Gerät ist mit dem Internet verbunden."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Dein Gerät ist online."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Dein Computer wurde vom Internet getrennt."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Dein Gerät wurde vom Internet getrennt."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Keine Internetverbindung."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Versuche Verbindung wiederherzustellen..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Sekunden..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Verbinde in " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Sekunde..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Verbinde in " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Minuten..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Verbinde in " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Minute..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Verbinde in " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Stunden..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Verbinde in " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Stunde..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Verbinde in " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Verbindung Fehlgeschlagen."; } ================================================ FILE: themes/offline-language-hebrew-indicator.css ================================================ /* line 5, ../sass/offline-language-english-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "מחובר"; } /* line 10, ../sass/offline-language-english-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "מנותק"; } ================================================ FILE: themes/offline-language-hebrew.css ================================================ /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "מתחבר"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "המחשב לא מחובר לאינטרנט."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "המכשיר לא מחובר לאינטרנט."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "המכשיר מחובר."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "המחשב איבד את החיבור לאינטרנט."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "המכשיר איבד את החיבור לאינטרנט."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "המכשיר מחובר."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "מנסה להתחבר..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "החיבור אבד. מתחבר בעוד " attr(data-retry-in-value) " שניות..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "מתחבר בעוד " attr(data-retry-in-value) " ש..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "החיבור אבד. מתחבר בעוד " attr(data-retry-in-value) " שניות..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "מתחבר בעוד " attr(data-retry-in-value) " ש..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "חיבור אבד. מתחבר בעוד " attr(data-retry-in-value) " דקות..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "מתחבר בעוד " attr(data-retry-in-value) " ד..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "חיבור אבד. מתחבר בעוד " attr(data-retry-in-value) " דקה..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "מתחבר בעוד " attr(data-retry-in-value) " ד..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "חיבור אבד. מתחבר בעוד " attr(data-retry-in-value) " שעות..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "מתחבר בעוד " attr(data-retry-in-value) " שע..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "חיבור אבד. מתחבר בעוד " attr(data-retry-in-value) " שעה..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "מתחבר בעוד " attr(data-retry-in-value) " שע..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "חיבור מחדש נכשל."; } ================================================ FILE: themes/offline-language-italian-indicator.css ================================================ /* line 5, ../sass/offline-language-italian-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Online"; } /* line 10, ../sass/offline-language-italian-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Offline"; } ================================================ FILE: themes/offline-language-italian.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Riconnetti"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Il tuo computer è connesso ad internet."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Il tuo device è connesso ad internet."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Il tuo device è connesso."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Il tuo computer si è disconnesso da internet."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Il tuo device si è disconnesso da internet."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Il tuo device si è disconnesso."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Connessione in corso..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Connessione persa. Riconnessione tra " attr(data-retry-in-value) " secondi..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Riconnessione tra " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Connessione persa. Riconnessione tra " attr(data-retry-in-value) " secondo..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Riconnessione tra " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Connessione persa. Riconnessione tra " attr(data-retry-in-value) " minuti..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Riconnessione tra " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Connessione persa. Riconnessione tra " attr(data-retry-in-value) " minuto..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Riconnessione tra " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Connessione persa. Riconnessione tra " attr(data-retry-in-value) " ore..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Riconnessione tra " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Connessione persa. Riconnessione tra " attr(data-retry-in-value) " ora..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Riconnessione tra " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Tentativo di connessione fallito."; } ================================================ FILE: themes/offline-language-pashto-indicator.css ================================================ /* line 5, ../sass/offline-language-pashto-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Online"; } /* line 10, ../sass/offline-language-pashto-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Offline"; } ================================================ FILE: themes/offline-language-pashto.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "بيا ونښلوي"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "ستاسو د کمپيوټر له انټرنيټ سره وصل دی."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "ستاسو وسيله چې د انټرنټ سره نښلي."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "ستاسو آله سره نښلي."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "ستاسو د کمپيوټر د خپل د انټرنېټ پیوستون له لاسه ورکړ."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "ستاسو آله خپل د انټرنېټ پیوستون له لاسه ورکړ."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "ستاسو آله نه نښلي."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "هڅه کوي تر څو یو ځل بیا سره نښلوي"; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" attr(data-retry-in-value) "ثانيو ..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "بيا په سره نښلوي" attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" attr(data-retry-in-value) "دوهم..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "بيا په سره نښلوي" attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" attr(data-retry-in-value) "دقیقو ..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "بيا په سره نښلوي" attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" attr(data-retry-in-value) "دقیقه ..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "بيا په سره نښلوي" attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" attr(data-retry-in-value) "ساعتونو کې ..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "بيا په سره نښلوي" attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "پیوستون له لاسه ورکړ. بيا په سره نښلوي" attr(data-retry-in-value) "ساعت ..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "بيا په سره نښلوي" attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "پیوستون هڅه ناکامه شوه."; } ================================================ FILE: themes/offline-language-persian-indicator.css ================================================ * line 5, ../sass/offline-language-english-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "آنلاین"; } /* line 10, ../sass/offline-language-english-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "آفلاین"; } ================================================ FILE: themes/offline-language-persian.css ================================================ /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "اتصال مجدد"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "ارتباط کامپیوتر شما با اینترنت برقرار است."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "ارتباط دستگاه شما با اینترنت برقرار است."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "دستگاه شما متصل است."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "ارتباط کامپیوتر شما با اینترنت قطع شده است."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "ارتباط دستگاه شما با اینترنت قطع شده است."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "دستگاه شما متصل نیست."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "تلاش برای اتصال مجدد..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "اتصال قطع شد. اتصال مجدد در " attr(data-retry-in-value) " ثانیه..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "اتصال مجدد در " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "اتصال قطع شد. اتصال مجدد در " attr(data-retry-in-value) " ثانیه..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "اتصال مجدد در " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "اتصال قطع شد. اتصال مجدد در " attr(data-retry-in-value) " دقیقه..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "اتصال مجدد در " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "اتصال قطع شد. اتصال مجدد در " attr(data-retry-in-value) " دقیقه..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "اتصال مجدد در " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "اتصال قطع شد. اتصال مجدد در " attr(data-retry-in-value) " ساعت..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "اتصال مجدد در " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "اتصال قطع شد. اتصال مجدد در " attr(data-retry-in-value) " ساعت..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "اتصال مجدد در " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "تلاش برای اتصال مجدد بی نتیجه بود."; } ================================================ FILE: themes/offline-language-polish-indicator.css ================================================ @charset "UTF-8"; /* line 5, ../sass/offline-language-polish-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Połączony"; } /* line 10, ../sass/offline-language-polish-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Rozłączony"; } ================================================ FILE: themes/offline-language-polish.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Połącz teraz"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Twój komputer jest podłączony do internetu."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Twoje urządzenie jest podłączone do internetu."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Twoje urządzenie jest podłączone."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Twój komputer stracił połączenie z internetem."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Twoje urządzenie straciło połączenie z internetem."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Twoje urządzenie nie jest podłączone."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Próbuję połączyć..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Połączenie utracone. Ponawiam za " attr(data-retry-in-value) " sekund..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Ponawiam za " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Połączenie utracone. Ponawiam za " attr(data-retry-in-value) " sekundę..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Ponawiam za " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Połączenie utracone. Ponawiam za " attr(data-retry-in-value) " minut..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Ponawiam za " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Połączenie utracone. Ponawiam za " attr(data-retry-in-value) " minutę..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Ponawiam za " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Połączenie utracone. Ponawiam za " attr(data-retry-in-value) " godzin..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Ponawiam za " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Połączenie utracone. Ponawiam za " attr(data-retry-in-value) " godzinę..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Ponawiam za " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Nieudana próba podłączenia."; } ================================================ FILE: themes/offline-language-portuguese-brazil-indicator.css ================================================ /* line 5, ../sass/offline-language-portuguese-brazil-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Conectado"; } /* line 10, ../sass/offline-language-portuguese-brazil-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Desconectado"; } ================================================ FILE: themes/offline-language-portuguese-brazil.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Reconectar"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Seu computador está conectado à internet."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "O dispositivo está conectado à internet."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "O dispositivo está conectado."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "O computador perdeu sua conexão com a internet."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "O dispositivo perdeu sua conexão com a internet."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Seu dispositivo não está conectado."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Tentando reconectar..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Conexão perdida. Reconectando em " attr(data-retry-in-value) " segundos..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Reconectando em " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Conexão perdida. Reconectando em " attr(data-retry-in-value) " segundo..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Reconectando em " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Conexão perdida. Reconectando em " attr(data-retry-in-value) " minutos..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Reconectando em " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Conexão perdida. Reconectando em " attr(data-retry-in-value) " minuto..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Reconectando em " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Conexão perdida. Reconectando em " attr(data-retry-in-value) " horas..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Reconectando em " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Conexão perdida. Reconectando em " attr(data-retry-in-value) " hora..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Reconectando em " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Tentativa de conexão falhou."; } ================================================ FILE: themes/offline-language-simplified-chinese-indicator.css ================================================ @charset "UTF-8"; /* line 6, ../sass/offline-language-simplified-chinese-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "在线"; } /* line 11, ../sass/offline-language-simplified-chinese-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "离线"; } ================================================ FILE: themes/offline-language-spanish-indicator.css ================================================ @charset "UTF-8"; /* line 3, ../sass/offline-language-spanish-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "En línea"; } /* line 6, ../sass/offline-language-spanish-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Fuera de línea"; } ================================================ FILE: themes/offline-language-spanish.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Reconectar"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Tu computador está conectado a internet."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Tu dispositivo está conectado a internet."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Tu dispositivo está conectado."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Tu computador perdió su conexión a internet."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Tu dispositivo perdió su conexión a internet."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Tu dispositivo no está conectado."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Intentando reconectar..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Conexión perdida. Reconectando en " attr(data-retry-in-value) " segundos..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Reconectando en " attr(data-retry-in-value) "s..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Conexión perdida. Reconectando en " attr(data-retry-in-value) " segundo..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Reconectando en " attr(data-retry-in-value) "s..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Conexión perdida. Reconectando en " attr(data-retry-in-value) " minutos..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Reconectando en " attr(data-retry-in-value) "m..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Conexión perdida. Reconectando en " attr(data-retry-in-value) " minuto..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Reconectando en " attr(data-retry-in-value) "m..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Conexión perdida. Reconectando en " attr(data-retry-in-value) " horas..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Reconectando en " attr(data-retry-in-value) "h..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Conexión perdida. Reconectando en " attr(data-retry-in-value) " hora..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Reconectando en " attr(data-retry-in-value) "h..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Intento fallido."; } ================================================ FILE: themes/offline-language-turkish-indicator.css ================================================ @charset "UTF-8"; /* line 5, ../sass/offline-language-turkish-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Çevrimiçi"; } /* line 10, ../sass/offline-language-turkish-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Çevrimdışı"; } ================================================ FILE: themes/offline-language-turkish.css ================================================ @charset "UTF-8"; /* line 6, ../sass/_content.sass */ .offline-ui .offline-ui-retry:before { content: "Yeniden bağlan"; } /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Bilgisayarınız internete bağlı."; } @media (max-width: 1024px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Cihazınız internete bağlı."; } } @media (max-width: 568px) { /* line 11, ../sass/_content.sass */ .offline-ui.offline-ui-up .offline-ui-content:before { content: "Cihazınız bağlı."; } } /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Bilgisayarınız internet bağlantısı kesildi."; } @media (max-width: 1024px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Cihazınızın internet bağlantısı kesildi."; } } @media (max-width: 568px) { /* line 22, ../sass/_content.sass */ .offline-ui.offline-ui-down .offline-ui-content:before { content: "Cihazınız internete bağlı değil."; } } /* line 33, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { content: "Yeniden bağlanmaya çalışıyor..."; } /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: "Bağlantı kesildi. " attr(data-retry-in-value) " saniye içinde tekrar bağlanmayı deneyecek..."; } @media (max-width: 568px) { /* line 42, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { content: " " attr(data-retry-in-value) "saniye içinde tekrar bağlanmayı deneyecek..."; } } /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: "Bağlantı kesildi. " attr(data-retry-in-value) " saniye içinde tekrar bağlanmayı deneyecek..."; } @media (max-width: 568px) { /* line 50, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { content: " " attr(data-retry-in-value) "saniye içinde tekrar bağlanmayı deneyecek..."; } } /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: "Bağlantı kesildi. " attr(data-retry-in-value) " dakika içersinde tekrar bağlanmayı deneyecek..."; } @media (max-width: 568px) { /* line 58, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { content: " " attr(data-retry-in-value) "dakika içersinde tekrar bağlanmayı deneyecek..."; } } /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: "Bağlantı kesildi. " attr(data-retry-in-value) " dakika içersinde tekrar bağlanmayı deneyecek..."; } @media (max-width: 568px) { /* line 66, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { content: " " attr(data-retry-in-value) "dakika içersinde tekrar bağlanmayı deneyecek..."; } } /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: "Bağlantı kesildi. " attr(data-retry-in-value) " saat içersinde tekrar bağlanmayı deneyecek..."; } @media (max-width: 568px) { /* line 74, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { content: " " attr(data-retry-in-value) "saat içersinde tekrar bağlanmayı deneyecek..."; } } /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: "Bağlantı kesildi. " attr(data-retry-in-value) " saat içersinde tekrar bağlanmayı deneyecek..."; } @media (max-width: 568px) { /* line 82, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { content: " " attr(data-retry-in-value) "saat içersinde tekrar bağlanmayı deneyecek..."; } } /* line 90, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } /* line 93, ../sass/_content.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { content: "Bağlantı denemesi başarısız oldu."; } ================================================ FILE: themes/offline-theme-chrome-indicator.css ================================================ /* line 3, ../sass/_offline-theme-base-indicator.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 6, ../sass/_offline-theme-base-indicator.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; display: inline-block; } /* line 13, ../sass/_offline-theme-base-indicator.sass */ .offline-ui .offline-ui-retry { display: none; } /* line 16, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-up { display: block; } /* line 19, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-down { display: block; } /* line 8, ../sass/offline-theme-chrome-indicator.sass */ .offline-ui { -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; -ms-border-radius: 4px 4px 0 0; -o-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; font-family: "Lucida Grande", sans-serif; font-size: 12px; padding: 7px; background: #f6f6f6; color: #888888; bottom: 0; left: 20px; } /* line 19, ../sass/offline-theme-chrome-indicator.sass */ .offline-ui .offline-ui-content { padding-left: 16px; } /* line 22, ../sass/offline-theme-chrome-indicator.sass */ .offline-ui .offline-ui-content:after { -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; top: 0; bottom: 1px; left: 8px; margin: auto; height: 9px; width: 9px; } /* line 36, ../sass/offline-theme-chrome-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:after { background: #80d580; } /* line 41, ../sass/offline-theme-chrome-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:after { background: #ec8787; } ================================================ FILE: themes/offline-theme-chrome.css ================================================ /* line 4, ../sass/_offline-theme-base.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 7, ../sass/_offline-theme-base.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; margin: auto; top: 0; left: 0; right: 0; } /* line 17, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-content:before { display: inline; } /* line 20, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry { -webkit-user-select: none; -moz-user-select: none; user-select: none; display: none; } /* line 24, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry:before { display: inline; } /* line 29, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-up.offline-ui-up-5s { display: block; } /* line 32, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down { display: block; } /* line 37, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-retry { display: block; } /* line 42, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } @-webkit-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-moz-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-ms-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-o-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-webkit-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-moz-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-ms-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-o-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-webkit-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-moz-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-ms-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-o-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } /* line 16, ../sass/offline-theme-chrome.sass */ .offline-ui { -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 0 1em rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 0 1em rgba(0, 0, 0, 0.3); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 0 1em rgba(0, 0, 0, 0.3); font-family: "Lucida Grande", sans-serif; font-size: 14px; padding: 1em; width: 38em; max-width: 100%; background: #f6f6f6; color: #444444; overflow: hidden; } /* line 27, ../sass/offline-theme-chrome.sass */ .offline-ui .offline-ui-content { padding-left: 2em; } /* line 30, ../sass/offline-theme-chrome.sass */ .offline-ui .offline-ui-content:before { line-height: 1.25em; } /* line 33, ../sass/offline-theme-chrome.sass */ .offline-ui .offline-ui-content:after { -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; top: 0; bottom: 0; left: 1em; margin: auto; height: 1em; width: 1em; } /* line 45, ../sass/offline-theme-chrome.sass */ .offline-ui .offline-ui-retry { -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(38%, #ededed), color-stop(100%, #dedede)); background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); background-image: -moz-linear-gradient(#ededed, #ededed 38%, #dedede); background-image: -o-linear-gradient(#ededed, #ededed 38%, #dedede); background-image: linear-gradient(#ededed, #ededed 38%, #dedede); position: absolute; right: 4em; top: 1em; bottom: 1em; border: 1px solid rgba(0, 0, 0, 0.25); text-shadow: 0 1px 0 #f0f0f0; padding: 0 1em; line-height: 1.6em; height: 1.7em; margin: auto; font-size: 12px; text-decoration: none; color: inherit; } /* line 63, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-up { -webkit-animation: offline-dropout forwards 0.5s 2s; -moz-animation: offline-dropout forwards 0.5s 2s; -ms-animation: offline-dropout forwards 0.5s 2s; -o-animation: offline-dropout forwards 0.5s 2s; animation: offline-dropout forwards 0.5s 2s; -webkit-backface-visibility: hidden; } /* line 66, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-up .offline-ui-content:after { background: #80d580; } /* line 69, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down { -webkit-animation: offline-dropin 0.5s; -moz-animation: offline-dropin 0.5s; -ms-animation: offline-dropin 0.5s; -o-animation: offline-dropin 0.5s; animation: offline-dropin 0.5s; -webkit-backface-visibility: hidden; } /* line 72, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down .offline-ui-content:after { background: #ec8787; } /* line 75, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down.offline-ui-connecting, .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 3em; } /* line 78, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:after, .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content:after { background: #ec8787; } /* line 81, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down.offline-ui-connecting:after, .offline-ui.offline-ui-down.offline-ui-waiting:after { -webkit-animation: offline-rotation 0.7s linear infinite; -moz-animation: offline-rotation 0.7s linear infinite; -ms-animation: offline-rotation 0.7s linear infinite; -o-animation: offline-rotation 0.7s linear infinite; animation: offline-rotation 0.7s linear infinite; -webkit-backface-visibility: hidden; -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; right: 1em; top: 0; bottom: 0; margin: auto; height: 1em; width: 1em; border: 2px solid rgba(0, 0, 0, 0); border-top-color: rgba(0, 0, 0, 0.5); border-left-color: rgba(0, 0, 0, 0.5); opacity: 0.7; } /* line 98, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 11em; } /* line 101, ../sass/offline-theme-chrome.sass */ .offline-ui.offline-ui-down.offline-ui-waiting.offline-ui-reconnect-failed-2s { padding-right: 0; } ================================================ FILE: themes/offline-theme-dark-indicator.css ================================================ /* line 3, ../sass/_offline-theme-base-indicator.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 6, ../sass/_offline-theme-base-indicator.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; display: inline-block; } /* line 13, ../sass/_offline-theme-base-indicator.sass */ .offline-ui .offline-ui-retry { display: none; } /* line 16, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-up { display: block; } /* line 19, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-down { display: block; } /* line 8, ../sass/offline-theme-dark-indicator.sass */ .offline-ui { -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; -ms-border-radius: 4px 4px 0 0; -o-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; font-family: "Helvetica Neue", sans-serif; font-weight: 300; padding: 1em; background: black; color: #cccccc; bottom: 0; left: 20px; } /* line 19, ../sass/offline-theme-dark-indicator.sass */ .offline-ui .offline-ui-content { padding-left: 1.5em; } /* line 22, ../sass/offline-theme-dark-indicator.sass */ .offline-ui .offline-ui-content:after { -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; top: 0; bottom: 0; left: 1em; margin: auto; height: 0.8em; width: 0.8em; } /* line 36, ../sass/offline-theme-dark-indicator.sass */ .offline-ui.offline-ui-up .offline-ui-content:after { background: #80d580; } /* line 41, ../sass/offline-theme-dark-indicator.sass */ .offline-ui.offline-ui-down .offline-ui-content:after { background: #e24949; } ================================================ FILE: themes/offline-theme-dark.css ================================================ /* line 4, ../sass/_offline-theme-base.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 7, ../sass/_offline-theme-base.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; margin: auto; top: 0; left: 0; right: 0; } /* line 17, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-content:before { display: inline; } /* line 20, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry { -webkit-user-select: none; -moz-user-select: none; user-select: none; display: none; } /* line 24, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry:before { display: inline; } /* line 29, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-up.offline-ui-up-5s { display: block; } /* line 32, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down { display: block; } /* line 37, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-retry { display: block; } /* line 42, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } @-webkit-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-moz-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-ms-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-o-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-webkit-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-moz-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-ms-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-o-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-webkit-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-moz-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-ms-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-o-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } /* line 16, ../sass/offline-theme-dark.sass */ .offline-ui { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; -ms-border-radius: 0 0 4px 4px; -o-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; font-family: "Helvetica Neue", sans-serif; font-weight: 300; padding: 1em; width: 38em; max-width: 100%; background: black; color: #cccccc; overflow: hidden; } @media (max-width: 38em) { /* line 16, ../sass/offline-theme-dark.sass */ .offline-ui { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; } } /* line 30, ../sass/offline-theme-dark.sass */ .offline-ui .offline-ui-content { padding-left: 2em; } /* line 33, ../sass/offline-theme-dark.sass */ .offline-ui .offline-ui-content:before { line-height: 1.25em; } /* line 36, ../sass/offline-theme-dark.sass */ .offline-ui .offline-ui-content:after { -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; top: 0; bottom: 0; left: 1em; margin: auto; height: 1em; width: 1em; } /* line 48, ../sass/offline-theme-dark.sass */ .offline-ui .offline-ui-retry { position: absolute; right: 3em; top: 0; bottom: 0; background: rgba(255, 255, 255, 0.2); text-decoration: none; color: inherit; line-height: 3.5em; height: 3.5em; margin: auto; padding: 0 1em; } /* line 61, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-up { -webkit-animation: offline-dropout forwards 0.5s 2s; -moz-animation: offline-dropout forwards 0.5s 2s; -ms-animation: offline-dropout forwards 0.5s 2s; -o-animation: offline-dropout forwards 0.5s 2s; animation: offline-dropout forwards 0.5s 2s; -webkit-backface-visibility: hidden; } /* line 64, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-up .offline-ui-content:after { background: #80d580; } /* line 67, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down { -webkit-animation: offline-dropin 0.5s; -moz-animation: offline-dropin 0.5s; -ms-animation: offline-dropin 0.5s; -o-animation: offline-dropin 0.5s; animation: offline-dropin 0.5s; -webkit-backface-visibility: hidden; } /* line 70, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down .offline-ui-content:after { background: #e24949; } /* line 73, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down.offline-ui-connecting, .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 3em; } /* line 76, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:after, .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content:after { background: #e24949; } /* line 79, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down.offline-ui-connecting:after, .offline-ui.offline-ui-down.offline-ui-waiting:after { -webkit-animation: offline-rotation 0.7s linear infinite; -moz-animation: offline-rotation 0.7s linear infinite; -ms-animation: offline-rotation 0.7s linear infinite; -o-animation: offline-rotation 0.7s linear infinite; animation: offline-rotation 0.7s linear infinite; -webkit-backface-visibility: hidden; -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; right: 1em; top: 0; bottom: 0; margin: auto; height: 1em; width: 1em; border: 2px solid transparent; border-top-color: rgba(255, 255, 255, 0.5); border-left-color: rgba(255, 255, 255, 0.5); opacity: 0.7; } /* line 96, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 11em; } /* line 99, ../sass/offline-theme-dark.sass */ .offline-ui.offline-ui-down.offline-ui-waiting.offline-ui-reconnect-failed-2s { padding-right: 0; } ================================================ FILE: themes/offline-theme-default-indicator.css ================================================ /* line 3, ../sass/_offline-theme-base-indicator.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 6, ../sass/_offline-theme-base-indicator.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; display: inline-block; } /* line 13, ../sass/_offline-theme-base-indicator.sass */ .offline-ui .offline-ui-retry { display: none; } /* line 16, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-up { display: block; } /* line 19, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-down { display: block; } /* line 11, ../sass/offline-theme-default-indicator.sass */ .offline-ui { -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; font-family: "Helvetica Neue", sans-serif; padding: 1em; max-width: 100%; bottom: 1em; left: 1em; } /* line 19, ../sass/offline-theme-default-indicator.sass */ .offline-ui.offline-ui-up { background: #d6e9c6; color: #468847; } /* line 23, ../sass/offline-theme-default-indicator.sass */ .offline-ui.offline-ui-down { background: #ec8787; color: #551313; } ================================================ FILE: themes/offline-theme-default.css ================================================ /* line 4, ../sass/_offline-theme-base.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 7, ../sass/_offline-theme-base.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; margin: auto; top: 0; left: 0; right: 0; } /* line 17, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-content:before { display: inline; } /* line 20, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry { -webkit-user-select: none; -moz-user-select: none; user-select: none; display: none; } /* line 24, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry:before { display: inline; } /* line 29, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-up.offline-ui-up-5s { display: block; } /* line 32, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down { display: block; } /* line 37, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-retry { display: block; } /* line 42, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } @-webkit-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-moz-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-ms-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-o-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-webkit-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-moz-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-ms-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-o-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-webkit-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-moz-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-ms-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-o-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } /* line 21, ../sass/offline-theme-default.sass */ .offline-ui { -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; font-family: "Helvetica Neue", sans-serif; padding: 1em; top: 1em; width: 38em; max-width: 100%; overflow: hidden; } @media (max-width: 38em) { /* line 21, ../sass/offline-theme-default.sass */ .offline-ui { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; top: 0; } } /* line 34, ../sass/offline-theme-default.sass */ .offline-ui .offline-ui-content:before { line-height: 1.25em; } /* line 37, ../sass/offline-theme-default.sass */ .offline-ui .offline-ui-retry { position: absolute; right: 3em; top: 0; bottom: 0; background: rgba(0, 0, 0, 0.1); text-decoration: none; color: inherit; line-height: 3.5em; height: 3.5em; margin: auto; padding: 0 1em; } /* line 50, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-up { -webkit-animation: offline-fadeout-and-hide forwards 0.5s 2s; -moz-animation: offline-fadeout-and-hide forwards 0.5s 2s; -ms-animation: offline-fadeout-and-hide forwards 0.5s 2s; -o-animation: offline-fadeout-and-hide forwards 0.5s 2s; animation: offline-fadeout-and-hide forwards 0.5s 2s; -webkit-backface-visibility: hidden; background: #d6e9c6; color: #468847; } /* line 55, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down { -webkit-animation: offline-fadein 0.5s; -moz-animation: offline-fadein 0.5s; -ms-animation: offline-fadein 0.5s; -o-animation: offline-fadein 0.5s; animation: offline-fadein 0.5s; -webkit-backface-visibility: hidden; background: #ec8787; color: #551313; } /* line 60, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-connecting, .offline-ui.offline-ui-down.offline-ui-waiting { background: #f8ecad; color: #7c6d1f; padding-right: 3em; } /* line 65, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-connecting:after, .offline-ui.offline-ui-down.offline-ui-waiting:after { -webkit-animation: offline-rotation 0.7s linear infinite; -moz-animation: offline-rotation 0.7s linear infinite; -ms-animation: offline-rotation 0.7s linear infinite; -o-animation: offline-rotation 0.7s linear infinite; animation: offline-rotation 0.7s linear infinite; -webkit-backface-visibility: hidden; -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; right: 1em; top: 0; bottom: 0; margin: auto; height: 1em; width: 1em; border: 2px solid rgba(0, 0, 0, 0); border-top-color: #7c6d1f; border-left-color: #7c6d1f; opacity: 0.7; } /* line 82, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 11em; } /* line 85, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-waiting.offline-ui-reconnect-failed-2s { padding-right: 0; } ================================================ FILE: themes/offline-theme-hubspot.css ================================================ /* line 4, ../sass/_offline-theme-base.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 7, ../sass/_offline-theme-base.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; margin: auto; top: 0; left: 0; right: 0; } /* line 17, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-content:before { display: inline; } /* line 20, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry { -webkit-user-select: none; -moz-user-select: none; user-select: none; display: none; } /* line 24, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry:before { display: inline; } /* line 29, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-up.offline-ui-up-5s { display: block; } /* line 32, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down { display: block; } /* line 37, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-retry { display: block; } /* line 42, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } @-webkit-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-moz-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-ms-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-o-keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @keyframes offline-fadein { /* line 6, ../sass/_keyframes.sass */ 0% { opacity: 0; } /* line 8, ../sass/_keyframes.sass */ 100% { opacity: 1; } } @-webkit-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-moz-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-ms-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-o-keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @keyframes offline-fadeout-and-hide { /* line 20, ../sass/_keyframes.sass */ 0% { opacity: 1; display: block; } /* line 23, ../sass/_keyframes.sass */ 99% { opacity: 0; display: block; } /* line 26, ../sass/_keyframes.sass */ 100% { opacity: 0; display: none; } } @-webkit-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-moz-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-ms-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-o-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } /* line 21, ../sass/offline-theme-default.sass */ .offline-ui { -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; font-family: "Helvetica Neue", sans-serif; padding: 1em; top: 1em; width: 38em; max-width: 100%; overflow: hidden; } @media (max-width: 38em) { /* line 21, ../sass/offline-theme-default.sass */ .offline-ui { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; top: 0; } } /* line 34, ../sass/offline-theme-default.sass */ .offline-ui .offline-ui-content:before { line-height: 1.25em; } /* line 37, ../sass/offline-theme-default.sass */ .offline-ui .offline-ui-retry { position: absolute; right: 3em; top: 0; bottom: 0; background: rgba(0, 0, 0, 0.1); text-decoration: none; color: inherit; line-height: 3.5em; height: 3.5em; margin: auto; padding: 0 1em; } /* line 50, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-up { -webkit-animation: offline-fadeout-and-hide forwards 0.5s 2s; -moz-animation: offline-fadeout-and-hide forwards 0.5s 2s; -ms-animation: offline-fadeout-and-hide forwards 0.5s 2s; -o-animation: offline-fadeout-and-hide forwards 0.5s 2s; animation: offline-fadeout-and-hide forwards 0.5s 2s; -webkit-backface-visibility: hidden; background: #d6e9c6; color: #468847; } /* line 55, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down { -webkit-animation: offline-fadein 0.5s; -moz-animation: offline-fadein 0.5s; -ms-animation: offline-fadein 0.5s; -o-animation: offline-fadein 0.5s; animation: offline-fadein 0.5s; -webkit-backface-visibility: hidden; background: #ec8787; color: #551313; } /* line 60, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-connecting, .offline-ui.offline-ui-down.offline-ui-waiting { background: #f8ecad; color: #7c6d1f; padding-right: 3em; } /* line 65, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-connecting:after, .offline-ui.offline-ui-down.offline-ui-waiting:after { -webkit-animation: offline-rotation 0.7s linear infinite; -moz-animation: offline-rotation 0.7s linear infinite; -ms-animation: offline-rotation 0.7s linear infinite; -o-animation: offline-rotation 0.7s linear infinite; animation: offline-rotation 0.7s linear infinite; -webkit-backface-visibility: hidden; -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; right: 1em; top: 0; bottom: 0; margin: auto; height: 1em; width: 1em; border: 2px solid rgba(0, 0, 0, 0); border-top-color: #7c6d1f; border-left-color: #7c6d1f; opacity: 0.7; } /* line 82, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 11em; } /* line 85, ../sass/offline-theme-default.sass */ .offline-ui.offline-ui-down.offline-ui-waiting.offline-ui-reconnect-failed-2s { padding-right: 0; } /* line 5, ../sass/offline-theme-hubspot.sass */ .offline-ui { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; -ms-border-radius: 0 0 4px 4px; -o-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; -webkit-box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1); font-family: "Helvetica Neue", Helvetica, sans-serif, sans-serif; font-size: 13px; top: 42px; } ================================================ FILE: themes/offline-theme-slide-indicator.css ================================================ /* line 3, ../sass/_offline-theme-base-indicator.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 6, ../sass/_offline-theme-base-indicator.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; display: inline-block; } /* line 13, ../sass/_offline-theme-base-indicator.sass */ .offline-ui .offline-ui-retry { display: none; } /* line 16, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-up { display: block; } /* line 19, ../sass/_offline-theme-base-indicator.sass */ .offline-ui.offline-ui-down { display: block; } /* line 11, ../sass/offline-theme-slide-indicator.sass */ .offline-ui { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; -ms-border-radius: 4px 4px 0 0; -o-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; font-family: "Helvetica Neue", sans-serif; padding: 1em; max-width: 100%; bottom: 0; left: 1em; } /* line 19, ../sass/offline-theme-slide-indicator.sass */ .offline-ui.offline-ui-up { background: #d6e9c6; color: #468847; } /* line 23, ../sass/offline-theme-slide-indicator.sass */ .offline-ui.offline-ui-down { background: #ec8787; color: #551313; } ================================================ FILE: themes/offline-theme-slide.css ================================================ /* line 4, ../sass/_offline-theme-base.sass */ .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* line 7, ../sass/_offline-theme-base.sass */ .offline-ui { display: none; position: fixed; background: white; z-index: 2000; margin: auto; top: 0; left: 0; right: 0; } /* line 17, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-content:before { display: inline; } /* line 20, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry { -webkit-user-select: none; -moz-user-select: none; user-select: none; display: none; } /* line 24, ../sass/_offline-theme-base.sass */ .offline-ui .offline-ui-retry:before { display: inline; } /* line 29, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-up.offline-ui-up-5s { display: block; } /* line 32, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down { display: block; } /* line 37, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-retry { display: block; } /* line 42, ../sass/_offline-theme-base.sass */ .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { display: none; } @-webkit-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-moz-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-ms-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-o-keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @keyframes offline-dropin { /* line 40, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 0; } /* line 43, ../sass/_keyframes.sass */ 1% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 0; } /* line 48, ../sass/_keyframes.sass */ 2% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); opacity: 1; } /* line 51, ../sass/_keyframes.sass */ 100% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); opacity: 1; } } @-webkit-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-moz-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-ms-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-o-keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @keyframes offline-dropout { /* line 57, ../sass/_keyframes.sass */ 0% { transform: translateY(0); -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); } /* line 59, ../sass/_keyframes.sass */ 100% { transform: translateY(-800px); -webkit-transform: translateY(-800px); -moz-transform: translateY(-800px); -ms-transform: translateY(-800px); -o-transform: translateY(-800px); } } @-webkit-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-moz-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-ms-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @-o-keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } @keyframes offline-rotation { /* line 64, ../sass/_keyframes.sass */ 0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); } /* line 66, ../sass/_keyframes.sass */ 100% { transform: rotate(359deg); -webkit-transform: rotate(359deg); -moz-transform: rotate(359deg); -ms-transform: rotate(359deg); -o-transform: rotate(359deg); } } /* line 21, ../sass/offline-theme-slide.sass */ .offline-ui { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; -ms-border-radius: 0 0 4px 4px; -o-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; font-family: "Helvetica Neue", sans-serif; padding: 1em; width: 38em; max-width: 100%; overflow: hidden; } @media (max-width: 38em) { /* line 21, ../sass/offline-theme-slide.sass */ .offline-ui { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; } } /* line 32, ../sass/offline-theme-slide.sass */ .offline-ui .offline-ui-retry { position: absolute; right: 3em; top: 0; bottom: 0; background: rgba(0, 0, 0, 0.1); text-decoration: none; color: inherit; line-height: 3.5em; height: 3.5em; margin: auto; padding: 0 1em; } /* line 45, ../sass/offline-theme-slide.sass */ .offline-ui.offline-ui-up { -webkit-animation: offline-dropout forwards 0.5s 2s; -moz-animation: offline-dropout forwards 0.5s 2s; -ms-animation: offline-dropout forwards 0.5s 2s; -o-animation: offline-dropout forwards 0.5s 2s; animation: offline-dropout forwards 0.5s 2s; -webkit-backface-visibility: hidden; background: #d6e9c6; color: #468847; } /* line 50, ../sass/offline-theme-slide.sass */ .offline-ui.offline-ui-down { -webkit-animation: offline-dropin 0.5s; -moz-animation: offline-dropin 0.5s; -ms-animation: offline-dropin 0.5s; -o-animation: offline-dropin 0.5s; animation: offline-dropin 0.5s; -webkit-backface-visibility: hidden; background: #ec8787; color: #551313; } /* line 55, ../sass/offline-theme-slide.sass */ .offline-ui.offline-ui-down.offline-ui-connecting, .offline-ui.offline-ui-down.offline-ui-waiting { background: #f8ecad; color: #7c6d1f; padding-right: 3em; } /* line 60, ../sass/offline-theme-slide.sass */ .offline-ui.offline-ui-down.offline-ui-connecting:after, .offline-ui.offline-ui-down.offline-ui-waiting:after { -webkit-animation: offline-rotation 0.7s linear infinite; -moz-animation: offline-rotation 0.7s linear infinite; -ms-animation: offline-rotation 0.7s linear infinite; -o-animation: offline-rotation 0.7s linear infinite; animation: offline-rotation 0.7s linear infinite; -webkit-backface-visibility: hidden; -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; content: " "; display: block; position: absolute; right: 1em; top: 0; bottom: 0; margin: auto; height: 1em; width: 1em; border: 2px solid rgba(0, 0, 0, 0); border-top-color: #7c6d1f; border-left-color: #7c6d1f; opacity: 0.7; } /* line 77, ../sass/offline-theme-slide.sass */ .offline-ui.offline-ui-down.offline-ui-waiting { padding-right: 11em; } /* line 80, ../sass/offline-theme-slide.sass */ .offline-ui.offline-ui-down.offline-ui-waiting.offline-ui-reconnect-failed-2s { padding-right: 0; }