Repository: connors/photon Branch: master Commit: ba7b496f5d69 Files: 72 Total size: 362.3 KB Directory structure: gitextract_huq4lpct/ ├── .gitignore ├── .travis.yml ├── CNAME ├── CONTRIBUTING.md ├── Gruntfile.js ├── LICENSE ├── README.md ├── _config.yml ├── dist/ │ ├── css/ │ │ └── photon.css │ └── template-app/ │ ├── app.js │ ├── index.html │ ├── js/ │ │ └── menu.js │ └── package.json ├── docs/ │ ├── LICENSE │ ├── _includes/ │ │ ├── footer.html │ │ ├── header.html │ │ ├── javascript.html │ │ └── nav.html │ ├── _layouts/ │ │ └── default.html │ ├── assets/ │ │ ├── css/ │ │ │ ├── docs.css │ │ │ ├── normalize.css │ │ │ └── pygments-manni.css │ │ └── js/ │ │ ├── docs.js │ │ ├── jq.js │ │ └── sticky.js │ ├── components/ │ │ ├── bars-actions.html │ │ ├── bars-tabs.html │ │ ├── bars.html │ │ ├── basic-sidebar.html │ │ ├── basic-window.html │ │ ├── button-groups.html │ │ ├── buttons-large.html │ │ ├── buttons-mini.html │ │ ├── buttons.html │ │ ├── common-layout.html │ │ ├── forms.html │ │ ├── icons.html │ │ ├── lists.html │ │ ├── mini-sidebar.html │ │ ├── navs.html │ │ ├── tables.html │ │ └── three-paned.html │ ├── components.html │ ├── demo-app.html │ ├── dist/ │ │ ├── css/ │ │ │ └── photon.css │ │ └── template-app/ │ │ ├── app.js │ │ ├── index.html │ │ ├── js/ │ │ │ ├── index.js │ │ │ └── menu.js │ │ └── package.json │ ├── getting-started.html │ └── index.html ├── package.json └── sass/ ├── appify.scss ├── bars.scss ├── base.scss ├── button-groups.scss ├── buttons.scss ├── docs.scss ├── forms.scss ├── grid.scss ├── icons.scss ├── images.scss ├── lists.scss ├── mixins.scss ├── navs.scss ├── normalize.scss ├── photon.scss ├── tables.scss ├── tabs.scss ├── utilities.scss └── variables.scss ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Ignore docs files _gh_pages _site .ruby-version .sass-cache # Numerous always-ignore extensions *.diff *.err *.orig *.log *.rej *.swo *.swp *.zip *.vi *~ # OS or Editor folders .DS_Store ._* Thumbs.db .cache .project .settings .tmproj *.esproj nbproject *.sublime-project *.sublime-workspace .idea # Komodo *.komodoproject .komodotools # Folders to ignore node_modules bower_components example-components ================================================ FILE: .travis.yml ================================================ language: node_js sudo: false git: depth: 10 node_js: - "0.12" env: matrix: - RUBY_VERSION=2.0 before_install: - rvm install $RUBY_VERSION - rvm use $RUBY_VERSION --fuzzy - export GEMDIR=$(rvm gemdir) install: - travis_retry npm install - travis_retry gem install --no-document "jekyll:~>3.0.0" "rouge:~>1.10" "sass:~>3.4" matrix: fast_finish: true ================================================ FILE: CNAME ================================================ photonkit.com ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to Photon ## Types of issues The GitHub issue tracker should only be used for one of the following: + **Bugs** — when a feature of the project has been _identified as broken_. + **Feature requests** — when you ask for a _new feature_ to be added to a project. + **Contribution enquiries** — when you want to discuss whether a _new feature_ or _change_ would be accepted in a project before you begin development work on it. These are some things that don't belong in the issue tracker: + **Please avoid personal support requests.** We cannot provide personal support for implementation issues. The best place for help is generally going to be StackOverflow, Twitter, IRC, etc. + **Please avoid derailing issues.** Keep the discussion on topic and respect the opinions of others. ## Bugs A bug is a _demonstrable problem_ that is caused by the code in the repository. If you've come across a problem with the code and you're letting us know about it, _thank you_. We appreciate your time and the effort you're making to help improve the code for everyone else! Please read the following guidelines for reporting bugs: 1. **Use the GitHub issue search** — check if the issue has already been reported. If it has been, please comment on the existing issue. 2. **Check if the issue has been fixed** — the latest `master` or development branch may already contain a fix. 3. **Isolate the demonstrable problem** — make sure that the code in the project's repository is _definitely_ responsible for the issue. Create a [reduced test case](http://css-tricks.com/6263-reduced-test-cases/) - an extremely simple and immediately viewable example of the issue. 4. **Include a live example** — provide a link to your reduced test case when appropriate (e.g. if the issue is related to front-end technologies). Please use [jsFiddle](http://jsfiddle.net) to host examples. Please try to be as detailed as possible in your report too. What is your environment? What steps will reproduce the issue? What browser(s) and OS experience the problem? What would you expect to be the outcome? All these details will help me and others to assess and fix any potential bugs. ### Example of a good bug report > Short and descriptive title > > A summary of the issue and the browser/OS environment in which it occurs. If > suitable, include the steps required to reproduce the bug. > > 1. This is the first step > 2. This is the second step > 3. Further steps, etc. > > `` - a link to the reduced test case > > Any other information you want to share that is relevant to the issue being > reported. This might include the lines of code that you have identified as > causing the bug, and potential solutions (and your opinions on their > merits). A good bug report shouldn't leave us needing to chase you up to get further information that is required to assess or fix the bug. ## Feature requests Feature requests are welcome! Please provide links to examples or articles that help to illustrate the specifics of a feature you're requesting. The more detail, the better. It will help us to decide whether the feature is something I agree should become part of the project. ## Contribution enquiries Contribution enquiries should take place before any significant pull request, otherwise you risk spending a lot of time working on something that we might not want to pull into the repository. In this regard, some contribution enquires may be feature requests that you would like to have a go at implementing yourself if they are wanted. Other enquiries might revolve around refactoring code or porting a project to different languages. ## Pull requests Good pull requests - patches, improvements, new features - are a fantastic help. If you've spotted any small, obvious errors and want to help out by patching it, that will be much appreciated. If your contribution involves a significant amount of work or substantial changes to any part of the project, please open a "contribution enquiry" issue first to check that the work is wanted or matches the goals of the project. All pull requests should remain focused in scope and avoid containing unrelated commits. Please follow this process; it's the best way to get your work included in the project: 1. [Fork](https://github.com/connors/photon/fork) the project. 2. Clone your fork (`git clone git@github.com:/.git`). 3. Add an `upstream` remote (`git remote add upstream git://github.com//.git`). 4. Get the latest changes from upstream (e.g. `git pull upstream `). 5. Create a new topic branch to contain your feature, change, or fix (`git checkout -b `). 6. Make sure that your changes adhere to the current coding conventions used throughout the project - indentation, accurate comments, etc. 7. Commit your changes in logical chunks; use git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public. Please adhere to these [git commit message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) or your pull request is unlikely be merged into the main project. 8. Locally merge (or rebase) the upstream branch into your topic branch. 9. Push your topic branch up to your fork (`git push origin `). 10. [Open a Pull Request](http://help.github.com/send-pull-requests/) with a clear title and description. Please mention which browsers you tested in. If you have any other questions about contributing, please feel free to contact us. **Don't edit files in `dist/`.** You should edit files in `sass/` and `js/`. ## Special thanks to @necolas For writing the original [issue-guidelines](https://github.com/necolas/issue-guidelines/) from which these were adapted. ================================================ FILE: Gruntfile.js ================================================ /*! * Photon's Gruntfile * Copyright 2015 Connor Sears * Licensed under MIT (https://github.com/connors/photon/blob/master/LICENSE) */ module.exports = function(grunt) { 'use strict'; // Force use of Unix newlines grunt.util.linefeed = '\n'; // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), // Metadata. meta: { distPath: 'dist/', docsAssetsPath: 'docs/assets/', docsDistPath: 'docs/dist/', docsPath: 'docs/', srcPath: 'sass/', }, banner: '/*!\n' + ' * =====================================================\n' + ' * Photon v<%= pkg.version %>\n' + ' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + ' * Licensed under <%= pkg.license %> (https://github.com/connors/proton/blob/master/LICENSE)\n' + ' *\n' + ' * v<%= pkg.version %> designed by @connors.\n' + ' * =====================================================\n' + ' */\n', clean: { dist: ['<%= meta.distPath %>/css', '<%= meta.docsDistPath %>/css'] }, sass: { options: { sourcemap: 'none', style: 'expanded', unixNewlines: true }, core: { src: 'sass/photon.scss', dest: '<%= meta.distPath %>css/<%= pkg.name %>.css' }, docs: { src: 'sass/docs.scss', dest: '<%= meta.docsAssetsPath %>css/docs.css' } }, usebanner: { dist: { options: { position: 'top', banner: '<%= banner %>' }, files: { src: [ '<%= meta.distPath %>css/*.css' ] } } }, copy: { fonts: { expand: true, src: 'fonts/*', dest: '<%= meta.distPath %>' }, docs: { expand: true, cwd: '<%= meta.distPath %>', src: [ '**/*' ], dest: '<%= meta.docsDistPath %>' } }, cssmin: { options: { keepSpecialComments: '*' // keep all important comments }, docs: { src: [ '<%= meta.docsAssetsPath %>css/docs.css', '<%= meta.docsAssetsPath %>css/pygments-manni.css', '<%= meta.docsAssetsPath %>css/normalize.css' ], dest: '<%= meta.docsAssetsPath %>css/docs.min.css' } }, watch: { options: { hostname: 'localhost', livereload: true, port: 8000 }, css: { files: '<%= meta.srcPath %>**/*.scss', tasks: ['dist-css', 'copy'] }, html: { files: '<%= meta.docsPath %>**', tasks: ['jekyll'] } }, jekyll: { options: { config: '_config.yml' }, docs: {}, github: { options: { raw: 'github: true' } } }, connect: { site: { options: { base: '_site/', hostname: 'localhost', livereload: true, open: true, port: 8000 } } } }); // Load the plugins require('load-grunt-tasks')(grunt, { scope: 'devDependencies' }); require('time-grunt')(grunt); // Tasks grunt.registerTask('dist-css', ['sass', 'usebanner', 'cssmin']); grunt.registerTask('dist', ['clean', 'dist-css', 'copy']); grunt.registerTask('server', ['dist', 'jekyll:docs', 'connect', 'watch']); grunt.registerTask('default', ['dist']); }; ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2015 connors and other contributors 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 ================================================ # [Photon](http://photonkit.com/) [![Build Status](https://img.shields.io/travis/connors/photon/master.svg)](https://travis-ci.org/connors/photon) UI toolkit for building desktop apps with Electron. ## Getting started * Clone the repo with `git clone https://github.com/connors/photon.git` * [Read the docs](http://photonkit.com) to learn about the components and how to get your new application started Take note that our master branch is our active, unstable development branch and that if you're looking to download a stable copy of the repo, check the [tagged downloads](https://github.com/connors/photon/tags). ### What's included Within the download you'll find the following directories and files, logically grouping common assets. You'll see something like this: ``` photon/ ├── css/ │ ├── photon.css ├── fonts/ │ ├── photon-entypo.eot │ ├── photon-entypo.svg │ ├── photon-entypo.ttf │ └── photon-entypo.woff └── template-app/ ├── js/ │ └── menu.js ├── app.js ├── index.html └── package.json ``` We provide compiled CSS (`photon.*`). We also include the Entypo fonts and a template Electron application for you to quickly get started. ## Documentation Photon's documentation is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at . The docs may also be run locally. ### Running documentation locally 1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x). * **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. 2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`. 3. From the root `/photon` directory, run `jekyll serve` in the command line. 4. Open in your browser, and boom! Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). ## Contributing Please file a GitHub issue to [report a bug](https://github.com/connors/photon/issues). When reporting a bug, be sure to follow the [contributor guidelines](https://github.com/connors/photon/blob/master/CONTRIBUTING.md). ## Development 1. Install node dependencies: `npm install`. 2. Open the example app: `npm start`. Modifying source Sass files? Open a second Terminal tab and run `npm run build` to kick off a build of the compiled `photon.css`. ## Versioning For transparency into our release cycle and in striving to maintain backward compatibility, Photon is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we'll adhere to these rules whenever possible. Releases will be numbered with the following format: `..` And constructed with the following guidelines: * Breaking backward compatibility **bumps the major** while resetting minor and patch * New additions without breaking backward compatibility **bumps the minor** while resetting the patch * Bug fixes and misc changes **bumps only the patch** For more information on SemVer, please visit . ## Maintainers Connor Sears * * ## License Copyright @connors. Released under MIT. ================================================ FILE: _config.yml ================================================ # Meta data name: Photon authors: Connor Sears description: Build desktop apps with simple HTML and CSS components. # Dependencies highlighter: rouge # Permalinks permalink: pretty # Server source: docs port: 4000 url: http://photonkit.com ================================================ FILE: dist/css/photon.css ================================================ /*! * ===================================================== * Photon v0.1.2 * Copyright 2016 Connor Sears * Licensed under MIT (https://github.com/connors/proton/blob/master/LICENSE) * * v0.1.2 designed by @connors. * ===================================================== */ @charset "UTF-8"; audio, canvas, progress, video { vertical-align: baseline; } audio:not([controls]) { display: none; } a:active, a:hover { outline: 0; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } h1 { font-size: 2em; margin: 0.67em 0; } small { font-size: 80%; } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } pre { overflow: auto; } code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } button, input, optgroup, select, textarea { color: inherit; font: inherit; margin: 0; } input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } input[type="search"] { -webkit-appearance: textfield; box-sizing: content-box; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } legend { border: 0; padding: 0; } table { border-collapse: collapse; border-spacing: 0; } td, th { padding: 0; } * { cursor: default; -webkit-user-select: none; } input, textarea { -webkit-user-select: text; } form, input, optgroup, select, textarea { -webkit-user-select: text; -webkit-app-region: no-drag; } * { -webkit-box-sizing: border-box; box-sizing: border-box; } html { height: 100%; width: 100%; overflow: hidden; } body { height: 100%; padding: 0; margin: 0; font-family: system, -apple-system, ".SFNSDisplay-Regular", "Helvetica Neue", Helvetica, "Segoe UI", sans-serif; font-size: 13px; line-height: 1.6; color: #333; background-color: transparent; } hr { margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom: 1px solid #ddd; } h1, h2, h3, h4, h5, h6 { margin-top: 20px; margin-bottom: 10px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } h1 { font-size: 36px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 14px; } h6 { font-size: 12px; } .window { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; flex-direction: column; background-color: #fff; } .window-content { position: relative; overflow-y: auto; display: flex; flex: 1; } .selectable-text { cursor: text; -webkit-user-select: text; } .text-center { text-align: center; } .text-right { text-align: right; } .text-left { text-align: left; } .pull-left { float: left; } .pull-right { float: right; } .padded { padding: 10px; } .padded-less { padding: 5px; } .padded-more { padding: 20px; } .padded-vertically { padding-top: 10px; padding-bottom: 10px; } .padded-vertically-less { padding-top: 5px; padding-bottom: 5px; } .padded-vertically-more { padding-top: 20px; padding-bottom: 20px; } .padded-horizontally { padding-right: 10px; padding-left: 10px; } .padded-horizontally-less { padding-right: 5px; padding-left: 5px; } .padded-horizontally-more { padding-right: 20px; padding-left: 20px; } .padded-top { padding-top: 10px; } .padded-top-less { padding-top: 5px; } .padded-top-more { padding-top: 20px; } .padded-bottom { padding-bottom: 10px; } .padded-bottom-less { padding-bottom: 5px; } .padded-bottom-more { padding-bottom: 20px; } .sidebar { background-color: #f5f5f4; } .draggable { -webkit-app-region: drag; } .not-draggable { -webkit-app-region: no-drag; } .clearfix:before, .clearfix:after { display: table; content: " "; } .clearfix:after { clear: both; } .btn { display: inline-block; padding: 3px 8px; margin-bottom: 0; font-size: 12px; line-height: 1.4; text-align: center; white-space: nowrap; vertical-align: middle; cursor: default; background-image: none; border: 1px solid transparent; border-radius: 4px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06); -webkit-app-region: no-drag; } .btn:focus { outline: none; box-shadow: none; } .btn-mini { padding: 2px 6px; } .btn-large { padding: 6px 12px; } .btn-form { padding-right: 20px; padding-left: 20px; } .btn-default { color: #333; border-top-color: #c2c0c2; border-right-color: #c2c0c2; border-bottom-color: #a19fa1; border-left-color: #c2c0c2; background-color: #fcfcfc; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fcfcfc), color-stop(100%, #f1f1f1)); background-image: -webkit-linear-gradient(top, #fcfcfc 0%, #f1f1f1 100%); background-image: linear-gradient(to bottom, #fcfcfc 0%, #f1f1f1 100%); } .btn-default:active { background-color: #ddd; background-image: none; } .btn-primary, .btn-positive, .btn-negative, .btn-warning { color: #fff; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } .btn-primary { border-color: #388df8; border-bottom-color: #0866dc; background-color: #6eb4f7; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #6eb4f7), color-stop(100%, #1a82fb)); background-image: -webkit-linear-gradient(top, #6eb4f7 0%, #1a82fb 100%); background-image: linear-gradient(to bottom, #6eb4f7 0%, #1a82fb 100%); } .btn-primary:active { background-color: #3e9bf4; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3e9bf4), color-stop(100%, #0469de)); background-image: -webkit-linear-gradient(top, #3e9bf4 0%, #0469de 100%); background-image: linear-gradient(to bottom, #3e9bf4 0%, #0469de 100%); } .btn-positive { border-color: #29a03b; border-bottom-color: #248b34; background-color: #5bd46d; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bd46d), color-stop(100%, #29a03b)); background-image: -webkit-linear-gradient(top, #5bd46d 0%, #29a03b 100%); background-image: linear-gradient(to bottom, #5bd46d 0%, #29a03b 100%); } .btn-positive:active { background-color: #34c84a; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #34c84a), color-stop(100%, #248b34)); background-image: -webkit-linear-gradient(top, #34c84a 0%, #248b34 100%); background-image: linear-gradient(to bottom, #34c84a 0%, #248b34 100%); } .btn-negative { border-color: #fb2f29; border-bottom-color: #fb1710; background-color: #fd918d; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fd918d), color-stop(100%, #fb2f29)); background-image: -webkit-linear-gradient(top, #fd918d 0%, #fb2f29 100%); background-image: linear-gradient(to bottom, #fd918d 0%, #fb2f29 100%); } .btn-negative:active { background-color: #fc605b; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fc605b), color-stop(100%, #fb1710)); background-image: -webkit-linear-gradient(top, #fc605b 0%, #fb1710 100%); background-image: linear-gradient(to bottom, #fc605b 0%, #fb1710 100%); } .btn-warning { border-color: #fcaa0e; border-bottom-color: #ee9d02; background-color: #fece72; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fece72), color-stop(100%, #fcaa0e)); background-image: -webkit-linear-gradient(top, #fece72 0%, #fcaa0e 100%); background-image: linear-gradient(to bottom, #fece72 0%, #fcaa0e 100%); } .btn-warning:active { background-color: #fdbc40; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fdbc40), color-stop(100%, #ee9d02)); background-image: -webkit-linear-gradient(top, #fdbc40 0%, #ee9d02 100%); background-image: linear-gradient(to bottom, #fdbc40 0%, #ee9d02 100%); } .btn .icon { float: left; width: 14px; height: 14px; margin-top: 1px; margin-bottom: 1px; color: #737475; font-size: 14px; line-height: 1; } .btn .icon-text { margin-right: 5px; } .btn-dropdown:after { font-family: "photon-entypo"; margin-left: 5px; content: '\e873'; } .btn-group { position: relative; display: inline-block; vertical-align: middle; -webkit-app-region: no-drag; } .btn-group .btn { position: relative; float: left; } .btn-group .btn:focus, .btn-group .btn:active { z-index: 2; } .btn-group .btn.active { z-index: 3; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-group > .btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group .btn + .btn { border-left: 1px solid #c2c0c2; } .btn-group .btn + .btn.active { border-left: 0; } .btn-group .active { color: #fff; border: 1px solid transparent; background-color: #6d6c6d; background-image: none; } .btn-group .active .icon { color: #fff; } .toolbar { min-height: 22px; box-shadow: inset 0 1px 0 #f5f4f5; background-color: #e8e6e8; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #e8e6e8), color-stop(100%, #d1cfd1)); background-image: -webkit-linear-gradient(top, #e8e6e8 0%, #d1cfd1 100%); background-image: linear-gradient(to bottom, #e8e6e8 0%, #d1cfd1 100%); } .toolbar:before, .toolbar:after { display: table; content: " "; } .toolbar:after { clear: both; } .toolbar-header { border-bottom: 1px solid #c2c0c2; } .toolbar-header .title { margin-top: 1px; } .toolbar-footer { border-top: 1px solid #c2c0c2; -webkit-app-region: drag; } .title { margin: 0; font-size: 12px; font-weight: 400; text-align: center; color: #555; cursor: default; } .toolbar-borderless { border-top: 0; border-bottom: 0; } .toolbar-actions { margin-top: 4px; margin-bottom: 3px; padding-right: 3px; padding-left: 3px; padding-bottom: 3px; -webkit-app-region: drag; } .toolbar-actions:before, .toolbar-actions:after { display: table; content: " "; } .toolbar-actions:after { clear: both; } .toolbar-actions > .btn, .toolbar-actions > .btn-group { margin-left: 4px; margin-right: 4px; } label { display: inline-block; font-size: 13px; margin-bottom: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } input[type="search"] { box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; line-height: normal; } .form-control { display: inline-block; width: 100%; min-height: 25px; padding: 5px 10px; font-size: 13px; line-height: 1.6; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; outline: none; } .form-control:focus { border-color: #6db3fd; box-shadow: 0 0 0 3px #6db3fd; } textarea { height: auto; } .form-group { margin-bottom: 10px; } .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; } .radio label, .checkbox label { padding-left: 20px; margin-bottom: 0; font-weight: normal; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-left: -20px; margin-top: 4px; } .form-actions .btn { margin-right: 10px; } .form-actions .btn:last-child { margin-right: 0; } .pane-group { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; } .pane { position: relative; overflow-y: auto; flex: 1; border-left: 1px solid #ddd; } .pane:first-child { border-left: 0; } .pane-sm { max-width: 220px; min-width: 150px; } .pane-mini { width: 80px; flex: none; } .pane-one-fourth { width: 25%; flex: none; } .pane-one-third { width: 33.3%; flex: none; } img { -webkit-user-drag: text; } .img-circle { border-radius: 50%; } .img-rounded { border-radius: 4px; } .list-group { width: 100%; list-style: none; margin: 0; padding: 0; } .list-group * { margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .list-group-item { padding: 10px; font-size: 12px; color: #414142; border-top: 1px solid #ddd; } .list-group-item:first-child { border-top: 0; } .list-group-item.active, .list-group-item.selected { color: #fff; background-color: #116cd6; } .list-group-header { padding: 10px; } .media-object { margin-top: 3px; } .media-object.pull-left { margin-right: 10px; } .media-object.pull-right { margin-left: 10px; } .media-body { overflow: hidden; } .nav-group { font-size: 14px; } .nav-group-item { padding: 2px 10px 2px 25px; display: block; color: #333; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nav-group-item:active, .nav-group-item.active { background-color: #dcdfe1; } .nav-group-item .icon { width: 19px; height: 18px; float: left; color: #737475; margin-top: -3px; margin-right: 7px; font-size: 18px; text-align: center; } .nav-group-title { margin: 0; padding: 10px 10px 2px; font-size: 12px; font-weight: 500; color: #666666; } @font-face { font-family: "photon-entypo"; src: url("../fonts/photon-entypo.eot"); src: url("../fonts/photon-entypo.eot?#iefix") format("eot"), url("../fonts/photon-entypo.woff") format("woff"), url("../fonts/photon-entypo.ttf") format("truetype"); font-weight: normal; font-style: normal; } .icon:before { position: relative; display: inline-block; font-family: "photon-entypo"; speak: none; font-size: 100%; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-note:before { content: '\e800'; } /* '' */ .icon-note-beamed:before { content: '\e801'; } /* '' */ .icon-music:before { content: '\e802'; } /* '' */ .icon-search:before { content: '\e803'; } /* '' */ .icon-flashlight:before { content: '\e804'; } /* '' */ .icon-mail:before { content: '\e805'; } /* '' */ .icon-heart:before { content: '\e806'; } /* '' */ .icon-heart-empty:before { content: '\e807'; } /* '' */ .icon-star:before { content: '\e808'; } /* '' */ .icon-star-empty:before { content: '\e809'; } /* '' */ .icon-user:before { content: '\e80a'; } /* '' */ .icon-users:before { content: '\e80b'; } /* '' */ .icon-user-add:before { content: '\e80c'; } /* '' */ .icon-video:before { content: '\e80d'; } /* '' */ .icon-picture:before { content: '\e80e'; } /* '' */ .icon-camera:before { content: '\e80f'; } /* '' */ .icon-layout:before { content: '\e810'; } /* '' */ .icon-menu:before { content: '\e811'; } /* '' */ .icon-check:before { content: '\e812'; } /* '' */ .icon-cancel:before { content: '\e813'; } /* '' */ .icon-cancel-circled:before { content: '\e814'; } /* '' */ .icon-cancel-squared:before { content: '\e815'; } /* '' */ .icon-plus:before { content: '\e816'; } /* '' */ .icon-plus-circled:before { content: '\e817'; } /* '' */ .icon-plus-squared:before { content: '\e818'; } /* '' */ .icon-minus:before { content: '\e819'; } /* '' */ .icon-minus-circled:before { content: '\e81a'; } /* '' */ .icon-minus-squared:before { content: '\e81b'; } /* '' */ .icon-help:before { content: '\e81c'; } /* '' */ .icon-help-circled:before { content: '\e81d'; } /* '' */ .icon-info:before { content: '\e81e'; } /* '' */ .icon-info-circled:before { content: '\e81f'; } /* '' */ .icon-back:before { content: '\e820'; } /* '' */ .icon-home:before { content: '\e821'; } /* '' */ .icon-link:before { content: '\e822'; } /* '' */ .icon-attach:before { content: '\e823'; } /* '' */ .icon-lock:before { content: '\e824'; } /* '' */ .icon-lock-open:before { content: '\e825'; } /* '' */ .icon-eye:before { content: '\e826'; } /* '' */ .icon-tag:before { content: '\e827'; } /* '' */ .icon-bookmark:before { content: '\e828'; } /* '' */ .icon-bookmarks:before { content: '\e829'; } /* '' */ .icon-flag:before { content: '\e82a'; } /* '' */ .icon-thumbs-up:before { content: '\e82b'; } /* '' */ .icon-thumbs-down:before { content: '\e82c'; } /* '' */ .icon-download:before { content: '\e82d'; } /* '' */ .icon-upload:before { content: '\e82e'; } /* '' */ .icon-upload-cloud:before { content: '\e82f'; } /* '' */ .icon-reply:before { content: '\e830'; } /* '' */ .icon-reply-all:before { content: '\e831'; } /* '' */ .icon-forward:before { content: '\e832'; } /* '' */ .icon-quote:before { content: '\e833'; } /* '' */ .icon-code:before { content: '\e834'; } /* '' */ .icon-export:before { content: '\e835'; } /* '' */ .icon-pencil:before { content: '\e836'; } /* '' */ .icon-feather:before { content: '\e837'; } /* '' */ .icon-print:before { content: '\e838'; } /* '' */ .icon-retweet:before { content: '\e839'; } /* '' */ .icon-keyboard:before { content: '\e83a'; } /* '' */ .icon-comment:before { content: '\e83b'; } /* '' */ .icon-chat:before { content: '\e83c'; } /* '' */ .icon-bell:before { content: '\e83d'; } /* '' */ .icon-attention:before { content: '\e83e'; } /* '' */ .icon-alert:before { content: '\e83f'; } /* '' */ .icon-vcard:before { content: '\e840'; } /* '' */ .icon-address:before { content: '\e841'; } /* '' */ .icon-location:before { content: '\e842'; } /* '' */ .icon-map:before { content: '\e843'; } /* '' */ .icon-direction:before { content: '\e844'; } /* '' */ .icon-compass:before { content: '\e845'; } /* '' */ .icon-cup:before { content: '\e846'; } /* '' */ .icon-trash:before { content: '\e847'; } /* '' */ .icon-doc:before { content: '\e848'; } /* '' */ .icon-docs:before { content: '\e849'; } /* '' */ .icon-doc-landscape:before { content: '\e84a'; } /* '' */ .icon-doc-text:before { content: '\e84b'; } /* '' */ .icon-doc-text-inv:before { content: '\e84c'; } /* '' */ .icon-newspaper:before { content: '\e84d'; } /* '' */ .icon-book-open:before { content: '\e84e'; } /* '' */ .icon-book:before { content: '\e84f'; } /* '' */ .icon-folder:before { content: '\e850'; } /* '' */ .icon-archive:before { content: '\e851'; } /* '' */ .icon-box:before { content: '\e852'; } /* '' */ .icon-rss:before { content: '\e853'; } /* '' */ .icon-phone:before { content: '\e854'; } /* '' */ .icon-cog:before { content: '\e855'; } /* '' */ .icon-tools:before { content: '\e856'; } /* '' */ .icon-share:before { content: '\e857'; } /* '' */ .icon-shareable:before { content: '\e858'; } /* '' */ .icon-basket:before { content: '\e859'; } /* '' */ .icon-bag:before { content: '\e85a'; } /* '' */ .icon-calendar:before { content: '\e85b'; } /* '' */ .icon-login:before { content: '\e85c'; } /* '' */ .icon-logout:before { content: '\e85d'; } /* '' */ .icon-mic:before { content: '\e85e'; } /* '' */ .icon-mute:before { content: '\e85f'; } /* '' */ .icon-sound:before { content: '\e860'; } /* '' */ .icon-volume:before { content: '\e861'; } /* '' */ .icon-clock:before { content: '\e862'; } /* '' */ .icon-hourglass:before { content: '\e863'; } /* '' */ .icon-lamp:before { content: '\e864'; } /* '' */ .icon-light-down:before { content: '\e865'; } /* '' */ .icon-light-up:before { content: '\e866'; } /* '' */ .icon-adjust:before { content: '\e867'; } /* '' */ .icon-block:before { content: '\e868'; } /* '' */ .icon-resize-full:before { content: '\e869'; } /* '' */ .icon-resize-small:before { content: '\e86a'; } /* '' */ .icon-popup:before { content: '\e86b'; } /* '' */ .icon-publish:before { content: '\e86c'; } /* '' */ .icon-window:before { content: '\e86d'; } /* '' */ .icon-arrow-combo:before { content: '\e86e'; } /* '' */ .icon-down-circled:before { content: '\e86f'; } /* '' */ .icon-left-circled:before { content: '\e870'; } /* '' */ .icon-right-circled:before { content: '\e871'; } /* '' */ .icon-up-circled:before { content: '\e872'; } /* '' */ .icon-down-open:before { content: '\e873'; } /* '' */ .icon-left-open:before { content: '\e874'; } /* '' */ .icon-right-open:before { content: '\e875'; } /* '' */ .icon-up-open:before { content: '\e876'; } /* '' */ .icon-down-open-mini:before { content: '\e877'; } /* '' */ .icon-left-open-mini:before { content: '\e878'; } /* '' */ .icon-right-open-mini:before { content: '\e879'; } /* '' */ .icon-up-open-mini:before { content: '\e87a'; } /* '' */ .icon-down-open-big:before { content: '\e87b'; } /* '' */ .icon-left-open-big:before { content: '\e87c'; } /* '' */ .icon-right-open-big:before { content: '\e87d'; } /* '' */ .icon-up-open-big:before { content: '\e87e'; } /* '' */ .icon-down:before { content: '\e87f'; } /* '' */ .icon-left:before { content: '\e880'; } /* '' */ .icon-right:before { content: '\e881'; } /* '' */ .icon-up:before { content: '\e882'; } /* '' */ .icon-down-dir:before { content: '\e883'; } /* '' */ .icon-left-dir:before { content: '\e884'; } /* '' */ .icon-right-dir:before { content: '\e885'; } /* '' */ .icon-up-dir:before { content: '\e886'; } /* '' */ .icon-down-bold:before { content: '\e887'; } /* '' */ .icon-left-bold:before { content: '\e888'; } /* '' */ .icon-right-bold:before { content: '\e889'; } /* '' */ .icon-up-bold:before { content: '\e88a'; } /* '' */ .icon-down-thin:before { content: '\e88b'; } /* '' */ .icon-left-thin:before { content: '\e88c'; } /* '' */ .icon-right-thin:before { content: '\e88d'; } /* '' */ .icon-up-thin:before { content: '\e88e'; } /* '' */ .icon-ccw:before { content: '\e88f'; } /* '' */ .icon-cw:before { content: '\e890'; } /* '' */ .icon-arrows-ccw:before { content: '\e891'; } /* '' */ .icon-level-down:before { content: '\e892'; } /* '' */ .icon-level-up:before { content: '\e893'; } /* '' */ .icon-shuffle:before { content: '\e894'; } /* '' */ .icon-loop:before { content: '\e895'; } /* '' */ .icon-switch:before { content: '\e896'; } /* '' */ .icon-play:before { content: '\e897'; } /* '' */ .icon-stop:before { content: '\e898'; } /* '' */ .icon-pause:before { content: '\e899'; } /* '' */ .icon-record:before { content: '\e89a'; } /* '' */ .icon-to-end:before { content: '\e89b'; } /* '' */ .icon-to-start:before { content: '\e89c'; } /* '' */ .icon-fast-forward:before { content: '\e89d'; } /* '' */ .icon-fast-backward:before { content: '\e89e'; } /* '' */ .icon-progress-0:before { content: '\e89f'; } /* '' */ .icon-progress-1:before { content: '\e8a0'; } /* '' */ .icon-progress-2:before { content: '\e8a1'; } /* '' */ .icon-progress-3:before { content: '\e8a2'; } /* '' */ .icon-target:before { content: '\e8a3'; } /* '' */ .icon-palette:before { content: '\e8a4'; } /* '' */ .icon-list:before { content: '\e8a5'; } /* '' */ .icon-list-add:before { content: '\e8a6'; } /* '' */ .icon-signal:before { content: '\e8a7'; } /* '' */ .icon-trophy:before { content: '\e8a8'; } /* '' */ .icon-battery:before { content: '\e8a9'; } /* '' */ .icon-back-in-time:before { content: '\e8aa'; } /* '' */ .icon-monitor:before { content: '\e8ab'; } /* '' */ .icon-mobile:before { content: '\e8ac'; } /* '' */ .icon-network:before { content: '\e8ad'; } /* '' */ .icon-cd:before { content: '\e8ae'; } /* '' */ .icon-inbox:before { content: '\e8af'; } /* '' */ .icon-install:before { content: '\e8b0'; } /* '' */ .icon-globe:before { content: '\e8b1'; } /* '' */ .icon-cloud:before { content: '\e8b2'; } /* '' */ .icon-cloud-thunder:before { content: '\e8b3'; } /* '' */ .icon-flash:before { content: '\e8b4'; } /* '' */ .icon-moon:before { content: '\e8b5'; } /* '' */ .icon-flight:before { content: '\e8b6'; } /* '' */ .icon-paper-plane:before { content: '\e8b7'; } /* '' */ .icon-leaf:before { content: '\e8b8'; } /* '' */ .icon-lifebuoy:before { content: '\e8b9'; } /* '' */ .icon-mouse:before { content: '\e8ba'; } /* '' */ .icon-briefcase:before { content: '\e8bb'; } /* '' */ .icon-suitcase:before { content: '\e8bc'; } /* '' */ .icon-dot:before { content: '\e8bd'; } /* '' */ .icon-dot-2:before { content: '\e8be'; } /* '' */ .icon-dot-3:before { content: '\e8bf'; } /* '' */ .icon-brush:before { content: '\e8c0'; } /* '' */ .icon-magnet:before { content: '\e8c1'; } /* '' */ .icon-infinity:before { content: '\e8c2'; } /* '' */ .icon-erase:before { content: '\e8c3'; } /* '' */ .icon-chart-pie:before { content: '\e8c4'; } /* '' */ .icon-chart-line:before { content: '\e8c5'; } /* '' */ .icon-chart-bar:before { content: '\e8c6'; } /* '' */ .icon-chart-area:before { content: '\e8c7'; } /* '' */ .icon-tape:before { content: '\e8c8'; } /* '' */ .icon-graduation-cap:before { content: '\e8c9'; } /* '' */ .icon-language:before { content: '\e8ca'; } /* '' */ .icon-ticket:before { content: '\e8cb'; } /* '' */ .icon-water:before { content: '\e8cc'; } /* '' */ .icon-droplet:before { content: '\e8cd'; } /* '' */ .icon-air:before { content: '\e8ce'; } /* '' */ .icon-credit-card:before { content: '\e8cf'; } /* '' */ .icon-floppy:before { content: '\e8d0'; } /* '' */ .icon-clipboard:before { content: '\e8d1'; } /* '' */ .icon-megaphone:before { content: '\e8d2'; } /* '' */ .icon-database:before { content: '\e8d3'; } /* '' */ .icon-drive:before { content: '\e8d4'; } /* '' */ .icon-bucket:before { content: '\e8d5'; } /* '' */ .icon-thermometer:before { content: '\e8d6'; } /* '' */ .icon-key:before { content: '\e8d7'; } /* '' */ .icon-flow-cascade:before { content: '\e8d8'; } /* '' */ .icon-flow-branch:before { content: '\e8d9'; } /* '' */ .icon-flow-tree:before { content: '\e8da'; } /* '' */ .icon-flow-line:before { content: '\e8db'; } /* '' */ .icon-flow-parallel:before { content: '\e8dc'; } /* '' */ .icon-rocket:before { content: '\e8dd'; } /* '' */ .icon-gauge:before { content: '\e8de'; } /* '' */ .icon-traffic-cone:before { content: '\e8df'; } /* '' */ .icon-cc:before { content: '\e8e0'; } /* '' */ .icon-cc-by:before { content: '\e8e1'; } /* '' */ .icon-cc-nc:before { content: '\e8e2'; } /* '' */ .icon-cc-nc-eu:before { content: '\e8e3'; } /* '' */ .icon-cc-nc-jp:before { content: '\e8e4'; } /* '' */ .icon-cc-sa:before { content: '\e8e5'; } /* '' */ .icon-cc-nd:before { content: '\e8e6'; } /* '' */ .icon-cc-pd:before { content: '\e8e7'; } /* '' */ .icon-cc-zero:before { content: '\e8e8'; } /* '' */ .icon-cc-share:before { content: '\e8e9'; } /* '' */ .icon-cc-remix:before { content: '\e8ea'; } /* '' */ .icon-github:before { content: '\e8eb'; } /* '' */ .icon-github-circled:before { content: '\e8ec'; } /* '' */ .icon-flickr:before { content: '\e8ed'; } /* '' */ .icon-flickr-circled:before { content: '\e8ee'; } /* '' */ .icon-vimeo:before { content: '\e8ef'; } /* '' */ .icon-vimeo-circled:before { content: '\e8f0'; } /* '' */ .icon-twitter:before { content: '\e8f1'; } /* '' */ .icon-twitter-circled:before { content: '\e8f2'; } /* '' */ .icon-facebook:before { content: '\e8f3'; } /* '' */ .icon-facebook-circled:before { content: '\e8f4'; } /* '' */ .icon-facebook-squared:before { content: '\e8f5'; } /* '' */ .icon-gplus:before { content: '\e8f6'; } /* '' */ .icon-gplus-circled:before { content: '\e8f7'; } /* '' */ .icon-pinterest:before { content: '\e8f8'; } /* '' */ .icon-pinterest-circled:before { content: '\e8f9'; } /* '' */ .icon-tumblr:before { content: '\e8fa'; } /* '' */ .icon-tumblr-circled:before { content: '\e8fb'; } /* '' */ .icon-linkedin:before { content: '\e8fc'; } /* '' */ .icon-linkedin-circled:before { content: '\e8fd'; } /* '' */ .icon-dribbble:before { content: '\e8fe'; } /* '' */ .icon-dribbble-circled:before { content: '\e8ff'; } /* '' */ .icon-stumbleupon:before { content: '\e900'; } /* '' */ .icon-stumbleupon-circled:before { content: '\e901'; } /* '' */ .icon-lastfm:before { content: '\e902'; } /* '' */ .icon-lastfm-circled:before { content: '\e903'; } /* '' */ .icon-rdio:before { content: '\e904'; } /* '' */ .icon-rdio-circled:before { content: '\e905'; } /* '' */ .icon-spotify:before { content: '\e906'; } /* '' */ .icon-spotify-circled:before { content: '\e907'; } /* '' */ .icon-qq:before { content: '\e908'; } /* '' */ .icon-instagram:before { content: '\e909'; } /* '' */ .icon-dropbox:before { content: '\e90a'; } /* '' */ .icon-evernote:before { content: '\e90b'; } /* '' */ .icon-flattr:before { content: '\e90c'; } /* '' */ .icon-skype:before { content: '\e90d'; } /* '' */ .icon-skype-circled:before { content: '\e90e'; } /* '' */ .icon-renren:before { content: '\e90f'; } /* '' */ .icon-sina-weibo:before { content: '\e910'; } /* '' */ .icon-paypal:before { content: '\e911'; } /* '' */ .icon-picasa:before { content: '\e912'; } /* '' */ .icon-soundcloud:before { content: '\e913'; } /* '' */ .icon-mixi:before { content: '\e914'; } /* '' */ .icon-behance:before { content: '\e915'; } /* '' */ .icon-google-circles:before { content: '\e916'; } /* '' */ .icon-vkontakte:before { content: '\e917'; } /* '' */ .icon-smashing:before { content: '\e918'; } /* '' */ .icon-sweden:before { content: '\e919'; } /* '' */ .icon-db-shape:before { content: '\e91a'; } /* '' */ .icon-logo-db:before { content: '\e91b'; } /* '' */ table { width: 100%; border: 0; border-collapse: separate; font-size: 12px; text-align: left; } thead { background-color: #f5f5f4; } tbody { background-color: #fff; } .table-striped tr:nth-child(even) { background-color: #f5f5f4; } tr:active, .table-striped tr:active:nth-child(even) { color: #fff; background-color: #116cd6; } thead tr:active { color: #333; background-color: #f5f5f4; } th { font-weight: normal; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd; } th, td { padding: 2px 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } th:last-child, td:last-child { border-right: 0; } .tab-group { margin-top: -1px; display: flex; border-top: 1px solid #989698; border-bottom: 1px solid #989698; } .tab-item { position: relative; flex: 1; padding: 3px; font-size: 12px; text-align: center; border-left: 1px solid #989698; background-color: #b8b6b8; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b8b6b8), color-stop(100%, #b0aeb0)); background-image: -webkit-linear-gradient(top, #b8b6b8 0%, #b0aeb0 100%); background-image: linear-gradient(to bottom, #b8b6b8 0%, #b0aeb0 100%); } .tab-item:first-child { border-left: 0; } .tab-item.active { background-color: #d4d2d4; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #d4d2d4), color-stop(100%, #cccacc)); background-image: -webkit-linear-gradient(top, #d4d2d4 0%, #cccacc 100%); background-image: linear-gradient(to bottom, #d4d2d4 0%, #cccacc 100%); } .tab-item .icon-close-tab { position: absolute; top: 50%; left: 5px; width: 15px; height: 15px; font-size: 15px; line-height: 15px; text-align: center; color: #666; opacity: 0; transition: opacity .1s linear, background-color .1s linear; border-radius: 3px; transform: translateY(-50%); z-index: 10; } .tab-item:after { position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ""; background-color: rgba(0, 0, 0, 0.08); opacity: 0; transition: opacity .1s linear; z-index: 1; } .tab-item:hover:not(.active):after { opacity: 1; } .tab-item:hover .icon-close-tab { opacity: 1; } .tab-item .icon-close-tab:hover { background-color: rgba(0, 0, 0, 0.08); } .tab-item-fixed { flex: none; padding: 3px 10px; } ================================================ FILE: dist/template-app/app.js ================================================ // {app} Module to control application life. // {BrowserWindow} Module to create native browser window. const {app, BrowserWindow} = require('electron') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. var mainWindow = null; // Quit when all windows are closed. app.on('window-all-closed', function() { // On OS X it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform != 'darwin') { app.quit(); } }); // This method will be called when Electron has finished // initialization and is ready to create browser windows. app.on('ready', function() { // Create the browser window. mainWindow = new BrowserWindow({ width: 800, height: 600, minWidth: 500, minHeight: 200, acceptFirstMouse: true, titleBarStyle: 'hidden', frame: false }); // and load the index.html of the app. mainWindow.loadURL('file://' + __dirname + '/index.html'); // Open the DevTools. //mainWindow.openDevTools(); // Emitted when the window is closed. mainWindow.on('closed', function() { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null; }); }); ================================================ FILE: dist/template-app/index.html ================================================ Photon

Photon

Name Kind Date Modified Author
bars.scss Document Oct 13, 2015 connors
base.scss Document Oct 13, 2015 connors
button-groups.scss Document Oct 13, 2015 connors
buttons.scss Document Oct 13, 2015 connors
docs.scss Document Oct 13, 2015 connors
forms.scss Document Oct 13, 2015 connors
grid.scss Document Oct 13, 2015 connors
icons.scss Document Oct 13, 2015 connors
images.scss Document Oct 13, 2015 connors
lists.scss Document Oct 13, 2015 connors
mixins.scss Document Oct 13, 2015 connors
navs.scss Document Oct 13, 2015 connors
normalize.scss Document Oct 13, 2015 connors
photon.scss Document Oct 13, 2015 connors
tables.scss Document Oct 13, 2015 connors
tabs.scss Document Oct 13, 2015 connors
utilities.scss Document Oct 13, 2015 connors
variables.scss Document Oct 13, 2015 connors
================================================ FILE: dist/template-app/js/menu.js ================================================ // var remote = require('remote') // var Menu = remote.require('menu') // var MenuItem = remote.require('menu-item') const {remote} = require('electron') const {Menu,MenuItem} = remote // Build our new menu var menu = new Menu() menu.append(new MenuItem({ label: 'Delete', click: function() { // Trigger an alert when menu item is clicked alert('Deleted') } })) menu.append(new MenuItem({ label: 'More Info...', click: function() { // Trigger an alert when menu item is clicked alert('Here is more information') } })) // Add the listener document.addEventListener('DOMContentLoaded', function () { let filesContext = document.querySelectorAll('.file_arq'); filesContext.forEach(function(el){ el.addEventListener('click', function (event) { event.preventDefault() menu.popup(remote.getCurrentWindow()); }) }) }) ================================================ FILE: dist/template-app/package.json ================================================ { "name": "proton-template-app", "version": "1.0.0", "description": "A simple template app for Proton", "main": "app.js", "author": "Connor Sears", "scripts": { "start": "electron ." } } ================================================ FILE: docs/LICENSE ================================================ Creative Commons Legal Code Attribution 3.0 Unported CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. License THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 1. Definitions a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. c. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. d. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. e. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. f. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. g. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. h. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. i. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, d. to Distribute and Publicly Perform Adaptations. e. For the avoidance of doubt: i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. b. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. 5. Representations, Warranties and Disclaimer UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. Termination a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. 8. Miscellaneous a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. Creative Commons Notice Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License. Creative Commons may be contacted at http://creativecommons.org/. ================================================ FILE: docs/_includes/footer.html ================================================ ================================================ FILE: docs/_includes/header.html ================================================ {{ page.title }} ================================================ FILE: docs/_includes/javascript.html ================================================ ================================================ FILE: docs/_includes/nav.html ================================================ ================================================ FILE: docs/_layouts/default.html ================================================ {% include header.html %} {{ content }} {% include footer.html %} {% include javascript.html %} ================================================ FILE: docs/assets/css/docs.css ================================================ @charset "UTF-8"; * { -webkit-box-sizing: border-box; box-sizing: border-box; } body { font: 16px/1.7 "Roboto", "Helvetica Neue", Helvetica, arial, sans-serif; font-weight: 300; color: #333; } h1, h2, h3, h4, h5, h6 { margin-top: 0; font-weight: 300; } h2 { margin-bottom: .18em; font-size: 1.6em; } h3 { margin-bottom: .15em; font-size: 1.3em; } h5 { font-weight: 400; } p { margin-top: .5em; margin-bottom: .5em; font-size: 1em; color: #555; } .download-decription { margin-bottom: 1em; } .lead { font-size: 1.1em; color: #777; } a { color: #4b92c6; text-decoration: none; } .highlight { margin: 0; font-size: .9em; } .btn { display: inline-block; padding: 10px 15px; margin-bottom: 0; font-size: 14px; line-height: 1; text-align: center; white-space: nowrap; vertical-align: middle; text-decoration: none; color: #666; background-image: none; border: 1px solid #ddd; border-radius: 4px; transition: all .2s linear; } .btn:hover { border-color: #999; } .btn-components, .btn-download { margin-right: 1rem; margin-left: 1rem; padding: 12px 30px; display: block; } .btn-download { margin-bottom: 1rem; color: #0f2b3c; border-color: transparent; background-color: rgba(255, 255, 255, 0.9); } .btn-download:hover { border-color: transparent; background-color: #fff; } @media (min-width: 32em) { .btn-components, .btn-download { margin-right: 0; margin-left: 0; display: inline-block; } .btn-download { margin-right: 1rem; margin-bottom: 0; margin-left: 0; } } .btn-inversed { color: #fff; border-color: rgba(255, 255, 255, 0.7); } .btn-inversed:hover { border-color: #fff; } .container { margin-left: auto; margin-right: auto; padding-left: 1rem; padding-right: 1rem; } .container:before, .container:after { display: table; content: " "; } .container:after { clear: both; } .col { position: relative; padding: 3rem 1rem; } @media (min-width: 32em) { .container { padding-left: 0; padding-right: 0; max-width: 65rem; } .col-group { display: -webkit-flex; display: -ms-flex; display: flex; } .col { min-width: 0; padding-right: 3rem; padding-left: 3rem; flex: 1; } .col-one-third { max-width: 33.333%; } } .masthead { position: relative; padding-bottom: 80px; color: #fff; background-image: url("/assets/img/photo-couch.png"); background-size: cover; } .masthead:after { position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ""; background-color: #000; opacity: .25; z-index: 1; } .masthead-content { position: relative; margin-top: 50px; z-index: 10; } .masthead-title { margin: 0; padding: 0 1rem 1.5rem; font-size: 1.5em; text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); } @media (min-width: 32em) { .masthead { background-position: center; } .masthead:after { display: none; } .masthead-title { padding: 0 8rem 3rem; font-size: 2.1em; } } .photo-credit { position: absolute; left: 50%; bottom: 1em; font-size: .8em; color: #fff; white-space: nowrap; transform: translatex(-50%); transition: opacity .15s linear; opacity: .5; z-index: 10; } .photo-credit:hover { opacity: .9; } .sub-masthead { color: #fff; text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); background-color: #000; background-image: -webkit-gradient(linear, left bottom, right top, color-stop(0%, #000), color-stop(100%, #0f2b3c)); background-image: -webkit-linear-gradient(45deg, #000 0%, #0f2b3c 100%); background-image: -moz-linear-gradient(45deg, #000 0%, #0f2b3c 100%); background-image: linear-gradient(45deg, #000 0%, #0f2b3c 100%); } .subpage-header-content { padding: 2.5rem 1rem 3rem; } @media (min-width: 32em) { .subpage-header-content { padding: 3rem 3rem 4rem; } } .subpage-title { margin-top: 0; margin-bottom: 0; font-weight: 300; } .subpage-lead { margin-top: 0; margin-bottom: 0; color: #fff; font-size: 1.3em; font-weight: 300; opacity: .8; } .nav { position: relative; padding-top: 1.2rem; padding-bottom: 1.2rem; margin-left: 1rem; margin-right: 1rem; display: block; font-weight: 500; border-bottom: 1px solid rgba(255, 255, 255, 0.2); z-index: 10; } .nav:before, .nav:after { display: table; content: " "; } .nav:after { clear: both; } .title { display: block; font-size: 1em; color: #fff; } .nav-item { margin-right: .7rem; font-size: .8em; color: #fff; line-height: 1; opacity: .7; transition: opacity .15s linear; } .nav-item:hover { opacity: 1; } .nav-group { display: block; } @media (min-width: 32em) { .nav { margin-left: 3rem; margin-right: 3rem; } .title { float: left; } .nav-group { margin-top: .5em; float: right; } .nav-item { margin-right: 3rem; float: left; } .nav-item:last-child { margin-right: 0; } } .example-component-window { height: 300px; overflow: hidden; box-shadow: 0 0 30px rgba(0, 0, 0, 0.1); border: 1px solid #bebebe; border-radius: 6px; } @media (min-width: 32em) { .example-component-container { position: -webkit-sticky; position: -moz-sticky; position: -ms-sticky; position: -o-sticky; position: sticky; top: 3rem; min-width: 310px; margin-bottom: 3rem; } } .demo-app-container { height: 450px; margin-right: 3rem; margin-bottom: 3rem; margin-left: 3rem; display: none; border-radius: 6px; overflow: hidden; box-shadow: 0 0 60px rgba(0, 0, 0, 0.3); } @media (min-width: 32em) { .demo-app-container { display: block; } } .demo-app, .component-example { width: 100%; height: 100%; display: block; border: 0; } .docs-section { border-bottom: 1px solid #ddd; } .docs-section-gray { background-color: #f8f8f8; } @media (min-width: 32em) { .basic-template-section { border-top: 1px solid #ddd; } } .oss-section { position: relative; color: #fff; text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); background-color: #000; background-image: -webkit-gradient(linear, left bottom, right top, color-stop(0%, #000), color-stop(100%, #0f2b3c)); background-image: -webkit-linear-gradient(45deg, #000 0%, #0f2b3c 100%); background-image: -moz-linear-gradient(45deg, #000 0%, #0f2b3c 100%); background-image: linear-gradient(45deg, #000 0%, #0f2b3c 100%); } .oss-section a:not(.btn) { color: #fff; } .oss-section p { color: #cccccc; } .oss-section .btn { margin-top: 20px; } .oss-section .col:last-child { padding-top: 0; } @media (min-width: 32em) { .oss-section .col:last-child { padding-top: 3rem; } } .component-section { margin-bottom: 1rem; border-bottom: 1px solid #ddd; } .component-section.last-component-section { margin-bottom: 0; } .component-section .col:last-child { padding-top: 0; } @media (min-width: 32em) { .component-section { margin-bottom: 0; border-bottom: 0; background-color: #fff; background-image: -webkit-gradient(linear, left top, right top, color-stop(50%, #fff), color-stop(50%, #f5f5f5)); background-image: -webkit-linear-gradient(left, #fff 50%, #f5f5f5 50%); background-image: linear-gradient(to right, #fff 50%, #f5f5f5 50%); } .component-section .col { padding-top: 3rem; border-left: 1px solid #ddd; } .component-section .col:first-child { border-left: 0; } .component-section .col:last-child { padding-top: 3rem; padding-bottom: 0; } } .component-description { margin-bottom: 2rem; } .footer { margin-top: -1px; border-top: 1px solid #ddd; } .footer-content { font-size: .8em; font-weight: 500; opacity: .8; } .footer-links { padding-left: 0; list-style: none; } .footer-links li { display: inline-block; } @media (min-width: 32em) { .footer-content { margin-right: 5rem; margin-left: 5rem; } } .text-centered { text-align: center; } .docs-hr { margin-top: 2rem; margin-bottom: 2rem; background: 0 0; border: 0; border-bottom: 1px solid #ddd; } @font-face { font-family: "photon-entypo"; src: url("/dist/fonts/photon-entypo.eot"); src: url("/dist/fonts/photon-entypo.eot?#iefix") format("eot"), url("/dist/fonts/photon-entypo.woff") format("woff"), url("/dist/fonts/photon-entypo.ttf") format("truetype"); font-weight: normal; font-style: normal; } .icon:before { position: relative; display: inline-block; font-family: "photon-entypo"; speak: none; font-size: 100%; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-bucket:before { content: '\e8d5'; } /* '' */ .icon-code:before { content: '\e834'; } /* '' */ .icon-window:before { content: '\e86d'; } /* '' */ .buttons-component { height: 80px; } .button-groups-component { height: 110px; } .forms-component { height: 430px; } .icons-component { height: 700px; overflow: hidden; } ================================================ FILE: docs/assets/css/normalize.css ================================================ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ /** * 1. Set default font family to sans-serif. * 2. Prevent iOS and IE text size adjust after device orientation change, * without disabling user zoom. */ html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } /** * Remove default margin. */ body { margin: 0; } /* HTML5 display definitions ========================================================================== */ /** * Correct `block` display not defined for any HTML5 element in IE 8/9. * Correct `block` display not defined for `details` or `summary` in IE 10/11 * and Firefox. * Correct `block` display not defined for `main` in IE 11. */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } /** * 1. Correct `inline-block` display not defined in IE 8/9. * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */ audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ } /** * Prevent modern browsers from displaying `audio` without controls. * Remove excess height in iOS 5 devices. */ audio:not([controls]) { display: none; height: 0; } /** * Address `[hidden]` styling not present in IE 8/9/10. * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. */ [hidden], template { display: none; } /* Links ========================================================================== */ /** * Remove the gray background color from active links in IE 10. */ a { background-color: transparent; } /** * Improve readability of focused elements when they are also in an * active/hover state. */ a:active, a:hover { outline: 0; } /* Text-level semantics ========================================================================== */ /** * Address styling not present in IE 8/9/10/11, Safari, and Chrome. */ abbr[title] { border-bottom: 1px dotted; } /** * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */ b, strong { font-weight: bold; } /** * Address styling not present in Safari and Chrome. */ dfn { font-style: italic; } /** * Address variable `h1` font-size and margin within `section` and `article` * contexts in Firefox 4+, Safari, and Chrome. */ h1 { font-size: 2em; margin: 0.67em 0; } /** * Address styling not present in IE 8/9. */ mark { background: #ff0; color: #000; } /** * Address inconsistent and variable font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } /* Embedded content ========================================================================== */ /** * Remove border when inside `a` element in IE 8/9/10. */ img { border: 0; } /** * Correct overflow not hidden in IE 9/10/11. */ svg:not(:root) { overflow: hidden; } /* Grouping content ========================================================================== */ /** * Address margin not present in IE 8/9 and Safari. */ figure { margin: 1em 40px; } /** * Address differences between Firefox and other browsers. */ hr { box-sizing: content-box; height: 0; } /** * Contain overflow in all browsers. */ pre { overflow: auto; } /** * Address odd `em`-unit font size rendering in all browsers. */ code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } /* Forms ========================================================================== */ /** * Known limitation: by default, Chrome and Safari on OS X allow very limited * styling of `select`, unless a `border` property is set. */ /** * 1. Correct color not being inherited. * Known issue: affects color of disabled elements. * 2. Correct font properties not being inherited. * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */ button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ } /** * Address `overflow` set to `hidden` in IE 8/9/10/11. */ button { overflow: visible; } /** * Address inconsistent `text-transform` inheritance for `button` and `select`. * All other form control elements do not inherit `text-transform` values. * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. * Correct `select` style inheritance in Firefox. */ button, select { text-transform: none; } /** * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` * and `video` controls. * 2. Correct inability to style clickable `input` types in iOS. * 3. Improve usability and consistency of cursor style between image-type * `input` and others. */ button, html input[type="button"], /* 1 */ input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } /** * Re-set default cursor for disabled elements. */ button[disabled], html input[disabled] { cursor: default; } /** * Remove inner padding and border in Firefox 4+. */ button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } /** * Address Firefox 4+ setting `line-height` on `input` using `!important` in * the UA stylesheet. */ input { line-height: normal; } /** * It's recommended that you don't attempt to style these elements. * Firefox's implementation doesn't respect box-sizing, padding, or width. * * 1. Address box sizing set to `content-box` in IE 8/9/10. * 2. Remove excess padding in IE 8/9/10. */ input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } /** * Fix the cursor style for Chrome's increment/decrement buttons. For certain * `font-size` values of the `input`, it causes the cursor style of the * decrement button to change from `default` to `text`. */ input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } /** * 1. Address `appearance` set to `searchfield` in Safari and Chrome. * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. */ input[type="search"] { -webkit-appearance: textfield; /* 1 */ box-sizing: content-box; /* 2 */ } /** * Remove inner padding and search cancel button in Safari and Chrome on OS X. * Safari (but not Chrome) clips the cancel button when the search input has * padding (and `textfield` appearance). */ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * Define consistent border, margin, and padding. */ fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } /** * 1. Correct `color` not being inherited in IE 8/9/10/11. * 2. Remove padding so people aren't caught out if they zero out fieldsets. */ legend { border: 0; /* 1 */ padding: 0; /* 2 */ } /** * Remove default vertical scrollbar in IE 8/9/10/11. */ textarea { overflow: auto; } /** * Don't inherit the `font-weight` (applied by a rule above). * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */ optgroup { font-weight: bold; } /* Tables ========================================================================== */ /** * Remove most spacing between table cells. */ table { border-collapse: collapse; border-spacing: 0; } td, th { padding: 0; } ================================================ FILE: docs/assets/css/pygments-manni.css ================================================ .hll { background-color: #ffffcc } /*{ background: #f0f3f3; }*/ .c { color: #999; } /* Comment */ .err { color: #AA0000; background-color: #FFAAAA } /* Error */ .k { color: #006699; } /* Keyword */ .o { color: #555555 } /* Operator */ .cm { color: #999; } /* Comment.Multiline */ /* Edited to remove italics and make into comment */ .cp { color: #009999 } /* Comment.Preproc */ .c1 { color: #999; } /* Comment.Single */ .cs { color: #999; } /* Comment.Special */ .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ .ge { font-style: italic } /* Generic.Emph */ .gr { color: #FF0000 } /* Generic.Error */ .gh { color: #003300; } /* Generic.Heading */ .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ .go { color: #AAAAAA } /* Generic.Output */ .gp { color: #000099; } /* Generic.Prompt */ .gs { } /* Generic.Strong */ .gu { color: #003300; } /* Generic.Subheading */ .gt { color: #99CC66 } /* Generic.Traceback */ .kc { color: #006699; } /* Keyword.Constant */ .kd { color: #006699; } /* Keyword.Declaration */ .kn { color: #006699; } /* Keyword.Namespace */ .kp { color: #006699 } /* Keyword.Pseudo */ .kr { color: #006699; } /* Keyword.Reserved */ .kt { color: #007788; } /* Keyword.Type */ .m { color: #FF6600 } /* Literal.Number */ .s { color: #d44950 } /* Literal.String */ .na { color: #4f9fcf } /* Name.Attribute */ .nb { color: #336666 } /* Name.Builtin */ .nc { color: #00AA88; } /* Name.Class */ .no { color: #336600 } /* Name.Constant */ .nd { color: #9999FF } /* Name.Decorator */ .ni { color: #999999; } /* Name.Entity */ .ne { color: #CC0000; } /* Name.Exception */ .nf { color: #CC00FF } /* Name.Function */ .nl { color: #9999FF } /* Name.Label */ .nn { color: #00CCFF; } /* Name.Namespace */ .nt { color: #2f6f9f; } /* Name.Tag */ .nv { color: #003333 } /* Name.Variable */ .ow { color: #000000; } /* Operator.Word */ .w { color: #bbbbbb } /* Text.Whitespace */ .mf { color: #FF6600 } /* Literal.Number.Float */ .mh { color: #FF6600 } /* Literal.Number.Hex */ .mi { color: #FF6600 } /* Literal.Number.Integer */ .mo { color: #FF6600 } /* Literal.Number.Oct */ .sb { color: #CC3300 } /* Literal.String.Backtick */ .sc { color: #CC3300 } /* Literal.String.Char */ .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ .s2 { color: #CC3300 } /* Literal.String.Double */ .se { color: #CC3300; } /* Literal.String.Escape */ .sh { color: #CC3300 } /* Literal.String.Heredoc */ .si { color: #AA0000 } /* Literal.String.Interpol */ .sx { color: #CC3300 } /* Literal.String.Other */ .sr { color: #33AAAA } /* Literal.String.Regex */ .s1 { color: #CC3300 } /* Literal.String.Single */ .ss { color: #FFCC33 } /* Literal.String.Symbol */ .bp { color: #336666 } /* Name.Builtin.Pseudo */ .vc { color: #003333 } /* Name.Variable.Class */ .vg { color: #003333 } /* Name.Variable.Global */ .vi { color: #003333 } /* Name.Variable.Instance */ .il { color: #FF6600 } /* Literal.Number.Integer.Long */ .css .o, .css .o + .nt, .css .nt + .nt { color: #999; } ================================================ FILE: docs/assets/js/docs.js ================================================ $('.example-component-container').Stickyfill(); ================================================ FILE: docs/assets/js/jq.js ================================================ /*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("

Bars with actions

Actions can be added to bars in the form of buttons and button-groups. These can be used give access to tools or provide additional functionality by using context menus.

{% highlight html %}

Header with actions

...
{% endhighlight %}

Bars with tabs

Tabs give the user the ability to create mutiple instances of your application's window. Clicking on the tab switches to that instance. Hovering on a tab reveals the close icon.

{% highlight html %}

Header the tabs

Tab
Tab active
Tab
{% endhighlight %}

Navs

Navs allow your users to jump between sections of your application. Users select an item in the nav list and act on it in the main part of the application's window.

{% highlight html %} {% endhighlight %}

Lists

Lists can be used for organizing data, showing collections of users, or a series of controls.

{% highlight html %}
  • List item title

    Lorem ipsum dolor sit amet.

  • List item title

    Lorem ipsum dolor sit amet.

  • ...
{% endhighlight %}

Buttons

Buttons come in many flavors and should be used for main call to actions, to submit forms, or trigger behaviors.

{% highlight html %} {% endhighlight %}

Buttons large

Large buttons are perfect for when you have a lot of space.

{% highlight html %} {% endhighlight %}

Buttons mini

Mini buttons work great in places where space is scarce.

{% highlight html %} {% endhighlight %}

Buttons groups

Connect a series of buttons together on a single line. Use these to toggle "modes" or mutually exclusive tools.

{% highlight html %}
...
...
...
{% endhighlight %}

Forms

Forms are great when you need to collect data from a user. Use form labels to describe the input field and use simple buttons to submit the form.

{% highlight html %}
{% endhighlight %}

Tables

For showing tabular data, tables are your best bet. Zebra striping is optional.

{% highlight html %}
...
Name Kind File Size
photon.css CSS 28K
photon.css CSS 28K
photon.css CSS 28K
photon.css CSS 28K
{% endhighlight %}

Icons

The Entypo icon font by Daniel Bruce is included as the default icon set for Photon. There are over 200 icons to choose from.

{% highlight html %} {% endhighlight %}
================================================ FILE: docs/demo-app.html ================================================ Demo App

Photon

Name Kind Date Modified Author
bars.scss Document Oct 13, 2015 connors
base.scss Document Oct 13, 2015 connors
button-groups.scss Document Oct 13, 2015 connors
buttons.scss Document Oct 13, 2015 connors
docs.scss Document Oct 13, 2015 connors
forms.scss Document Oct 13, 2015 connors
grid.scss Document Oct 13, 2015 connors
icons.scss Document Oct 13, 2015 connors
images.scss Document Oct 13, 2015 connors
lists.scss Document Oct 13, 2015 connors
mixins.scss Document Oct 13, 2015 connors
navs.scss Document Oct 13, 2015 connors
normalize.scss Document Oct 13, 2015 connors
photon.scss Document Oct 13, 2015 connors
tables.scss Document Oct 13, 2015 connors
tabs.scss Document Oct 13, 2015 connors
utilities.scss Document Oct 13, 2015 connors
variables.scss Document Oct 13, 2015 connors
================================================ FILE: docs/dist/css/photon.css ================================================ /*! * ===================================================== * Photon v0.1.2 * Copyright 2016 Connor Sears * Licensed under MIT (https://github.com/connors/proton/blob/master/LICENSE) * * v0.1.2 designed by @connors. * ===================================================== */ @charset "UTF-8"; audio, canvas, progress, video { vertical-align: baseline; } audio:not([controls]) { display: none; } a:active, a:hover { outline: 0; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } h1 { font-size: 2em; margin: 0.67em 0; } small { font-size: 80%; } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } pre { overflow: auto; } code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } button, input, optgroup, select, textarea { color: inherit; font: inherit; margin: 0; } input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } input[type="search"] { -webkit-appearance: textfield; box-sizing: content-box; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } legend { border: 0; padding: 0; } table { border-collapse: collapse; border-spacing: 0; } td, th { padding: 0; } * { cursor: default; -webkit-user-select: none; } input, textarea { -webkit-user-select: text; } form, input, optgroup, select, textarea { -webkit-user-select: text; -webkit-app-region: no-drag; } * { -webkit-box-sizing: border-box; box-sizing: border-box; } html { height: 100%; width: 100%; overflow: hidden; } body { height: 100%; padding: 0; margin: 0; font-family: system, -apple-system, ".SFNSDisplay-Regular", "Helvetica Neue", Helvetica, "Segoe UI", sans-serif; font-size: 13px; line-height: 1.6; color: #333; background-color: transparent; } hr { margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom: 1px solid #ddd; } h1, h2, h3, h4, h5, h6 { margin-top: 20px; margin-bottom: 10px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } h1 { font-size: 36px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 14px; } h6 { font-size: 12px; } .window { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; flex-direction: column; background-color: #fff; } .window-content { position: relative; overflow-y: auto; display: flex; flex: 1; } .selectable-text { cursor: text; -webkit-user-select: text; } .text-center { text-align: center; } .text-right { text-align: right; } .text-left { text-align: left; } .pull-left { float: left; } .pull-right { float: right; } .padded { padding: 10px; } .padded-less { padding: 5px; } .padded-more { padding: 20px; } .padded-vertically { padding-top: 10px; padding-bottom: 10px; } .padded-vertically-less { padding-top: 5px; padding-bottom: 5px; } .padded-vertically-more { padding-top: 20px; padding-bottom: 20px; } .padded-horizontally { padding-right: 10px; padding-left: 10px; } .padded-horizontally-less { padding-right: 5px; padding-left: 5px; } .padded-horizontally-more { padding-right: 20px; padding-left: 20px; } .padded-top { padding-top: 10px; } .padded-top-less { padding-top: 5px; } .padded-top-more { padding-top: 20px; } .padded-bottom { padding-bottom: 10px; } .padded-bottom-less { padding-bottom: 5px; } .padded-bottom-more { padding-bottom: 20px; } .sidebar { background-color: #f5f5f4; } .draggable { -webkit-app-region: drag; } .not-draggable { -webkit-app-region: no-drag; } .clearfix:before, .clearfix:after { display: table; content: " "; } .clearfix:after { clear: both; } .btn { display: inline-block; padding: 3px 8px; margin-bottom: 0; font-size: 12px; line-height: 1.4; text-align: center; white-space: nowrap; vertical-align: middle; cursor: default; background-image: none; border: 1px solid transparent; border-radius: 4px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06); -webkit-app-region: no-drag; } .btn:focus { outline: none; box-shadow: none; } .btn-mini { padding: 2px 6px; } .btn-large { padding: 6px 12px; } .btn-form { padding-right: 20px; padding-left: 20px; } .btn-default { color: #333; border-top-color: #c2c0c2; border-right-color: #c2c0c2; border-bottom-color: #a19fa1; border-left-color: #c2c0c2; background-color: #fcfcfc; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fcfcfc), color-stop(100%, #f1f1f1)); background-image: -webkit-linear-gradient(top, #fcfcfc 0%, #f1f1f1 100%); background-image: linear-gradient(to bottom, #fcfcfc 0%, #f1f1f1 100%); } .btn-default:active { background-color: #ddd; background-image: none; } .btn-primary, .btn-positive, .btn-negative, .btn-warning { color: #fff; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } .btn-primary { border-color: #388df8; border-bottom-color: #0866dc; background-color: #6eb4f7; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #6eb4f7), color-stop(100%, #1a82fb)); background-image: -webkit-linear-gradient(top, #6eb4f7 0%, #1a82fb 100%); background-image: linear-gradient(to bottom, #6eb4f7 0%, #1a82fb 100%); } .btn-primary:active { background-color: #3e9bf4; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3e9bf4), color-stop(100%, #0469de)); background-image: -webkit-linear-gradient(top, #3e9bf4 0%, #0469de 100%); background-image: linear-gradient(to bottom, #3e9bf4 0%, #0469de 100%); } .btn-positive { border-color: #29a03b; border-bottom-color: #248b34; background-color: #5bd46d; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bd46d), color-stop(100%, #29a03b)); background-image: -webkit-linear-gradient(top, #5bd46d 0%, #29a03b 100%); background-image: linear-gradient(to bottom, #5bd46d 0%, #29a03b 100%); } .btn-positive:active { background-color: #34c84a; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #34c84a), color-stop(100%, #248b34)); background-image: -webkit-linear-gradient(top, #34c84a 0%, #248b34 100%); background-image: linear-gradient(to bottom, #34c84a 0%, #248b34 100%); } .btn-negative { border-color: #fb2f29; border-bottom-color: #fb1710; background-color: #fd918d; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fd918d), color-stop(100%, #fb2f29)); background-image: -webkit-linear-gradient(top, #fd918d 0%, #fb2f29 100%); background-image: linear-gradient(to bottom, #fd918d 0%, #fb2f29 100%); } .btn-negative:active { background-color: #fc605b; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fc605b), color-stop(100%, #fb1710)); background-image: -webkit-linear-gradient(top, #fc605b 0%, #fb1710 100%); background-image: linear-gradient(to bottom, #fc605b 0%, #fb1710 100%); } .btn-warning { border-color: #fcaa0e; border-bottom-color: #ee9d02; background-color: #fece72; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fece72), color-stop(100%, #fcaa0e)); background-image: -webkit-linear-gradient(top, #fece72 0%, #fcaa0e 100%); background-image: linear-gradient(to bottom, #fece72 0%, #fcaa0e 100%); } .btn-warning:active { background-color: #fdbc40; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fdbc40), color-stop(100%, #ee9d02)); background-image: -webkit-linear-gradient(top, #fdbc40 0%, #ee9d02 100%); background-image: linear-gradient(to bottom, #fdbc40 0%, #ee9d02 100%); } .btn .icon { float: left; width: 14px; height: 14px; margin-top: 1px; margin-bottom: 1px; color: #737475; font-size: 14px; line-height: 1; } .btn .icon-text { margin-right: 5px; } .btn-dropdown:after { font-family: "photon-entypo"; margin-left: 5px; content: '\e873'; } .btn-group { position: relative; display: inline-block; vertical-align: middle; -webkit-app-region: no-drag; } .btn-group .btn { position: relative; float: left; } .btn-group .btn:focus, .btn-group .btn:active { z-index: 2; } .btn-group .btn.active { z-index: 3; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-group > .btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group .btn + .btn { border-left: 1px solid #c2c0c2; } .btn-group .btn + .btn.active { border-left: 0; } .btn-group .active { color: #fff; border: 1px solid transparent; background-color: #6d6c6d; background-image: none; } .btn-group .active .icon { color: #fff; } .toolbar { min-height: 22px; box-shadow: inset 0 1px 0 #f5f4f5; background-color: #e8e6e8; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #e8e6e8), color-stop(100%, #d1cfd1)); background-image: -webkit-linear-gradient(top, #e8e6e8 0%, #d1cfd1 100%); background-image: linear-gradient(to bottom, #e8e6e8 0%, #d1cfd1 100%); } .toolbar:before, .toolbar:after { display: table; content: " "; } .toolbar:after { clear: both; } .toolbar-header { border-bottom: 1px solid #c2c0c2; } .toolbar-header .title { margin-top: 1px; } .toolbar-footer { border-top: 1px solid #c2c0c2; -webkit-app-region: drag; } .title { margin: 0; font-size: 12px; font-weight: 400; text-align: center; color: #555; cursor: default; } .toolbar-borderless { border-top: 0; border-bottom: 0; } .toolbar-actions { margin-top: 4px; margin-bottom: 3px; padding-right: 3px; padding-left: 3px; padding-bottom: 3px; -webkit-app-region: drag; } .toolbar-actions:before, .toolbar-actions:after { display: table; content: " "; } .toolbar-actions:after { clear: both; } .toolbar-actions > .btn, .toolbar-actions > .btn-group { margin-left: 4px; margin-right: 4px; } label { display: inline-block; font-size: 13px; margin-bottom: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } input[type="search"] { box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; line-height: normal; } .form-control { display: inline-block; width: 100%; min-height: 25px; padding: 5px 10px; font-size: 13px; line-height: 1.6; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; outline: none; } .form-control:focus { border-color: #6db3fd; box-shadow: 0 0 0 3px #6db3fd; } textarea { height: auto; } .form-group { margin-bottom: 10px; } .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; } .radio label, .checkbox label { padding-left: 20px; margin-bottom: 0; font-weight: normal; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-left: -20px; margin-top: 4px; } .form-actions .btn { margin-right: 10px; } .form-actions .btn:last-child { margin-right: 0; } .pane-group { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; } .pane { position: relative; overflow-y: auto; flex: 1; border-left: 1px solid #ddd; } .pane:first-child { border-left: 0; } .pane-sm { max-width: 220px; min-width: 150px; } .pane-mini { width: 80px; flex: none; } .pane-one-fourth { width: 25%; flex: none; } .pane-one-third { width: 33.3%; flex: none; } img { -webkit-user-drag: text; } .img-circle { border-radius: 50%; } .img-rounded { border-radius: 4px; } .list-group { width: 100%; list-style: none; margin: 0; padding: 0; } .list-group * { margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .list-group-item { padding: 10px; font-size: 12px; color: #414142; border-top: 1px solid #ddd; } .list-group-item:first-child { border-top: 0; } .list-group-item.active, .list-group-item.selected { color: #fff; background-color: #116cd6; } .list-group-header { padding: 10px; } .media-object { margin-top: 3px; } .media-object.pull-left { margin-right: 10px; } .media-object.pull-right { margin-left: 10px; } .media-body { overflow: hidden; } .nav-group { font-size: 14px; } .nav-group-item { padding: 2px 10px 2px 25px; display: block; color: #333; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nav-group-item:active, .nav-group-item.active { background-color: #dcdfe1; } .nav-group-item .icon { width: 19px; height: 18px; float: left; color: #737475; margin-top: -3px; margin-right: 7px; font-size: 18px; text-align: center; } .nav-group-title { margin: 0; padding: 10px 10px 2px; font-size: 12px; font-weight: 500; color: #666666; } @font-face { font-family: "photon-entypo"; src: url("../fonts/photon-entypo.eot"); src: url("../fonts/photon-entypo.eot?#iefix") format("eot"), url("../fonts/photon-entypo.woff") format("woff"), url("../fonts/photon-entypo.ttf") format("truetype"); font-weight: normal; font-style: normal; } .icon:before { position: relative; display: inline-block; font-family: "photon-entypo"; speak: none; font-size: 100%; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-note:before { content: '\e800'; } /* '' */ .icon-note-beamed:before { content: '\e801'; } /* '' */ .icon-music:before { content: '\e802'; } /* '' */ .icon-search:before { content: '\e803'; } /* '' */ .icon-flashlight:before { content: '\e804'; } /* '' */ .icon-mail:before { content: '\e805'; } /* '' */ .icon-heart:before { content: '\e806'; } /* '' */ .icon-heart-empty:before { content: '\e807'; } /* '' */ .icon-star:before { content: '\e808'; } /* '' */ .icon-star-empty:before { content: '\e809'; } /* '' */ .icon-user:before { content: '\e80a'; } /* '' */ .icon-users:before { content: '\e80b'; } /* '' */ .icon-user-add:before { content: '\e80c'; } /* '' */ .icon-video:before { content: '\e80d'; } /* '' */ .icon-picture:before { content: '\e80e'; } /* '' */ .icon-camera:before { content: '\e80f'; } /* '' */ .icon-layout:before { content: '\e810'; } /* '' */ .icon-menu:before { content: '\e811'; } /* '' */ .icon-check:before { content: '\e812'; } /* '' */ .icon-cancel:before { content: '\e813'; } /* '' */ .icon-cancel-circled:before { content: '\e814'; } /* '' */ .icon-cancel-squared:before { content: '\e815'; } /* '' */ .icon-plus:before { content: '\e816'; } /* '' */ .icon-plus-circled:before { content: '\e817'; } /* '' */ .icon-plus-squared:before { content: '\e818'; } /* '' */ .icon-minus:before { content: '\e819'; } /* '' */ .icon-minus-circled:before { content: '\e81a'; } /* '' */ .icon-minus-squared:before { content: '\e81b'; } /* '' */ .icon-help:before { content: '\e81c'; } /* '' */ .icon-help-circled:before { content: '\e81d'; } /* '' */ .icon-info:before { content: '\e81e'; } /* '' */ .icon-info-circled:before { content: '\e81f'; } /* '' */ .icon-back:before { content: '\e820'; } /* '' */ .icon-home:before { content: '\e821'; } /* '' */ .icon-link:before { content: '\e822'; } /* '' */ .icon-attach:before { content: '\e823'; } /* '' */ .icon-lock:before { content: '\e824'; } /* '' */ .icon-lock-open:before { content: '\e825'; } /* '' */ .icon-eye:before { content: '\e826'; } /* '' */ .icon-tag:before { content: '\e827'; } /* '' */ .icon-bookmark:before { content: '\e828'; } /* '' */ .icon-bookmarks:before { content: '\e829'; } /* '' */ .icon-flag:before { content: '\e82a'; } /* '' */ .icon-thumbs-up:before { content: '\e82b'; } /* '' */ .icon-thumbs-down:before { content: '\e82c'; } /* '' */ .icon-download:before { content: '\e82d'; } /* '' */ .icon-upload:before { content: '\e82e'; } /* '' */ .icon-upload-cloud:before { content: '\e82f'; } /* '' */ .icon-reply:before { content: '\e830'; } /* '' */ .icon-reply-all:before { content: '\e831'; } /* '' */ .icon-forward:before { content: '\e832'; } /* '' */ .icon-quote:before { content: '\e833'; } /* '' */ .icon-code:before { content: '\e834'; } /* '' */ .icon-export:before { content: '\e835'; } /* '' */ .icon-pencil:before { content: '\e836'; } /* '' */ .icon-feather:before { content: '\e837'; } /* '' */ .icon-print:before { content: '\e838'; } /* '' */ .icon-retweet:before { content: '\e839'; } /* '' */ .icon-keyboard:before { content: '\e83a'; } /* '' */ .icon-comment:before { content: '\e83b'; } /* '' */ .icon-chat:before { content: '\e83c'; } /* '' */ .icon-bell:before { content: '\e83d'; } /* '' */ .icon-attention:before { content: '\e83e'; } /* '' */ .icon-alert:before { content: '\e83f'; } /* '' */ .icon-vcard:before { content: '\e840'; } /* '' */ .icon-address:before { content: '\e841'; } /* '' */ .icon-location:before { content: '\e842'; } /* '' */ .icon-map:before { content: '\e843'; } /* '' */ .icon-direction:before { content: '\e844'; } /* '' */ .icon-compass:before { content: '\e845'; } /* '' */ .icon-cup:before { content: '\e846'; } /* '' */ .icon-trash:before { content: '\e847'; } /* '' */ .icon-doc:before { content: '\e848'; } /* '' */ .icon-docs:before { content: '\e849'; } /* '' */ .icon-doc-landscape:before { content: '\e84a'; } /* '' */ .icon-doc-text:before { content: '\e84b'; } /* '' */ .icon-doc-text-inv:before { content: '\e84c'; } /* '' */ .icon-newspaper:before { content: '\e84d'; } /* '' */ .icon-book-open:before { content: '\e84e'; } /* '' */ .icon-book:before { content: '\e84f'; } /* '' */ .icon-folder:before { content: '\e850'; } /* '' */ .icon-archive:before { content: '\e851'; } /* '' */ .icon-box:before { content: '\e852'; } /* '' */ .icon-rss:before { content: '\e853'; } /* '' */ .icon-phone:before { content: '\e854'; } /* '' */ .icon-cog:before { content: '\e855'; } /* '' */ .icon-tools:before { content: '\e856'; } /* '' */ .icon-share:before { content: '\e857'; } /* '' */ .icon-shareable:before { content: '\e858'; } /* '' */ .icon-basket:before { content: '\e859'; } /* '' */ .icon-bag:before { content: '\e85a'; } /* '' */ .icon-calendar:before { content: '\e85b'; } /* '' */ .icon-login:before { content: '\e85c'; } /* '' */ .icon-logout:before { content: '\e85d'; } /* '' */ .icon-mic:before { content: '\e85e'; } /* '' */ .icon-mute:before { content: '\e85f'; } /* '' */ .icon-sound:before { content: '\e860'; } /* '' */ .icon-volume:before { content: '\e861'; } /* '' */ .icon-clock:before { content: '\e862'; } /* '' */ .icon-hourglass:before { content: '\e863'; } /* '' */ .icon-lamp:before { content: '\e864'; } /* '' */ .icon-light-down:before { content: '\e865'; } /* '' */ .icon-light-up:before { content: '\e866'; } /* '' */ .icon-adjust:before { content: '\e867'; } /* '' */ .icon-block:before { content: '\e868'; } /* '' */ .icon-resize-full:before { content: '\e869'; } /* '' */ .icon-resize-small:before { content: '\e86a'; } /* '' */ .icon-popup:before { content: '\e86b'; } /* '' */ .icon-publish:before { content: '\e86c'; } /* '' */ .icon-window:before { content: '\e86d'; } /* '' */ .icon-arrow-combo:before { content: '\e86e'; } /* '' */ .icon-down-circled:before { content: '\e86f'; } /* '' */ .icon-left-circled:before { content: '\e870'; } /* '' */ .icon-right-circled:before { content: '\e871'; } /* '' */ .icon-up-circled:before { content: '\e872'; } /* '' */ .icon-down-open:before { content: '\e873'; } /* '' */ .icon-left-open:before { content: '\e874'; } /* '' */ .icon-right-open:before { content: '\e875'; } /* '' */ .icon-up-open:before { content: '\e876'; } /* '' */ .icon-down-open-mini:before { content: '\e877'; } /* '' */ .icon-left-open-mini:before { content: '\e878'; } /* '' */ .icon-right-open-mini:before { content: '\e879'; } /* '' */ .icon-up-open-mini:before { content: '\e87a'; } /* '' */ .icon-down-open-big:before { content: '\e87b'; } /* '' */ .icon-left-open-big:before { content: '\e87c'; } /* '' */ .icon-right-open-big:before { content: '\e87d'; } /* '' */ .icon-up-open-big:before { content: '\e87e'; } /* '' */ .icon-down:before { content: '\e87f'; } /* '' */ .icon-left:before { content: '\e880'; } /* '' */ .icon-right:before { content: '\e881'; } /* '' */ .icon-up:before { content: '\e882'; } /* '' */ .icon-down-dir:before { content: '\e883'; } /* '' */ .icon-left-dir:before { content: '\e884'; } /* '' */ .icon-right-dir:before { content: '\e885'; } /* '' */ .icon-up-dir:before { content: '\e886'; } /* '' */ .icon-down-bold:before { content: '\e887'; } /* '' */ .icon-left-bold:before { content: '\e888'; } /* '' */ .icon-right-bold:before { content: '\e889'; } /* '' */ .icon-up-bold:before { content: '\e88a'; } /* '' */ .icon-down-thin:before { content: '\e88b'; } /* '' */ .icon-left-thin:before { content: '\e88c'; } /* '' */ .icon-right-thin:before { content: '\e88d'; } /* '' */ .icon-up-thin:before { content: '\e88e'; } /* '' */ .icon-ccw:before { content: '\e88f'; } /* '' */ .icon-cw:before { content: '\e890'; } /* '' */ .icon-arrows-ccw:before { content: '\e891'; } /* '' */ .icon-level-down:before { content: '\e892'; } /* '' */ .icon-level-up:before { content: '\e893'; } /* '' */ .icon-shuffle:before { content: '\e894'; } /* '' */ .icon-loop:before { content: '\e895'; } /* '' */ .icon-switch:before { content: '\e896'; } /* '' */ .icon-play:before { content: '\e897'; } /* '' */ .icon-stop:before { content: '\e898'; } /* '' */ .icon-pause:before { content: '\e899'; } /* '' */ .icon-record:before { content: '\e89a'; } /* '' */ .icon-to-end:before { content: '\e89b'; } /* '' */ .icon-to-start:before { content: '\e89c'; } /* '' */ .icon-fast-forward:before { content: '\e89d'; } /* '' */ .icon-fast-backward:before { content: '\e89e'; } /* '' */ .icon-progress-0:before { content: '\e89f'; } /* '' */ .icon-progress-1:before { content: '\e8a0'; } /* '' */ .icon-progress-2:before { content: '\e8a1'; } /* '' */ .icon-progress-3:before { content: '\e8a2'; } /* '' */ .icon-target:before { content: '\e8a3'; } /* '' */ .icon-palette:before { content: '\e8a4'; } /* '' */ .icon-list:before { content: '\e8a5'; } /* '' */ .icon-list-add:before { content: '\e8a6'; } /* '' */ .icon-signal:before { content: '\e8a7'; } /* '' */ .icon-trophy:before { content: '\e8a8'; } /* '' */ .icon-battery:before { content: '\e8a9'; } /* '' */ .icon-back-in-time:before { content: '\e8aa'; } /* '' */ .icon-monitor:before { content: '\e8ab'; } /* '' */ .icon-mobile:before { content: '\e8ac'; } /* '' */ .icon-network:before { content: '\e8ad'; } /* '' */ .icon-cd:before { content: '\e8ae'; } /* '' */ .icon-inbox:before { content: '\e8af'; } /* '' */ .icon-install:before { content: '\e8b0'; } /* '' */ .icon-globe:before { content: '\e8b1'; } /* '' */ .icon-cloud:before { content: '\e8b2'; } /* '' */ .icon-cloud-thunder:before { content: '\e8b3'; } /* '' */ .icon-flash:before { content: '\e8b4'; } /* '' */ .icon-moon:before { content: '\e8b5'; } /* '' */ .icon-flight:before { content: '\e8b6'; } /* '' */ .icon-paper-plane:before { content: '\e8b7'; } /* '' */ .icon-leaf:before { content: '\e8b8'; } /* '' */ .icon-lifebuoy:before { content: '\e8b9'; } /* '' */ .icon-mouse:before { content: '\e8ba'; } /* '' */ .icon-briefcase:before { content: '\e8bb'; } /* '' */ .icon-suitcase:before { content: '\e8bc'; } /* '' */ .icon-dot:before { content: '\e8bd'; } /* '' */ .icon-dot-2:before { content: '\e8be'; } /* '' */ .icon-dot-3:before { content: '\e8bf'; } /* '' */ .icon-brush:before { content: '\e8c0'; } /* '' */ .icon-magnet:before { content: '\e8c1'; } /* '' */ .icon-infinity:before { content: '\e8c2'; } /* '' */ .icon-erase:before { content: '\e8c3'; } /* '' */ .icon-chart-pie:before { content: '\e8c4'; } /* '' */ .icon-chart-line:before { content: '\e8c5'; } /* '' */ .icon-chart-bar:before { content: '\e8c6'; } /* '' */ .icon-chart-area:before { content: '\e8c7'; } /* '' */ .icon-tape:before { content: '\e8c8'; } /* '' */ .icon-graduation-cap:before { content: '\e8c9'; } /* '' */ .icon-language:before { content: '\e8ca'; } /* '' */ .icon-ticket:before { content: '\e8cb'; } /* '' */ .icon-water:before { content: '\e8cc'; } /* '' */ .icon-droplet:before { content: '\e8cd'; } /* '' */ .icon-air:before { content: '\e8ce'; } /* '' */ .icon-credit-card:before { content: '\e8cf'; } /* '' */ .icon-floppy:before { content: '\e8d0'; } /* '' */ .icon-clipboard:before { content: '\e8d1'; } /* '' */ .icon-megaphone:before { content: '\e8d2'; } /* '' */ .icon-database:before { content: '\e8d3'; } /* '' */ .icon-drive:before { content: '\e8d4'; } /* '' */ .icon-bucket:before { content: '\e8d5'; } /* '' */ .icon-thermometer:before { content: '\e8d6'; } /* '' */ .icon-key:before { content: '\e8d7'; } /* '' */ .icon-flow-cascade:before { content: '\e8d8'; } /* '' */ .icon-flow-branch:before { content: '\e8d9'; } /* '' */ .icon-flow-tree:before { content: '\e8da'; } /* '' */ .icon-flow-line:before { content: '\e8db'; } /* '' */ .icon-flow-parallel:before { content: '\e8dc'; } /* '' */ .icon-rocket:before { content: '\e8dd'; } /* '' */ .icon-gauge:before { content: '\e8de'; } /* '' */ .icon-traffic-cone:before { content: '\e8df'; } /* '' */ .icon-cc:before { content: '\e8e0'; } /* '' */ .icon-cc-by:before { content: '\e8e1'; } /* '' */ .icon-cc-nc:before { content: '\e8e2'; } /* '' */ .icon-cc-nc-eu:before { content: '\e8e3'; } /* '' */ .icon-cc-nc-jp:before { content: '\e8e4'; } /* '' */ .icon-cc-sa:before { content: '\e8e5'; } /* '' */ .icon-cc-nd:before { content: '\e8e6'; } /* '' */ .icon-cc-pd:before { content: '\e8e7'; } /* '' */ .icon-cc-zero:before { content: '\e8e8'; } /* '' */ .icon-cc-share:before { content: '\e8e9'; } /* '' */ .icon-cc-remix:before { content: '\e8ea'; } /* '' */ .icon-github:before { content: '\e8eb'; } /* '' */ .icon-github-circled:before { content: '\e8ec'; } /* '' */ .icon-flickr:before { content: '\e8ed'; } /* '' */ .icon-flickr-circled:before { content: '\e8ee'; } /* '' */ .icon-vimeo:before { content: '\e8ef'; } /* '' */ .icon-vimeo-circled:before { content: '\e8f0'; } /* '' */ .icon-twitter:before { content: '\e8f1'; } /* '' */ .icon-twitter-circled:before { content: '\e8f2'; } /* '' */ .icon-facebook:before { content: '\e8f3'; } /* '' */ .icon-facebook-circled:before { content: '\e8f4'; } /* '' */ .icon-facebook-squared:before { content: '\e8f5'; } /* '' */ .icon-gplus:before { content: '\e8f6'; } /* '' */ .icon-gplus-circled:before { content: '\e8f7'; } /* '' */ .icon-pinterest:before { content: '\e8f8'; } /* '' */ .icon-pinterest-circled:before { content: '\e8f9'; } /* '' */ .icon-tumblr:before { content: '\e8fa'; } /* '' */ .icon-tumblr-circled:before { content: '\e8fb'; } /* '' */ .icon-linkedin:before { content: '\e8fc'; } /* '' */ .icon-linkedin-circled:before { content: '\e8fd'; } /* '' */ .icon-dribbble:before { content: '\e8fe'; } /* '' */ .icon-dribbble-circled:before { content: '\e8ff'; } /* '' */ .icon-stumbleupon:before { content: '\e900'; } /* '' */ .icon-stumbleupon-circled:before { content: '\e901'; } /* '' */ .icon-lastfm:before { content: '\e902'; } /* '' */ .icon-lastfm-circled:before { content: '\e903'; } /* '' */ .icon-rdio:before { content: '\e904'; } /* '' */ .icon-rdio-circled:before { content: '\e905'; } /* '' */ .icon-spotify:before { content: '\e906'; } /* '' */ .icon-spotify-circled:before { content: '\e907'; } /* '' */ .icon-qq:before { content: '\e908'; } /* '' */ .icon-instagram:before { content: '\e909'; } /* '' */ .icon-dropbox:before { content: '\e90a'; } /* '' */ .icon-evernote:before { content: '\e90b'; } /* '' */ .icon-flattr:before { content: '\e90c'; } /* '' */ .icon-skype:before { content: '\e90d'; } /* '' */ .icon-skype-circled:before { content: '\e90e'; } /* '' */ .icon-renren:before { content: '\e90f'; } /* '' */ .icon-sina-weibo:before { content: '\e910'; } /* '' */ .icon-paypal:before { content: '\e911'; } /* '' */ .icon-picasa:before { content: '\e912'; } /* '' */ .icon-soundcloud:before { content: '\e913'; } /* '' */ .icon-mixi:before { content: '\e914'; } /* '' */ .icon-behance:before { content: '\e915'; } /* '' */ .icon-google-circles:before { content: '\e916'; } /* '' */ .icon-vkontakte:before { content: '\e917'; } /* '' */ .icon-smashing:before { content: '\e918'; } /* '' */ .icon-sweden:before { content: '\e919'; } /* '' */ .icon-db-shape:before { content: '\e91a'; } /* '' */ .icon-logo-db:before { content: '\e91b'; } /* '' */ table { width: 100%; border: 0; border-collapse: separate; font-size: 12px; text-align: left; } thead { background-color: #f5f5f4; } tbody { background-color: #fff; } .table-striped tr:nth-child(even) { background-color: #f5f5f4; } tr:active, .table-striped tr:active:nth-child(even) { color: #fff; background-color: #116cd6; } thead tr:active { color: #333; background-color: #f5f5f4; } th { font-weight: normal; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd; } th, td { padding: 2px 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } th:last-child, td:last-child { border-right: 0; } .tab-group { margin-top: -1px; display: flex; border-top: 1px solid #989698; border-bottom: 1px solid #989698; } .tab-item { position: relative; flex: 1; padding: 3px; font-size: 12px; text-align: center; border-left: 1px solid #989698; background-color: #b8b6b8; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b8b6b8), color-stop(100%, #b0aeb0)); background-image: -webkit-linear-gradient(top, #b8b6b8 0%, #b0aeb0 100%); background-image: linear-gradient(to bottom, #b8b6b8 0%, #b0aeb0 100%); } .tab-item:first-child { border-left: 0; } .tab-item.active { background-color: #d4d2d4; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #d4d2d4), color-stop(100%, #cccacc)); background-image: -webkit-linear-gradient(top, #d4d2d4 0%, #cccacc 100%); background-image: linear-gradient(to bottom, #d4d2d4 0%, #cccacc 100%); } .tab-item .icon-close-tab { position: absolute; top: 50%; left: 5px; width: 15px; height: 15px; font-size: 15px; line-height: 15px; text-align: center; color: #666; opacity: 0; transition: opacity .1s linear, background-color .1s linear; border-radius: 3px; transform: translateY(-50%); z-index: 10; } .tab-item:after { position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ""; background-color: rgba(0, 0, 0, 0.08); opacity: 0; transition: opacity .1s linear; z-index: 1; } .tab-item:hover:not(.active):after { opacity: 1; } .tab-item:hover .icon-close-tab { opacity: 1; } .tab-item .icon-close-tab:hover { background-color: rgba(0, 0, 0, 0.08); } .tab-item-fixed { flex: none; padding: 3px 10px; } ================================================ FILE: docs/dist/template-app/app.js ================================================ var app = require('app'); // Module to control application life. var BrowserWindow = require('browser-window'); // Module to create native browser window. // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. var mainWindow = null; // Quit when all windows are closed. app.on('window-all-closed', function() { // On OS X it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform != 'darwin') { app.quit(); } }); // This method will be called when Electron has finished // initialization and is ready to create browser windows. app.on('ready', function() { // Create the browser window. mainWindow = new BrowserWindow({ width: 600, height: 300, 'min-width': 500, 'min-height': 200, 'accept-first-mouse': true, 'title-bar-style': 'hidden' }); // and load the index.html of the app. mainWindow.loadURL('file://' + __dirname + '/index.html'); // Open the DevTools. //mainWindow.openDevTools(); // Emitted when the window is closed. mainWindow.on('closed', function() { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null; }); }); ================================================ FILE: docs/dist/template-app/index.html ================================================ Photon

Photon

Name Kind Date Modified Author
bars.scss Document Oct 13, 2015 connors
base.scss Document Oct 13, 2015 connors
button-groups.scss Document Oct 13, 2015 connors
buttons.scss Document Oct 13, 2015 connors
docs.scss Document Oct 13, 2015 connors
forms.scss Document Oct 13, 2015 connors
grid.scss Document Oct 13, 2015 connors
icons.scss Document Oct 13, 2015 connors
images.scss Document Oct 13, 2015 connors
lists.scss Document Oct 13, 2015 connors
mixins.scss Document Oct 13, 2015 connors
navs.scss Document Oct 13, 2015 connors
normalize.scss Document Oct 13, 2015 connors
photon.scss Document Oct 13, 2015 connors
tables.scss Document Oct 13, 2015 connors
tabs.scss Document Oct 13, 2015 connors
utilities.scss Document Oct 13, 2015 connors
variables.scss Document Oct 13, 2015 connors
================================================ FILE: docs/dist/template-app/js/index.js ================================================ var remote = require('remote') var Menu = remote.require('menu') var MenuItem = remote.require('menu-item') var menu = new Menu() menu.append(new MenuItem({ label: 'Delete', click: function() { alert('Deleted') } })) menu.append(new MenuItem({ label: 'More Info...', click: function() { alert('Here is more information') } })) document.addEventListener('DOMContentLoaded', function () { document.querySelector('.js-context-menu').addEventListener('click', function (event) { // var BrowserWindow = require('remote').require('browser-window') // // var button = event.target // var windowPosition = BrowserWindow.getFocusedWindow().getPosition() // // var x = button.offsetLeft + windowPosition[0] + (button.offsetWidth / 2) // var y = button.offsetTop + windowPosition[1] + button.offsetHeight menu.popup(remote.getCurrentWindow()); }) }) ================================================ FILE: docs/dist/template-app/js/menu.js ================================================ var remote = require('remote') var Menu = remote.require('menu') var MenuItem = remote.require('menu-item') // Build our new menu var menu = new Menu() menu.append(new MenuItem({ label: 'Delete', click: function() { // Trigger an alert when menu item is clicked alert('Deleted') } })) menu.append(new MenuItem({ label: 'More Info...', click: function() { // Trigger an alert when menu item is clicked alert('Here is more information') } })) // Add the listener document.addEventListener('DOMContentLoaded', function () { document.querySelector('.js-context-menu').addEventListener('click', function (event) { menu.popup(remote.getCurrentWindow()); }) }) ================================================ FILE: docs/dist/template-app/package.json ================================================ { "name": "proton-template-app", "version": "1.0.0", "description": "A simple template app for Proton", "main": "app.js", "author": "Connor Sears", "scripts": { "start": "electron ." } } ================================================ FILE: docs/getting-started.html ================================================ --- layout: default title: Photon · Getting started ---
{% include nav.html %}

Getting started

Just download Photon and you'll be well on your way

What's included

Photon is downloadable in two forms, within which you'll find the following directories and files, logically grouping common and compiled resources.


Precompiled Photon

Once downloaded, unzip the compressed folder to see the structure of (the compiled) photon. You'll see something like this:

{% highlight html %} photon/ ├── css/ │ ├── photon.css ├── fonts/ │ ├── photon-entypo.eot │ ├── photon-entypo.svg │ ├── photon-entypo.ttf │ └── photon-entypo.woff └── template-app/ ├── js/ │ └── menu.js ├── app.js ├── index.html └── package.json {% endhighlight %}

This is the most basic form of Photon: precompiled files for quick drop-in usage in nearly any Electron project. We provide compiled CSS (`photon.*`). We also include the Entypo fonts and a template Electron application for you to quickly get started.


Photon source code

The Photon source code download includes the precompiled CSS, and font assets, along with source Sass, and documentation. More specifically, it includes the following and more:

{% highlight html %} photon/ ├── sass/ ├── fonts/ ├── dist/ │ ├── css/ │ ├── fonts/ │ └── template-app/ └── docs/ {% endhighlight %}

The sass/ and fonts/ are the source code for our CSS and icon fonts (respectively). The dist/ folder includes everything listed in the precompiled download section above. The docs/ folder includes the source code for our documentation, and examples/ of Photon usage. Beyond that, any other included file provides support for packages, license information, and development.

Photon

Compiled CSS and fonts. No docs or original source files are included.

Download

Source code

If you haven't already, download the source code for Photon.

Download

Application layout

Every Photon application has the same basic structure that consists of a main .window element and corresponding .window-content wrapper.

{% highlight html %}
...
{% endhighlight %}

Paned layout

Divide up your applications content any way you want using .pane-group and .pane elements. Add as many panes as you need. They'll layout out evenly across the application.

{% highlight html %}
...
...
...
{% endhighlight %}

Sidebar layout

Sidebars are useful for housing navigation or other supplemental information in your application. The optional .sidebar class sets the pane's background color to gray.

{% highlight html %}
...
{% endhighlight %}

Mini-sidebar layout

If a smaller sidebar is what you need, look no further.

{% highlight html %}
...
{% endhighlight %}

Common layout

Many applications follow the same simple layout with a header, content, and footer structure. That's super easy to build in Photon.

{% highlight html %}

Header

...

Footer

{% endhighlight %}

Basic Template

{% highlight html %} Photon

Photon

Welcome to Photon

Thanks for downloading Photon. This is an example HTML page that's linked up to compiled Photon CSS, has the proper meta tags and the HTML structure.

{% endhighlight %}
================================================ FILE: docs/index.html ================================================ --- layout: default title: Photon ---
{% include nav.html %}

The fastest way to build beautiful Electron apps using simple HTML and CSS

Download Photon See all components
Desktop photo by Bill Couch

Powered by Electron

Underneath it all is Electron. Originally built for GitHub's Atom text editor, Electron is the easiest way to build cross-platform desktop applications.

If you can write a bit of HTML, CSS, and JS, you can build full featured applications. Companies like Microsoft, Facebook, and Slack are using it – why aren't you?

Learn more

Become a contributor

There's still a lot to do before Photon reaches version 1.0. If you're interested in working towards that goal, be sure to head over to the GitHub project and look over the open issues and pull requests.

Have something specific in mind? Open a pull request and tell everyone why it's awesome.

View the GitHub project
================================================ FILE: package.json ================================================ { "name": "photon", "version": "0.1.2", "author": "Connor Sears", "keywords": [ "photon", "html", "css", "electron" ], "style": "dist/css/photon.css", "sass": "sass/photon.scss", "repository": { "type": "git", "url": "https://github.com/connors/photon.git" }, "bugs": { "url": "https://github.com/connors/photon/issues" }, "scripts": { "start": "electron dist/template-app", "build": "grunt" }, "license": "MIT", "devDependencies": { "electron-prebuilt": "^0.36.0", "grunt": "~0.4.5", "grunt-banner": "~0.5.0", "grunt-cli": "^0.1.13", "grunt-contrib-clean": "~0.6.0", "grunt-contrib-compress": "~0.13.0", "grunt-contrib-concat": "~0.5.1", "grunt-contrib-connect": "~0.11.2", "grunt-contrib-copy": "~0.8.0", "grunt-contrib-cssmin": "~0.13.0", "grunt-contrib-sass": "~0.9.2", "grunt-contrib-watch": "~0.6.1", "grunt-html": "~5.0.0", "grunt-jekyll": "~0.4.2", "grunt-sed": "twbs/grunt-sed#v0.2.0", "load-grunt-tasks": "~3.2.0", "time-grunt": "~1.2.0" } } ================================================ FILE: sass/appify.scss ================================================ // // Basic styles that make web elements behave more like native applications // ------------------------------------------------------------------------ * { cursor: default; -webkit-user-select: none; } // Forms input, textarea { -webkit-user-select: text; } form, input, optgroup, select, textarea { -webkit-user-select: text; -webkit-app-region: no-drag; } ================================================ FILE: sass/bars.scss ================================================ // // Bars.css // -------------------------------------------------- .toolbar { min-height: 22px; box-shadow: inset 0 1px 0 #f5f4f5; @include linear-gradient(#e8e6e8, #d1cfd1); @include clearfix; } .toolbar-header { border-bottom: 1px solid $dark-border-color; .title { margin-top: 1px; } } .toolbar-footer { border-top: 1px solid $dark-border-color; -webkit-app-region: drag; } // Simple centered title to go in the toolbar .title { margin: 0; font-size: 12px; font-weight: 400; text-align: center; color: #555; cursor: default; } // Borderless toolbar for the clean look .toolbar-borderless { border-top: 0; border-bottom: 0; } // Buttons in toolbars .toolbar-actions { margin-top: 4px; margin-bottom: 3px; padding-right: 3px; padding-left: 3px; padding-bottom: 3px; -webkit-app-region: drag; @include clearfix; > .btn, > .btn-group { margin-left: 4px; margin-right: 4px; } } ================================================ FILE: sass/base.scss ================================================ // // Base styles // -------------------------------------------------- * { -webkit-box-sizing: border-box; box-sizing: border-box; } html { height: 100%; width: 100%; overflow: hidden; } body { height: 100%; padding: 0; margin: 0; font-family: $font-family-default; font-size: $font-size-default; line-height: $line-height-default; color: $gray-color; background-color: transparent; } hr { margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom: 1px solid $border-color; } // Typography h1, h2, h3, h4, h5, h6 { margin-top: 20px; margin-bottom: 10px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } h1 { font-size: 36px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 14px; } h6 { font-size: 12px; } // Basic app structure .window { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; flex-direction: column; background-color: $chrome-color; } .window-content { position: relative; overflow-y: auto; display: flex; flex: 1; } ================================================ FILE: sass/button-groups.scss ================================================ // // Button-groups.css // Adapted from Bootstrap's button-groups.less (https://github.com/twbs/bootstrap/blob/master/less/button-groups.less) // -------------------------------------------------- // Button groups .btn-group { position: relative; display: inline-block; vertical-align: middle; // match .btn alignment given font-size hack above -webkit-app-region: no-drag; .btn { position: relative; float: left; // Bring the "active" button to the front &:focus, &:active{ z-index: 2; } &.active { z-index: 3; } } } // Prevent double borders when buttons are next to each other .btn-group { .btn + .btn, .btn + .btn-group, .btn-group + .btn, .btn-group + .btn-group { margin-left: -1px; } > .btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } > .btn:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn + .btn { border-left: 1px solid $dark-border-color; } .btn + .btn.active { border-left: 0; } // Selected state .active { color: #fff; border: 1px solid transparent; background-color: #6d6c6d; background-image: none; } // Invert the icon in the active button .active .icon { color: #fff; } } ================================================ FILE: sass/buttons.scss ================================================ // // Buttons.css // -------------------------------------------------- .btn { display: inline-block; padding: 3px 8px; margin-bottom: 0; font-size: 12px; line-height: 1.4; text-align: center; white-space: nowrap; vertical-align: middle; cursor: default; background-image: none; border: 1px solid transparent; border-radius: $default-border-radius; box-shadow: 0 1px 1px rgba(0,0,0,.06); -webkit-app-region: no-drag; &:focus { outline: none; box-shadow: none; } } .btn-mini { padding: 2px 6px; } .btn-large { padding: 6px 12px; } .btn-form { padding-right: 20px; padding-left: 20px; } // Normal buttons .btn-default { color: $gray-color; border-top-color: $dark-border-color; border-right-color: $dark-border-color; border-bottom-color: $darker-bottom-border-color; border-left-color: $dark-border-color; @include linear-gradient(#fcfcfc, #f1f1f1); &:active { background-color: #ddd; background-image: none; } } // Button variations .btn-primary, .btn-positive, .btn-negative, .btn-warning { color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.1); } // For primary buttons .btn-primary { border-color: #388df8; border-bottom-color: darken(#388df8, 15%); @include linear-gradient(#6eb4f7, #1a82fb); &:active { @include linear-gradient(darken(#6eb4f7, 10%), darken(#1a82fb, 10%)); } } // For positive buttons .btn-positive { border-color: darken($positive-color, 10%); border-bottom-color: darken($positive-color, 15%); @include linear-gradient(lighten($positive-color, 10%), darken($positive-color, 10%)); &:active { @include linear-gradient($positive-color, darken($positive-color, 15%)); } } // For negative actions .btn-negative { border-color: darken($negative-color, 10%); border-bottom-color: darken($negative-color, 15%); @include linear-gradient(lighten($negative-color, 10%), darken($negative-color, 10%)); &:active { @include linear-gradient($negative-color, darken($negative-color, 15%)); } } // For warning actions .btn-warning { border-color: darken($warning-color, 10%); border-bottom-color: darken($warning-color, 15%); @include linear-gradient(lighten($warning-color, 10%), darken($warning-color, 10%)); &:active { @include linear-gradient($warning-color, darken($warning-color, 15%)); } } // Icons in buttons .btn .icon { float: left; width: 14px; height: 14px; margin-top: 1px; margin-bottom: 1px; color: #737475; font-size: 14px; line-height: 1; } // Add the margin next to the icon if there is text in the button too .btn .icon-text { margin-right: 5px; } // This utility class add a down arrow icon to the button .btn-dropdown:after { font-family: "photon-entypo"; margin-left: 5px; content: '\e873'; } ================================================ FILE: sass/docs.scss ================================================ // // Docs.css // -------------------------------------------------- //Imports @import "mixins.scss"; // Docs variables $desktop-spacing: 3rem; $mobile-spacing: 1rem; //Base styles * { -webkit-box-sizing: border-box; box-sizing: border-box; } body { font: 16px/1.7 "Roboto", "Helvetica Neue", Helvetica, arial, sans-serif; font-weight: 300; color: #333; } // Typography h1, h2, h3, h4, h5, h6 { margin-top: 0; font-weight: 300; } h2 { margin-bottom: .18em; font-size: 1.6em; } h3 { margin-bottom: .15em; font-size: 1.3em; } h5 { font-weight: 400; } p { margin-top: .5em; margin-bottom: .5em; font-size: 1em; color: #555; } .download-decription { margin-bottom: 1em; } .lead { font-size: 1.1em; color: #777; } a { color: #4b92c6; text-decoration: none; } // Code .highlight { margin: 0; font-size: .9em; } // Buttons .btn { display: inline-block; padding: 10px 15px; margin-bottom: 0; font-size: 14px; line-height: 1; text-align: center; white-space: nowrap; vertical-align: middle; text-decoration: none; color: #666; background-image: none; border: 1px solid #ddd; border-radius: 4px; transition: all .2s linear; &:hover { border-color: #999; } } .btn-components, .btn-download { margin-right: $mobile-spacing; margin-left: $mobile-spacing; padding: 12px 30px; display: block; } .btn-download { margin-bottom: 1rem; color: #0f2b3c; border-color: transparent; background-color: rgba(255,255,255,.9); &:hover { border-color: transparent; background-color: #fff; } } @media (min-width: 32em) { .btn-components, .btn-download { margin-right: 0; margin-left: 0; display: inline-block; } .btn-download { margin-right: 1rem; margin-bottom: 0; margin-left: 0; } } .btn-inversed { color: #fff; border-color: rgba(255,255,255,.7); &:hover { border-color: #fff; } } // Use a simple flexbox grid .container { margin-left: auto; margin-right: auto; padding-left: $mobile-spacing; padding-right: $mobile-spacing; @include clearfix; } .col { position: relative; padding: 3rem $mobile-spacing; } @media (min-width: 32em) { .container { padding-left: 0; padding-right: 0; max-width: 65rem; } .col-group { display: -webkit-flex; // Make the grid work in older Safari browsers display: -ms-flex; // Make the grid work in older IE browsers display: flex } .col { min-width: 0; // Fixes everything for firefox padding-right: $desktop-spacing; padding-left: $desktop-spacing; flex: 1; } .col-one-third { max-width: 33.333%; } } // Masthead Jumbotron .masthead { position: relative; padding-bottom: 80px; color: #fff; background-image: url('/assets/img/photo-couch.png'); background-size: cover; &:after { position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ""; background-color: #000; opacity: .25; z-index: 1; } } .masthead-content { position: relative; margin-top: 50px; z-index: 10; } .masthead-title { margin: 0; padding: 0 1rem 1.5rem; font-size: 1.5em; text-shadow: 0 0 3px rgba(0,0,0,.3); } @media (min-width: 32em) { .masthead { background-position: center; &:after { display: none; } } .masthead-title { padding: 0 8rem 3rem; font-size: 2.1em; } } .photo-credit { position: absolute; left: 50%; bottom: 1em; font-size: .8em; color: #fff; white-space: nowrap; transform: translatex(-50%); transition: opacity .15s linear; opacity: .5; z-index: 10; &:hover { opacity: .9; } } // Sub page masthead .sub-masthead { color: #fff; text-shadow: 0 0 3px rgba(0,0,0,.3); @include directional-gradient(#000, #0f2b3c); } .subpage-header-content { padding: 2.5rem 1rem 3rem; } @media (min-width: 32em) { .subpage-header-content { padding: 3rem 3rem 4rem; } } .subpage-title { margin-top: 0; margin-bottom: 0; font-weight: 300; } .subpage-lead { margin-top: 0; margin-bottom: 0; color: #fff; font-size: 1.3em; font-weight: 300; opacity: .8; } // Navbar inside each masthead and sub masthead .nav { position: relative; padding-top: 1.2rem; padding-bottom: 1.2rem; margin-left: $mobile-spacing; margin-right: $mobile-spacing; display: block; font-weight: 500; border-bottom: 1px solid rgba(255,255,255,.2); z-index: 10; @include clearfix; } .title { display: block; font-size: 1em; color: #fff; } .nav-item { margin-right: .7rem; font-size: .8em; color: #fff; line-height: 1; opacity: .7; transition: opacity .15s linear; &:hover { opacity: 1; } } .nav-group { display: block; } @media (min-width: 32em) { .nav { margin-left: $desktop-spacing; margin-right: $desktop-spacing; } .title { float: left; } .nav-group { margin-top: .5em; float: right; } .nav-item { margin-right: $desktop-spacing; float: left; } .nav-item:last-child { margin-right: 0; } } // Wrap the example in window style (border and box-shadow) .example-component-window { height: 300px; overflow: hidden; box-shadow: 0 0 30px rgba(0,0,0,.1); border: 1px solid #bebebe; border-radius: 6px; } // The demo is useless on mobile @media (min-width: 32em) { .example-component-container { position: -webkit-sticky; position: -moz-sticky; position: -ms-sticky; position: -o-sticky; position: sticky; top: $desktop-spacing; min-width: 310px; margin-bottom: $desktop-spacing; } } // This is the homepage's demo .demo-app-container { height: 450px; margin-right: $desktop-spacing; margin-bottom: $desktop-spacing; margin-left: $desktop-spacing; display: none; border-radius: 6px; overflow: hidden; box-shadow: 0 0 60px rgba(0,0,0,.3); } // The demo is useless on mobile @media (min-width: 32em) { .demo-app-container { display: block; } } .demo-app, .component-example { width: 100%; height: 100%; display: block; border: 0; } // Sections .docs-section { border-bottom: 1px solid #ddd; } .docs-section-gray { background-color: #f8f8f8; } @media (min-width: 32em) { .basic-template-section { border-top: 1px solid #ddd; } } .oss-section { position: relative; color: #fff; text-shadow: 0 0 3px rgba(0,0,0,.3); @include directional-gradient(#000, #0f2b3c); a:not(.btn) { color: #fff; } p { color: darken(#ffffff, 20%); } .btn { margin-top: 20px; } .col:last-child { padding-top: 0; // Give the two sections consistent spaceing on mobile } } @media (min-width: 32em) { .oss-section .col:last-child { padding-top: $desktop-spacing; } } .component-section { margin-bottom: $mobile-spacing; border-bottom: 1px solid #ddd; &.last-component-section { margin-bottom: 0; } .col:last-child { padding-top: 0; } } // Component section (split) @media (min-width: 32em) { .component-section { margin-bottom: 0; border-bottom: 0; @include split-linear-gradient(#fff, #f5f5f5); .col { padding-top: $desktop-spacing; border-left: 1px solid #ddd; &:first-child { border-left: 0; } &:last-child { padding-top: $desktop-spacing; padding-bottom: 0; } } } } .component-description { margin-bottom: 2rem; } // Footer .footer { margin-top: -1px; // Remove the double border border-top: 1px solid #ddd; } .footer-content { font-size: .8em; font-weight: 500; opacity: .8; } .footer-links { padding-left: 0; list-style: none; li { display: inline-block; } } @media (min-width: 32em) { .footer-content { margin-right: 5rem; margin-left: 5rem; } } // Utilities .text-centered { text-align: center; } .docs-hr { margin-top: 2rem; margin-bottom: 2rem; background: 0 0; border: 0; border-bottom: 1px solid #ddd; } // Icons @font-face { font-family: "photon-entypo"; src: url('/dist/fonts/photon-entypo.eot'); src: url('/dist/fonts/photon-entypo.eot?#iefix') format('eot'), url('/dist/fonts/photon-entypo.woff') format('woff'), url('/dist/fonts/photon-entypo.ttf') format('truetype'); font-weight: normal; font-style: normal; } .icon:before { position: relative; display: inline-block; font-family: "photon-entypo"; speak: none; font-size: 100%; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-bucket:before { content: '\e8d5'; } /* '' */ .icon-code:before { content: '\e834'; } /* '' */ .icon-window:before { content: '\e86d'; } /* '' */ // Component specific CSS .buttons-component { height: 80px; } .button-groups-component { height: 110px; } .forms-component { height: 430px; } .icons-component { height: 700px; overflow: hidden; } ================================================ FILE: sass/forms.scss ================================================ // // Forms.css // Adapted from Bootstrap's forms.less (https://github.com/twbs/bootstrap/blob/master/less/forms.less) // -------------------------------------------------- label { display: inline-block; font-size: $font-size-default; margin-bottom: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } input[type="search"] { box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; line-height: normal; } .form-control { display: inline-block; width: 100%; min-height: 25px; padding: $padding-less $padding; font-size: $font-size-default; line-height: $line-height-default; background-color: $chrome-color; border: 1px solid $border-color; border-radius: $default-border-radius; outline: none; &:focus { border-color: $focus-input-color; box-shadow: 0 0 0 3px $focus-input-color; } } // Reset height for `textarea`s textarea { height: auto; } // Form groups // // Designed to help with the organization and spacing of vertical forms. For // horizontal forms, use the predefined grid classes. .form-group { margin-bottom: 10px; } // Checkboxes and radios // // Indent the labels to position radios/checkboxes as hanging controls. .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; label { padding-left: 20px; margin-bottom: 0; font-weight: normal; } } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-left: -20px; margin-top: 4px; } // Form actions .form-actions .btn { margin-right: 10px; &:last-child { margin-right: 0; } } ================================================ FILE: sass/grid.scss ================================================ // // The Grid.css // -------------------------------------------------- .pane-group { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; } .pane { position: relative; overflow-y: auto; flex: 1; border-left: 1px solid $border-color; &:first-child { border-left: 0; } } .pane-sm { max-width: 220px; min-width: 150px; } .pane-mini { width: 80px; flex: none; } .pane-one-fourth { width: 25%; flex: none; } .pane-one-third { width: 33.3%; flex: none; } ================================================ FILE: sass/icons.scss ================================================ @font-face { font-family: "photon-entypo"; src: url($font-path + 'photon-entypo.eot'); src: url($font-path + 'photon-entypo.eot?#iefix') format('eot'), url($font-path + 'photon-entypo.woff') format('woff'), url($font-path + 'photon-entypo.ttf') format('truetype'); font-weight: normal; font-style: normal; } .icon:before { position: relative; display: inline-block; font-family: "photon-entypo"; speak: none; font-size: 100%; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-note:before { content: '\e800'; } /* '' */ .icon-note-beamed:before { content: '\e801'; } /* '' */ .icon-music:before { content: '\e802'; } /* '' */ .icon-search:before { content: '\e803'; } /* '' */ .icon-flashlight:before { content: '\e804'; } /* '' */ .icon-mail:before { content: '\e805'; } /* '' */ .icon-heart:before { content: '\e806'; } /* '' */ .icon-heart-empty:before { content: '\e807'; } /* '' */ .icon-star:before { content: '\e808'; } /* '' */ .icon-star-empty:before { content: '\e809'; } /* '' */ .icon-user:before { content: '\e80a'; } /* '' */ .icon-users:before { content: '\e80b'; } /* '' */ .icon-user-add:before { content: '\e80c'; } /* '' */ .icon-video:before { content: '\e80d'; } /* '' */ .icon-picture:before { content: '\e80e'; } /* '' */ .icon-camera:before { content: '\e80f'; } /* '' */ .icon-layout:before { content: '\e810'; } /* '' */ .icon-menu:before { content: '\e811'; } /* '' */ .icon-check:before { content: '\e812'; } /* '' */ .icon-cancel:before { content: '\e813'; } /* '' */ .icon-cancel-circled:before { content: '\e814'; } /* '' */ .icon-cancel-squared:before { content: '\e815'; } /* '' */ .icon-plus:before { content: '\e816'; } /* '' */ .icon-plus-circled:before { content: '\e817'; } /* '' */ .icon-plus-squared:before { content: '\e818'; } /* '' */ .icon-minus:before { content: '\e819'; } /* '' */ .icon-minus-circled:before { content: '\e81a'; } /* '' */ .icon-minus-squared:before { content: '\e81b'; } /* '' */ .icon-help:before { content: '\e81c'; } /* '' */ .icon-help-circled:before { content: '\e81d'; } /* '' */ .icon-info:before { content: '\e81e'; } /* '' */ .icon-info-circled:before { content: '\e81f'; } /* '' */ .icon-back:before { content: '\e820'; } /* '' */ .icon-home:before { content: '\e821'; } /* '' */ .icon-link:before { content: '\e822'; } /* '' */ .icon-attach:before { content: '\e823'; } /* '' */ .icon-lock:before { content: '\e824'; } /* '' */ .icon-lock-open:before { content: '\e825'; } /* '' */ .icon-eye:before { content: '\e826'; } /* '' */ .icon-tag:before { content: '\e827'; } /* '' */ .icon-bookmark:before { content: '\e828'; } /* '' */ .icon-bookmarks:before { content: '\e829'; } /* '' */ .icon-flag:before { content: '\e82a'; } /* '' */ .icon-thumbs-up:before { content: '\e82b'; } /* '' */ .icon-thumbs-down:before { content: '\e82c'; } /* '' */ .icon-download:before { content: '\e82d'; } /* '' */ .icon-upload:before { content: '\e82e'; } /* '' */ .icon-upload-cloud:before { content: '\e82f'; } /* '' */ .icon-reply:before { content: '\e830'; } /* '' */ .icon-reply-all:before { content: '\e831'; } /* '' */ .icon-forward:before { content: '\e832'; } /* '' */ .icon-quote:before { content: '\e833'; } /* '' */ .icon-code:before { content: '\e834'; } /* '' */ .icon-export:before { content: '\e835'; } /* '' */ .icon-pencil:before { content: '\e836'; } /* '' */ .icon-feather:before { content: '\e837'; } /* '' */ .icon-print:before { content: '\e838'; } /* '' */ .icon-retweet:before { content: '\e839'; } /* '' */ .icon-keyboard:before { content: '\e83a'; } /* '' */ .icon-comment:before { content: '\e83b'; } /* '' */ .icon-chat:before { content: '\e83c'; } /* '' */ .icon-bell:before { content: '\e83d'; } /* '' */ .icon-attention:before { content: '\e83e'; } /* '' */ .icon-alert:before { content: '\e83f'; } /* '' */ .icon-vcard:before { content: '\e840'; } /* '' */ .icon-address:before { content: '\e841'; } /* '' */ .icon-location:before { content: '\e842'; } /* '' */ .icon-map:before { content: '\e843'; } /* '' */ .icon-direction:before { content: '\e844'; } /* '' */ .icon-compass:before { content: '\e845'; } /* '' */ .icon-cup:before { content: '\e846'; } /* '' */ .icon-trash:before { content: '\e847'; } /* '' */ .icon-doc:before { content: '\e848'; } /* '' */ .icon-docs:before { content: '\e849'; } /* '' */ .icon-doc-landscape:before { content: '\e84a'; } /* '' */ .icon-doc-text:before { content: '\e84b'; } /* '' */ .icon-doc-text-inv:before { content: '\e84c'; } /* '' */ .icon-newspaper:before { content: '\e84d'; } /* '' */ .icon-book-open:before { content: '\e84e'; } /* '' */ .icon-book:before { content: '\e84f'; } /* '' */ .icon-folder:before { content: '\e850'; } /* '' */ .icon-archive:before { content: '\e851'; } /* '' */ .icon-box:before { content: '\e852'; } /* '' */ .icon-rss:before { content: '\e853'; } /* '' */ .icon-phone:before { content: '\e854'; } /* '' */ .icon-cog:before { content: '\e855'; } /* '' */ .icon-tools:before { content: '\e856'; } /* '' */ .icon-share:before { content: '\e857'; } /* '' */ .icon-shareable:before { content: '\e858'; } /* '' */ .icon-basket:before { content: '\e859'; } /* '' */ .icon-bag:before { content: '\e85a'; } /* '' */ .icon-calendar:before { content: '\e85b'; } /* '' */ .icon-login:before { content: '\e85c'; } /* '' */ .icon-logout:before { content: '\e85d'; } /* '' */ .icon-mic:before { content: '\e85e'; } /* '' */ .icon-mute:before { content: '\e85f'; } /* '' */ .icon-sound:before { content: '\e860'; } /* '' */ .icon-volume:before { content: '\e861'; } /* '' */ .icon-clock:before { content: '\e862'; } /* '' */ .icon-hourglass:before { content: '\e863'; } /* '' */ .icon-lamp:before { content: '\e864'; } /* '' */ .icon-light-down:before { content: '\e865'; } /* '' */ .icon-light-up:before { content: '\e866'; } /* '' */ .icon-adjust:before { content: '\e867'; } /* '' */ .icon-block:before { content: '\e868'; } /* '' */ .icon-resize-full:before { content: '\e869'; } /* '' */ .icon-resize-small:before { content: '\e86a'; } /* '' */ .icon-popup:before { content: '\e86b'; } /* '' */ .icon-publish:before { content: '\e86c'; } /* '' */ .icon-window:before { content: '\e86d'; } /* '' */ .icon-arrow-combo:before { content: '\e86e'; } /* '' */ .icon-down-circled:before { content: '\e86f'; } /* '' */ .icon-left-circled:before { content: '\e870'; } /* '' */ .icon-right-circled:before { content: '\e871'; } /* '' */ .icon-up-circled:before { content: '\e872'; } /* '' */ .icon-down-open:before { content: '\e873'; } /* '' */ .icon-left-open:before { content: '\e874'; } /* '' */ .icon-right-open:before { content: '\e875'; } /* '' */ .icon-up-open:before { content: '\e876'; } /* '' */ .icon-down-open-mini:before { content: '\e877'; } /* '' */ .icon-left-open-mini:before { content: '\e878'; } /* '' */ .icon-right-open-mini:before { content: '\e879'; } /* '' */ .icon-up-open-mini:before { content: '\e87a'; } /* '' */ .icon-down-open-big:before { content: '\e87b'; } /* '' */ .icon-left-open-big:before { content: '\e87c'; } /* '' */ .icon-right-open-big:before { content: '\e87d'; } /* '' */ .icon-up-open-big:before { content: '\e87e'; } /* '' */ .icon-down:before { content: '\e87f'; } /* '' */ .icon-left:before { content: '\e880'; } /* '' */ .icon-right:before { content: '\e881'; } /* '' */ .icon-up:before { content: '\e882'; } /* '' */ .icon-down-dir:before { content: '\e883'; } /* '' */ .icon-left-dir:before { content: '\e884'; } /* '' */ .icon-right-dir:before { content: '\e885'; } /* '' */ .icon-up-dir:before { content: '\e886'; } /* '' */ .icon-down-bold:before { content: '\e887'; } /* '' */ .icon-left-bold:before { content: '\e888'; } /* '' */ .icon-right-bold:before { content: '\e889'; } /* '' */ .icon-up-bold:before { content: '\e88a'; } /* '' */ .icon-down-thin:before { content: '\e88b'; } /* '' */ .icon-left-thin:before { content: '\e88c'; } /* '' */ .icon-right-thin:before { content: '\e88d'; } /* '' */ .icon-up-thin:before { content: '\e88e'; } /* '' */ .icon-ccw:before { content: '\e88f'; } /* '' */ .icon-cw:before { content: '\e890'; } /* '' */ .icon-arrows-ccw:before { content: '\e891'; } /* '' */ .icon-level-down:before { content: '\e892'; } /* '' */ .icon-level-up:before { content: '\e893'; } /* '' */ .icon-shuffle:before { content: '\e894'; } /* '' */ .icon-loop:before { content: '\e895'; } /* '' */ .icon-switch:before { content: '\e896'; } /* '' */ .icon-play:before { content: '\e897'; } /* '' */ .icon-stop:before { content: '\e898'; } /* '' */ .icon-pause:before { content: '\e899'; } /* '' */ .icon-record:before { content: '\e89a'; } /* '' */ .icon-to-end:before { content: '\e89b'; } /* '' */ .icon-to-start:before { content: '\e89c'; } /* '' */ .icon-fast-forward:before { content: '\e89d'; } /* '' */ .icon-fast-backward:before { content: '\e89e'; } /* '' */ .icon-progress-0:before { content: '\e89f'; } /* '' */ .icon-progress-1:before { content: '\e8a0'; } /* '' */ .icon-progress-2:before { content: '\e8a1'; } /* '' */ .icon-progress-3:before { content: '\e8a2'; } /* '' */ .icon-target:before { content: '\e8a3'; } /* '' */ .icon-palette:before { content: '\e8a4'; } /* '' */ .icon-list:before { content: '\e8a5'; } /* '' */ .icon-list-add:before { content: '\e8a6'; } /* '' */ .icon-signal:before { content: '\e8a7'; } /* '' */ .icon-trophy:before { content: '\e8a8'; } /* '' */ .icon-battery:before { content: '\e8a9'; } /* '' */ .icon-back-in-time:before { content: '\e8aa'; } /* '' */ .icon-monitor:before { content: '\e8ab'; } /* '' */ .icon-mobile:before { content: '\e8ac'; } /* '' */ .icon-network:before { content: '\e8ad'; } /* '' */ .icon-cd:before { content: '\e8ae'; } /* '' */ .icon-inbox:before { content: '\e8af'; } /* '' */ .icon-install:before { content: '\e8b0'; } /* '' */ .icon-globe:before { content: '\e8b1'; } /* '' */ .icon-cloud:before { content: '\e8b2'; } /* '' */ .icon-cloud-thunder:before { content: '\e8b3'; } /* '' */ .icon-flash:before { content: '\e8b4'; } /* '' */ .icon-moon:before { content: '\e8b5'; } /* '' */ .icon-flight:before { content: '\e8b6'; } /* '' */ .icon-paper-plane:before { content: '\e8b7'; } /* '' */ .icon-leaf:before { content: '\e8b8'; } /* '' */ .icon-lifebuoy:before { content: '\e8b9'; } /* '' */ .icon-mouse:before { content: '\e8ba'; } /* '' */ .icon-briefcase:before { content: '\e8bb'; } /* '' */ .icon-suitcase:before { content: '\e8bc'; } /* '' */ .icon-dot:before { content: '\e8bd'; } /* '' */ .icon-dot-2:before { content: '\e8be'; } /* '' */ .icon-dot-3:before { content: '\e8bf'; } /* '' */ .icon-brush:before { content: '\e8c0'; } /* '' */ .icon-magnet:before { content: '\e8c1'; } /* '' */ .icon-infinity:before { content: '\e8c2'; } /* '' */ .icon-erase:before { content: '\e8c3'; } /* '' */ .icon-chart-pie:before { content: '\e8c4'; } /* '' */ .icon-chart-line:before { content: '\e8c5'; } /* '' */ .icon-chart-bar:before { content: '\e8c6'; } /* '' */ .icon-chart-area:before { content: '\e8c7'; } /* '' */ .icon-tape:before { content: '\e8c8'; } /* '' */ .icon-graduation-cap:before { content: '\e8c9'; } /* '' */ .icon-language:before { content: '\e8ca'; } /* '' */ .icon-ticket:before { content: '\e8cb'; } /* '' */ .icon-water:before { content: '\e8cc'; } /* '' */ .icon-droplet:before { content: '\e8cd'; } /* '' */ .icon-air:before { content: '\e8ce'; } /* '' */ .icon-credit-card:before { content: '\e8cf'; } /* '' */ .icon-floppy:before { content: '\e8d0'; } /* '' */ .icon-clipboard:before { content: '\e8d1'; } /* '' */ .icon-megaphone:before { content: '\e8d2'; } /* '' */ .icon-database:before { content: '\e8d3'; } /* '' */ .icon-drive:before { content: '\e8d4'; } /* '' */ .icon-bucket:before { content: '\e8d5'; } /* '' */ .icon-thermometer:before { content: '\e8d6'; } /* '' */ .icon-key:before { content: '\e8d7'; } /* '' */ .icon-flow-cascade:before { content: '\e8d8'; } /* '' */ .icon-flow-branch:before { content: '\e8d9'; } /* '' */ .icon-flow-tree:before { content: '\e8da'; } /* '' */ .icon-flow-line:before { content: '\e8db'; } /* '' */ .icon-flow-parallel:before { content: '\e8dc'; } /* '' */ .icon-rocket:before { content: '\e8dd'; } /* '' */ .icon-gauge:before { content: '\e8de'; } /* '' */ .icon-traffic-cone:before { content: '\e8df'; } /* '' */ .icon-cc:before { content: '\e8e0'; } /* '' */ .icon-cc-by:before { content: '\e8e1'; } /* '' */ .icon-cc-nc:before { content: '\e8e2'; } /* '' */ .icon-cc-nc-eu:before { content: '\e8e3'; } /* '' */ .icon-cc-nc-jp:before { content: '\e8e4'; } /* '' */ .icon-cc-sa:before { content: '\e8e5'; } /* '' */ .icon-cc-nd:before { content: '\e8e6'; } /* '' */ .icon-cc-pd:before { content: '\e8e7'; } /* '' */ .icon-cc-zero:before { content: '\e8e8'; } /* '' */ .icon-cc-share:before { content: '\e8e9'; } /* '' */ .icon-cc-remix:before { content: '\e8ea'; } /* '' */ .icon-github:before { content: '\e8eb'; } /* '' */ .icon-github-circled:before { content: '\e8ec'; } /* '' */ .icon-flickr:before { content: '\e8ed'; } /* '' */ .icon-flickr-circled:before { content: '\e8ee'; } /* '' */ .icon-vimeo:before { content: '\e8ef'; } /* '' */ .icon-vimeo-circled:before { content: '\e8f0'; } /* '' */ .icon-twitter:before { content: '\e8f1'; } /* '' */ .icon-twitter-circled:before { content: '\e8f2'; } /* '' */ .icon-facebook:before { content: '\e8f3'; } /* '' */ .icon-facebook-circled:before { content: '\e8f4'; } /* '' */ .icon-facebook-squared:before { content: '\e8f5'; } /* '' */ .icon-gplus:before { content: '\e8f6'; } /* '' */ .icon-gplus-circled:before { content: '\e8f7'; } /* '' */ .icon-pinterest:before { content: '\e8f8'; } /* '' */ .icon-pinterest-circled:before { content: '\e8f9'; } /* '' */ .icon-tumblr:before { content: '\e8fa'; } /* '' */ .icon-tumblr-circled:before { content: '\e8fb'; } /* '' */ .icon-linkedin:before { content: '\e8fc'; } /* '' */ .icon-linkedin-circled:before { content: '\e8fd'; } /* '' */ .icon-dribbble:before { content: '\e8fe'; } /* '' */ .icon-dribbble-circled:before { content: '\e8ff'; } /* '' */ .icon-stumbleupon:before { content: '\e900'; } /* '' */ .icon-stumbleupon-circled:before { content: '\e901'; } /* '' */ .icon-lastfm:before { content: '\e902'; } /* '' */ .icon-lastfm-circled:before { content: '\e903'; } /* '' */ .icon-rdio:before { content: '\e904'; } /* '' */ .icon-rdio-circled:before { content: '\e905'; } /* '' */ .icon-spotify:before { content: '\e906'; } /* '' */ .icon-spotify-circled:before { content: '\e907'; } /* '' */ .icon-qq:before { content: '\e908'; } /* '' */ .icon-instagram:before { content: '\e909'; } /* '' */ .icon-dropbox:before { content: '\e90a'; } /* '' */ .icon-evernote:before { content: '\e90b'; } /* '' */ .icon-flattr:before { content: '\e90c'; } /* '' */ .icon-skype:before { content: '\e90d'; } /* '' */ .icon-skype-circled:before { content: '\e90e'; } /* '' */ .icon-renren:before { content: '\e90f'; } /* '' */ .icon-sina-weibo:before { content: '\e910'; } /* '' */ .icon-paypal:before { content: '\e911'; } /* '' */ .icon-picasa:before { content: '\e912'; } /* '' */ .icon-soundcloud:before { content: '\e913'; } /* '' */ .icon-mixi:before { content: '\e914'; } /* '' */ .icon-behance:before { content: '\e915'; } /* '' */ .icon-google-circles:before { content: '\e916'; } /* '' */ .icon-vkontakte:before { content: '\e917'; } /* '' */ .icon-smashing:before { content: '\e918'; } /* '' */ .icon-sweden:before { content: '\e919'; } /* '' */ .icon-db-shape:before { content: '\e91a'; } /* '' */ .icon-logo-db:before { content: '\e91b'; } /* '' */ ================================================ FILE: sass/images.scss ================================================ // // Images.scss // -------------------------------------------------- img { -webkit-user-drag: text; } .img-circle { border-radius: 50%; } .img-rounded { border-radius: $default-border-radius; } ================================================ FILE: sass/lists.scss ================================================ // // Lists.scss // -------------------------------------------------- // List groups // These are to be used when shows list items that contain // more substanstial amounts of information. (headings, images, text, etc.) .list-group { width: 100%; list-style: none; margin: 0; padding: 0; * { margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } .list-group-item { padding: 10px; font-size: 12px; color: #414142; border-top: 1px solid $border-color; &:first-child { border-top: 0; } &.active, // `.selected` is deprecated. Use `.active` instead. &.selected { color: #fff; background-color: $active-color; } } .list-group-header { padding: 10px; } // Media objects in lists .media-object { margin-top: 3px; } .media-object.pull-left { margin-right: 10px } .media-object.pull-right { margin-left: 10px } .media-body { overflow: hidden; } ================================================ FILE: sass/mixins.scss ================================================ // // Mixins // -------------------------------------------------- // General // -------------------------------------------------- // Clearfix // Source: http://nicolasgallagher.com/micro-clearfix-hack/ // // For modern browsers // 1. The space content is one way to avoid an Opera bug when the // contenteditable attribute is included anywhere else in the document. // Otherwise it causes space to appear at the top and bottom of elements // that are clearfixed. // 2. The use of `table` rather than `block` is only necessary if using // `:before` to contain the top-margins of child elements. @mixin clearfix() { &:before, &:after { display: table; // 2 content: " "; // 1 } &:after { clear: both; } } // Box shadow @mixin box-shadow($shadow...) { -webkit-box-shadow: $shadow; box-shadow: $shadow; } // Gradients // From top to bottom @mixin linear-gradient($color-from, $color-to) { background-color: $color-from; // Old browsers background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$color-from), color-stop(100%,$color-to)); // Chrome, Safari4+ background-image: -webkit-linear-gradient(top, $color-from 0%, $color-to 100%); // Chrome10+, Safari5.1+ background-image: linear-gradient(to bottom, $color-from 0%, $color-to 100%); // W3C } // From left to right @mixin split-linear-gradient($color-from, $color-to) { background-color: $color-from; // Old browsers background-image: -webkit-gradient(linear, left top, right top, color-stop(50%,$color-from), color-stop(50%,$color-to)); // Chrome, Safari4+ background-image: -webkit-linear-gradient(left, $color-from 50%, $color-to 50%); // Chrome10+, Safari5.1+ background-image: linear-gradient(to right, $color-from 50%, $color-to 50%); // W3C } // From bottom left to top right @mixin directional-gradient($color-from, $color-to, $deg: 45deg) { background-color: $color-from; // Old browsers background-image: -webkit-gradient(linear, left bottom, right top, color-stop(0%,$color-from), color-stop(100%,$color-to)); // Chrome, Safari4+ background-image: -webkit-linear-gradient($deg, $color-from 0%, $color-to 100%); // Chrome10+, Safari5.1+ background-image: -moz-linear-gradient($deg, $color-from 0%, $color-to 100%); // FF3.6+ background-image: linear-gradient($deg, $color-from 0%, $color-to 100%); // W3C } ================================================ FILE: sass/navs.scss ================================================ // // Navs.scss // -------------------------------------------------- .nav-group { font-size: 14px; } .nav-group-item { padding: 2px 10px 2px 25px; display: block; color: $gray-color; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; &:active, &.active { background-color: #dcdfe1; } .icon { width: 19px; // Prevents a one pixel cutoff height: 18px; float: left; color: #737475; margin-top: -3px; margin-right: 7px; font-size: 18px; text-align: center; } } .nav-group-title { margin: 0; padding: 10px 10px 2px; font-size: 12px; font-weight: 500; color: lighten($gray-color, 20%); } ================================================ FILE: sass/normalize.scss ================================================ // Based on normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css // This normalize aims to reduce the number of rules and focus on Chrome. // // 1. Normalize vertical alignment of `progress` in Chrome. // audio, canvas, progress, video { vertical-align: baseline; // 1 } // // Prevent modern browsers from displaying `audio` without controls. // audio:not([controls]) { display: none; } // Links // ========================================================================== // // Improve readability of focused elements when they are also in an // active/hover state. // a:active, a:hover { outline: 0; } // Text-level semantics // ========================================================================== // // Address styling not present in IE 8/9/10/11, Safari, and Chrome. // abbr[title] { border-bottom: 1px dotted; } // // Address style set to `bolder` in Chrome. // b, strong { font-weight: bold; } // // Address styling not present in Chrome. // dfn { font-style: italic; } // // Address variable `h1` font-size and margin within `section` and `article` // contexts in Chrome. // h1 { font-size: 2em; margin: 0.67em 0; } // // Address inconsistent and variable font size. // small { font-size: 80%; } // // Prevent `sub` and `sup` affecting `line-height`. // sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } // Grouping content // ========================================================================== // // Contain overflow. // pre { overflow: auto; } // // Address odd `em`-unit font size rendering. // code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } // Forms // ========================================================================== // // Known limitation: by default, Chrome allows very limited // styling of `select`, unless a `border` property is set. // // // 1. Correct color not being inherited. // Known issue: affects color of disabled elements. // 2. Correct font properties not being inherited. // 3. Resets margin // button, input, optgroup, select, textarea { color: inherit; // 1 font: inherit; // 2 margin: 0; // 3 } // // Fix the cursor style for Chrome's increment/decrement buttons. For certain // `font-size` values of the `input`, it causes the cursor style of the // decrement button to change from `default` to `text`. // input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } // // 1. Address `appearance` set to `searchfield` in Chrome. // 2. Address `box-sizing` set to `border-box` in Chrome. // input[type="search"] { -webkit-appearance: textfield; // 1 box-sizing: content-box; // 2 } // // Remove inner padding and search cancel button in Chrome on OS X. // input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } // // Define consistent border, margin, and padding. // fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } // // 1. Correct `color` not being inherited in IE 8/9/10/11. // 2. Remove padding so people aren't caught out if they zero out fieldsets. // legend { border: 0; // 1 padding: 0; // 2 } // Tables // ========================================================================== // // Remove most spacing between table cells. // table { border-collapse: collapse; border-spacing: 0; } td, th { padding: 0; } ================================================ FILE: sass/photon.scss ================================================ // Variables @import "variables.scss"; // Mixins @import "mixins.scss"; // Normalize, Appify, Base, & Utilities CSS @import "normalize.scss"; @import "appify.scss"; @import "base.scss"; @import "utilities.scss"; // Components @import "buttons.scss"; @import "button-groups.scss"; @import "bars.scss"; @import "forms.scss"; @import "grid.scss"; @import "images.scss"; @import "lists.scss"; @import "navs.scss"; @import "icons.scss"; @import "tables.scss"; @import "tabs.scss"; ================================================ FILE: sass/tables.scss ================================================ // // Navs.scss // -------------------------------------------------- table { width: 100%; border: 0; border-collapse: separate; font-size: 12px; text-align: left; } thead { background-color: #f5f5f4; } tbody { background-color: #fff; } .table-striped tr:nth-child(even) { background-color: #f5f5f4; } tr:active, .table-striped tr:active:nth-child(even) { color: #fff; background-color: $active-color; } thead tr:active { color: $gray-color; background-color: #f5f5f4; } th { font-weight: normal; border-right: 1px solid $border-color; border-bottom: 1px solid $border-color; } th, td { padding: 2px 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; &:last-child { border-right: 0; } } ================================================ FILE: sass/tabs.scss ================================================ // Tabs .tab-group { margin-top: -1px; display: flex; border-top: 1px solid #989698; border-bottom: 1px solid #989698; } .tab-item { position: relative; flex: 1; padding: 3px; font-size: 12px; text-align: center; border-left: 1px solid #989698; @include linear-gradient(#b8b6b8, #b0aeb0); &:first-child { border-left: 0; } &.active { @include linear-gradient(#d4d2d4, #cccacc); } .icon-close-tab { position: absolute; top: 50%; left: 5px; width: 15px; height: 15px; font-size: 15px; line-height: 15px; text-align: center; color: #666; opacity: 0; transition: opacity .1s linear, background-color .1s linear; border-radius: 3px; transform: translateY(-50%); z-index: 10; } &:after { position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ""; background-color: rgba(0,0,0,.08); opacity: 0; transition: opacity .1s linear; z-index: 1; } // Okay, I know... this is nuts but... &:hover:not(.active):after { opacity: 1; } &:hover .icon-close-tab { opacity: 1; } .icon-close-tab:hover { background-color: rgba(0,0,0,.08); } } .tab-item-fixed { flex: none; padding: 3px 10px; } ================================================ FILE: sass/utilities.scss ================================================ // // Utilities styles // -------------------------------------------------- // Utility classes .selectable-text { cursor: text; -webkit-user-select: text; } // Text alignment .text-center { text-align: center; } .text-right { text-align: right; } .text-left { text-align: left; } // Floats .pull-left { float: left; } .pull-right { float: right; } // Padding .padded { padding: $padding; } .padded-less { padding: $padding-less; } .padded-more { padding: $padding-more; } // Vertical Padding .padded-vertically { padding-top: $padding; padding-bottom: $padding; } .padded-vertically-less { padding-top: $padding-less; padding-bottom: $padding-less; } .padded-vertically-more { padding-top: $padding-more; padding-bottom: $padding-more; } // Horizontal Padding .padded-horizontally { padding-right: $padding; padding-left: $padding; } .padded-horizontally-less { padding-right: $padding-less; padding-left: $padding-less; } .padded-horizontally-more { padding-right: $padding-more; padding-left: $padding-more; } // Padding top .padded-top { padding-top: $padding; } .padded-top-less { padding-top: $padding-less; } .padded-top-more { padding-top: $padding-more; } // Padding bottom .padded-bottom { padding-bottom: $padding; } .padded-bottom-less { padding-bottom: $padding-less; } .padded-bottom-more { padding-bottom: $padding-more; } // Set the background-color to set a sidebar back a bit. .sidebar { background-color: #f5f5f4; } // Allow the window to be dragged around the desktop by any element in the application. .draggable { -webkit-app-region: drag; } // within draggable regions, allow specific elements to be exempted. .not-draggable { -webkit-app-region: no-drag; } // Clearfix .clearfix { @include clearfix(); } ================================================ FILE: sass/variables.scss ================================================ // // Variables // -------------------------------------------------- // Type // -------------------------------------------------- $font-path: '../fonts/' !default; // Try to use the system's font on whatever platform the user is on. $font-family-default: system, -apple-system, ".SFNSDisplay-Regular", "Helvetica Neue", Helvetica, "Segoe UI", sans-serif !default; $font-size-default: 13px !default; $font-weight: 500 !default; $font-weight-bold: 700 !default; $font-weight-light: 300 !default; $line-height-default: 1.6 !default; // Colors // -------------------------------------------------- // Main colors $primary-color: #3b99fc !default; $chrome-color: #fff !default; // Copy $gray-color: #333 !default; // Borders $border-color: #ddd !default; $dark-border-color: #c2c0c2 !default; $darker-bottom-border-color: #a19fa1 !default; $toolbar-border-color: #939293 !default; // Action colors $default-color: #fff !default; $positive-color: #34c84a !default; $negative-color: #fc605b !default; $warning-color: #fdbc40 !default; // Shades $dark-color: #57acf5 !default; // Focus and active colors $active-color: #116cd6; $focus-input-color: lighten($primary-color, 10%) !default; // Other // -------------------------------------------------- // Border radius $default-border-radius: 4px; // Padding $padding: 10px; $padding-mini: 3px; $padding-less: 5px; $padding-more: 20px;