├── .github └── main.workflow ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── TrampolineUI_3_11.png ├── TrampolineUI_3_12.png ├── TrampolineUI_3_13.png ├── TrampolineUI_3_14.png ├── TrampolineUI_3_17.png ├── docs ├── css │ ├── animate.css │ ├── bootstrap.css │ ├── bootstrap.css.map │ ├── flexslider.css │ ├── icomoon.css │ ├── magnific-popup.css │ ├── owl.carousel.min.css │ ├── owl.theme.default.min.css │ ├── style.css │ ├── style.css.map │ └── themify-icons.css ├── fonts │ ├── bootstrap │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── icomoon │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ └── icomoon.woff │ └── themify-icons │ │ ├── themify.eot │ │ ├── themify.svg │ │ ├── themify.ttf │ │ └── themify.woff ├── images │ ├── client_1.png │ ├── client_2.png │ ├── client_3.png │ ├── client_4.png │ ├── client_5.png │ ├── cube.png │ ├── img_1.jpg │ ├── img_2.jpg │ ├── img_3.jpg │ ├── img_4.jpg │ ├── img_md_1.jpg │ ├── loader.gif │ ├── loc.png │ ├── logo.png │ ├── person_1.jpg │ ├── person_2.jpg │ ├── person_3.jpg │ ├── staff_1.jpg │ ├── staff_2.jpg │ ├── staff_3.jpg │ └── staff_4.jpg ├── index.html ├── js │ ├── bootstrap.min.js │ ├── google_map.js │ ├── jquery.countTo.js │ ├── jquery.easing.1.3.js │ ├── jquery.magnific-popup.min.js │ ├── jquery.min.js │ ├── jquery.stellar.min.js │ ├── jquery.waypoints.min.js │ ├── magnific-popup-options.js │ ├── main.js │ ├── modernizr-2.6.2.min.js │ ├── owl.carousel.min.js │ └── respond.min.js ├── sass │ ├── _bootstrap-compass.scss │ ├── _bootstrap-mincer.scss │ ├── _bootstrap-sprockets.scss │ ├── bootstrap.scss │ ├── bootstrap │ │ ├── _alerts.scss │ │ ├── _badges.scss │ │ ├── _breadcrumbs.scss │ │ ├── _button-groups.scss │ │ ├── _buttons.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _code.scss │ │ ├── _component-animations.scss │ │ ├── _dropdowns.scss │ │ ├── _forms.scss │ │ ├── _glyphicons.scss │ │ ├── _grid.scss │ │ ├── _input-groups.scss │ │ ├── _jumbotron.scss │ │ ├── _labels.scss │ │ ├── _list-group.scss │ │ ├── _media.scss │ │ ├── _mixins.scss │ │ ├── _modals.scss │ │ ├── _navbar.scss │ │ ├── _navs.scss │ │ ├── _normalize.scss │ │ ├── _pager.scss │ │ ├── _pagination.scss │ │ ├── _panels.scss │ │ ├── _popovers.scss │ │ ├── _print.scss │ │ ├── _progress-bars.scss │ │ ├── _responsive-embed.scss │ │ ├── _responsive-utilities.scss │ │ ├── _scaffolding.scss │ │ ├── _tables.scss │ │ ├── _theme.scss │ │ ├── _thumbnails.scss │ │ ├── _tooltip.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── _wells.scss │ │ └── mixins │ │ │ ├── _alerts.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _buttons.scss │ │ │ ├── _center-block.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _grid.scss │ │ │ ├── _hide-text.scss │ │ │ ├── _image.scss │ │ │ ├── _labels.scss │ │ │ ├── _list-group.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _nav-vertical-align.scss │ │ │ ├── _opacity.scss │ │ │ ├── _pagination.scss │ │ │ ├── _panels.scss │ │ │ ├── _progress-bar.scss │ │ │ ├── _reset-filter.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _responsive-visibility.scss │ │ │ ├── _size.scss │ │ │ ├── _tab-focus.scss │ │ │ ├── _table-row.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _text-overflow.scss │ │ │ └── _vendor-prefixes.scss │ └── style.scss └── wiki │ ├── external_instance_form.png │ ├── external_instance_list.png │ ├── git_detail.png │ ├── git_form.png │ ├── groups_form.png │ ├── groups_form_detail.png │ ├── groups_form_detail2.png │ ├── groups_list.png │ ├── groups_list_detail.png │ ├── launch_external_instance_form.png │ ├── launch_group_form.png │ ├── launch_instance_form.png │ ├── launched_instance.png │ ├── maven_form.png │ ├── registered_ms.png │ └── registered_ms_forms.png ├── microservice-example-gradle-v1x ├── .gitignore ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── ernest │ │ │ └── applications │ │ │ └── microserviceexamplegradle │ │ │ └── MicroserviceExampleGradleApplication.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── org │ └── ernest │ └── applications │ └── microserviceexamplegradle │ └── MicroserviceExampleGradleApplicationTests.java ├── microservice-example-gradle-v2x ├── .gitignore ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── service.log ├── service.log.2018-03-17.0.gz ├── service.log.2018-03-18.0.gz └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── trampoline │ │ │ └── microserviceexamplegradlev2x │ │ │ └── MicroserviceExampleGradleV2xApplication.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── org │ └── trampoline │ └── microserviceexamplegradlev2x │ └── MicroserviceExampleGradleV2xApplicationTests.java ├── microservice-example-maven-v1x ├── .gitignore ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── ernest │ │ └── applications │ │ └── microservice_example │ │ └── Application.java │ └── resources │ └── application.properties ├── microservice-example-maven-v2x ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml ├── service.log ├── service.log.2018-03-17.0.gz ├── service.log.2018-03-18.0.gz └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── trampoline │ │ │ └── microserviceexamplemavenv2x │ │ │ └── MicroserviceExampleMavenV2xApplication.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── org │ └── trampoline │ └── microserviceexamplemavenv2x │ └── MicroserviceExampleMavenV2xApplicationTests.java └── trampoline ├── .gitignore ├── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── pom.xml └── src ├── main ├── java │ └── org │ │ └── ernest │ │ └── applications │ │ └── trampoline │ │ ├── Application.java │ │ ├── collectors │ │ ├── DashboardCollector.java │ │ ├── InstanceInfoCollector.java │ │ ├── MetricsCollector.java │ │ └── TraceCollector.java │ │ ├── controller │ │ ├── DashboardController.java │ │ ├── InstancesController.java │ │ ├── SettingsController.java │ │ └── TrampolineManagerController.java │ │ ├── entities │ │ ├── BuildTools.java │ │ ├── Ecosystem.java │ │ ├── ExternalInstance.java │ │ ├── GitCredentials.java │ │ ├── Instance.java │ │ ├── InstanceGitInfo.java │ │ ├── MemoryUsageDto.java │ │ ├── Metrics.java │ │ ├── Microservice.java │ │ ├── MicroserviceGitInfo.java │ │ ├── MicroserviceGroupInfo.java │ │ ├── MicroservicesGroup.java │ │ ├── StatusInstance.java │ │ └── TraceActuator.java │ │ ├── exceptions │ │ ├── CreatingMicroserviceScriptException.java │ │ ├── CreatingSettingsFolderException.java │ │ ├── ReadingEcosystemException.java │ │ ├── RunningMicroserviceScriptException.java │ │ ├── SavingEcosystemException.java │ │ └── ShuttingDownInstanceException.java │ │ ├── services │ │ ├── EcosystemManager.java │ │ ├── EncryptService.java │ │ ├── FileManager.java │ │ ├── GitManager.java │ │ └── TrampolineManager.java │ │ └── utils │ │ ├── PortsChecker.java │ │ ├── SanitizeActuatorPrefix.java │ │ ├── ScriptContentsProvider.java │ │ └── VMParser.java └── resources │ ├── application.properties │ ├── static │ └── v2 │ │ ├── css │ │ ├── animate.min.css │ │ ├── bootstrap.min.css │ │ ├── demo.css │ │ ├── loading.css │ │ ├── paper-dashboard.css │ │ ├── themify-icons.css │ │ └── timeline.css │ │ ├── fonts │ │ ├── themify.eot │ │ ├── themify.svg │ │ ├── themify.ttf │ │ └── themify.woff │ │ ├── img │ │ ├── logo.png │ │ └── logo30.png │ │ └── js │ │ ├── Chart.min.js │ │ ├── app │ │ ├── dashboard.js │ │ ├── instances.js │ │ ├── loading.js │ │ └── settings.js │ │ ├── bootstrap-notify.js │ │ ├── bootstrap.min.js │ │ ├── chartist.min.js │ │ ├── demo.js │ │ ├── jquery-1.10.2.js │ │ └── paper-dashboard.js │ └── templates │ ├── dashboard.html │ ├── fragments │ ├── footer.html │ └── menu.html │ ├── instances.html │ ├── projectsexamples.html │ ├── settings.html │ └── shutdown.html └── test └── java └── org └── ernest ├── EncryptServiceTest.java ├── SanitizeActuatorPrefixTest.java └── VMParserTest.java /.github/main.workflow: -------------------------------------------------------------------------------- 1 | workflow "Workflow - Push" { 2 | resolves = ["package"] 3 | on = "push" 4 | } 5 | 6 | action "package" { 7 | uses = "LucaFeger/action-maven-cli@master" 8 | args = "clean install" 9 | } 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.gz 3 | *.log 4 | *.log 5 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at ernest.ort.tor@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /TrampolineUI_3_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/TrampolineUI_3_11.png -------------------------------------------------------------------------------- /TrampolineUI_3_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/TrampolineUI_3_12.png -------------------------------------------------------------------------------- /TrampolineUI_3_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/TrampolineUI_3_13.png -------------------------------------------------------------------------------- /TrampolineUI_3_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/TrampolineUI_3_14.png -------------------------------------------------------------------------------- /TrampolineUI_3_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/TrampolineUI_3_17.png -------------------------------------------------------------------------------- /docs/css/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | .owl-carousel .animated{-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{-webkit-transition:height 500ms ease-in-out;-moz-transition:height 500ms ease-in-out;-ms-transition:height 500ms ease-in-out;-o-transition:height 500ms ease-in-out;transition:height 500ms ease-in-out}.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0px,0,0)}.owl-carousel .owl-controls .owl-dot,.owl-carousel .owl-controls .owl-nav .owl-next,.owl-carousel .owl-controls .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel .owl-refresh .owl-item{display:none}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel.owl-text-select-on .owl-item{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.owl-carousel .owl-grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .owl-item .owl-lazy{opacity:0;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-item img{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;-webkit-transition:scale 100ms ease;-moz-transition:scale 100ms ease;-ms-transition:scale 100ms ease;-o-transition:scale 100ms ease;transition:scale 100ms ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transition:scale(1.3,1.3);-moz-transition:scale(1.3,1.3);-ms-transition:scale(1.3,1.3);-o-transition:scale(1.3,1.3);transition:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;-webkit-background-size:contain;-moz-background-size:contain;-o-background-size:contain;background-size:contain;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-video-frame{position:relative;z-index:1} -------------------------------------------------------------------------------- /docs/css/owl.theme.default.min.css: -------------------------------------------------------------------------------- 1 | .owl-theme .owl-controls{margin-top:10px;text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-controls .owl-nav [class*=owl-]{color:#fff;font-size:14px;margin:5px;padding:4px 7px;background:#d6d6d6;display:inline-block;cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.owl-theme .owl-controls .owl-nav [class*=owl-]:hover{background:#869791;color:#fff;text-decoration:none}.owl-theme .owl-controls .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1;*display:inline}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#d6d6d6;display:block;-webkit-backface-visibility:visible;-webkit-transition:opacity 200ms ease;-moz-transition:opacity 200ms ease;-ms-transition:opacity 200ms ease;-o-transition:opacity 200ms ease;transition:opacity 200ms ease;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} -------------------------------------------------------------------------------- /docs/fonts/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /docs/fonts/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /docs/fonts/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /docs/fonts/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /docs/fonts/icomoon/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/icomoon/icomoon.eot -------------------------------------------------------------------------------- /docs/fonts/icomoon/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/icomoon/icomoon.ttf -------------------------------------------------------------------------------- /docs/fonts/icomoon/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/icomoon/icomoon.woff -------------------------------------------------------------------------------- /docs/fonts/themify-icons/themify.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/themify-icons/themify.eot -------------------------------------------------------------------------------- /docs/fonts/themify-icons/themify.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/themify-icons/themify.ttf -------------------------------------------------------------------------------- /docs/fonts/themify-icons/themify.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/fonts/themify-icons/themify.woff -------------------------------------------------------------------------------- /docs/images/client_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/client_1.png -------------------------------------------------------------------------------- /docs/images/client_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/client_2.png -------------------------------------------------------------------------------- /docs/images/client_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/client_3.png -------------------------------------------------------------------------------- /docs/images/client_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/client_4.png -------------------------------------------------------------------------------- /docs/images/client_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/client_5.png -------------------------------------------------------------------------------- /docs/images/cube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/cube.png -------------------------------------------------------------------------------- /docs/images/img_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/img_1.jpg -------------------------------------------------------------------------------- /docs/images/img_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/img_2.jpg -------------------------------------------------------------------------------- /docs/images/img_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/img_3.jpg -------------------------------------------------------------------------------- /docs/images/img_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/img_4.jpg -------------------------------------------------------------------------------- /docs/images/img_md_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/img_md_1.jpg -------------------------------------------------------------------------------- /docs/images/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/loader.gif -------------------------------------------------------------------------------- /docs/images/loc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/loc.png -------------------------------------------------------------------------------- /docs/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/logo.png -------------------------------------------------------------------------------- /docs/images/person_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/person_1.jpg -------------------------------------------------------------------------------- /docs/images/person_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/person_2.jpg -------------------------------------------------------------------------------- /docs/images/person_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/person_3.jpg -------------------------------------------------------------------------------- /docs/images/staff_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/staff_1.jpg -------------------------------------------------------------------------------- /docs/images/staff_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/staff_2.jpg -------------------------------------------------------------------------------- /docs/images/staff_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/staff_3.jpg -------------------------------------------------------------------------------- /docs/images/staff_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErnestOrt/Trampoline/bc6c623be8cbfb6393c1aed71184f274d5b84276/docs/images/staff_4.jpg -------------------------------------------------------------------------------- /docs/js/google_map.js: -------------------------------------------------------------------------------- 1 | 2 | var google; 3 | 4 | function init() { 5 | // Basic options for a simple Google Map 6 | // For more options see: https://developers.google.com/maps/documentation/javascript/reference#MapOptions 7 | // var myLatlng = new google.maps.LatLng(40.71751, -73.990922); 8 | var myLatlng = new google.maps.LatLng(40.69847032728747, -73.9514422416687); 9 | // 39.399872 10 | // -8.224454 11 | 12 | var mapOptions = { 13 | // How zoomed in you want the map to start at (always required) 14 | zoom: 7, 15 | 16 | // The latitude and longitude to center the map (always required) 17 | center: myLatlng, 18 | 19 | // How you would like to style the map. 20 | scrollwheel: false, 21 | styles: [{"featureType":"water","elementType":"geometry","stylers":[{"color":"#e9e9e9"},{"lightness":17}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#f5f5f5"},{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffffff"},{"lightness":17}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#ffffff"},{"lightness":29},{"weight":0.2}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#ffffff"},{"lightness":18}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#ffffff"},{"lightness":16}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#f5f5f5"},{"lightness":21}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#dedede"},{"lightness":21}]},{"elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#ffffff"},{"lightness":16}]},{"elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#333333"},{"lightness":40}]},{"elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#f2f2f2"},{"lightness":19}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#fefefe"},{"lightness":20}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#fefefe"},{"lightness":17},{"weight":1.2}]}] 22 | }; 23 | 24 | 25 | 26 | // Get the HTML DOM element that will contain your map 27 | // We are using a div with id="map" seen below in the 28 | var mapElement = document.getElementById('map'); 29 | 30 | // Create the Google Map using out element and options defined above 31 | var map = new google.maps.Map(mapElement, mapOptions); 32 | 33 | var addresses = ['Brooklyn']; 34 | 35 | for (var x = 0; x < addresses.length; x++) { 36 | $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x]+'&sensor=false', null, function (data) { 37 | var p = data.results[0].geometry.location 38 | var latlng = new google.maps.LatLng(p.lat, p.lng); 39 | new google.maps.Marker({ 40 | position: latlng, 41 | map: map, 42 | icon: 'images/loc.png' 43 | }); 44 | 45 | }); 46 | } 47 | 48 | } 49 | google.maps.event.addDomListener(window, 'load', init); -------------------------------------------------------------------------------- /docs/js/jquery.countTo.js: -------------------------------------------------------------------------------- 1 | (function (factory) { 2 | if (typeof define === 'function' && define.amd) { 3 | // AMD 4 | define(['jquery'], factory); 5 | } else if (typeof exports === 'object') { 6 | // CommonJS 7 | factory(require('jquery')); 8 | } else { 9 | // Browser globals 10 | factory(jQuery); 11 | } 12 | }(function ($) { 13 | var CountTo = function (element, options) { 14 | this.$element = $(element); 15 | this.options = $.extend({}, CountTo.DEFAULTS, this.dataOptions(), options); 16 | this.init(); 17 | }; 18 | 19 | CountTo.DEFAULTS = { 20 | from: 0, // the number the element should start at 21 | to: 0, // the number the element should end at 22 | speed: 1000, // how long it should take to count between the target numbers 23 | refreshInterval: 100, // how often the element should be updated 24 | decimals: 0, // the number of decimal places to show 25 | formatter: formatter, // handler for formatting the value before rendering 26 | onUpdate: null, // callback method for every time the element is updated 27 | onComplete: null // callback method for when the element finishes updating 28 | }; 29 | 30 | CountTo.prototype.init = function () { 31 | this.value = this.options.from; 32 | this.loops = Math.ceil(this.options.speed / this.options.refreshInterval); 33 | this.loopCount = 0; 34 | this.increment = (this.options.to - this.options.from) / this.loops; 35 | }; 36 | 37 | CountTo.prototype.dataOptions = function () { 38 | var options = { 39 | from: this.$element.data('from'), 40 | to: this.$element.data('to'), 41 | speed: this.$element.data('speed'), 42 | refreshInterval: this.$element.data('refresh-interval'), 43 | decimals: this.$element.data('decimals') 44 | }; 45 | 46 | var keys = Object.keys(options); 47 | 48 | for (var i in keys) { 49 | var key = keys[i]; 50 | 51 | if (typeof(options[key]) === 'undefined') { 52 | delete options[key]; 53 | } 54 | } 55 | 56 | return options; 57 | }; 58 | 59 | CountTo.prototype.update = function () { 60 | this.value += this.increment; 61 | this.loopCount++; 62 | 63 | this.render(); 64 | 65 | if (typeof(this.options.onUpdate) == 'function') { 66 | this.options.onUpdate.call(this.$element, this.value); 67 | } 68 | 69 | if (this.loopCount >= this.loops) { 70 | clearInterval(this.interval); 71 | this.value = this.options.to; 72 | 73 | if (typeof(this.options.onComplete) == 'function') { 74 | this.options.onComplete.call(this.$element, this.value); 75 | } 76 | } 77 | }; 78 | 79 | CountTo.prototype.render = function () { 80 | var formattedValue = this.options.formatter.call(this.$element, this.value, this.options); 81 | this.$element.text(formattedValue); 82 | }; 83 | 84 | CountTo.prototype.restart = function () { 85 | this.stop(); 86 | this.init(); 87 | this.start(); 88 | }; 89 | 90 | CountTo.prototype.start = function () { 91 | this.stop(); 92 | this.render(); 93 | this.interval = setInterval(this.update.bind(this), this.options.refreshInterval); 94 | }; 95 | 96 | CountTo.prototype.stop = function () { 97 | if (this.interval) { 98 | clearInterval(this.interval); 99 | } 100 | }; 101 | 102 | CountTo.prototype.toggle = function () { 103 | if (this.interval) { 104 | this.stop(); 105 | } else { 106 | this.start(); 107 | } 108 | }; 109 | 110 | function formatter(value, options) { 111 | return value.toFixed(options.decimals); 112 | } 113 | 114 | $.fn.countTo = function (option) { 115 | return this.each(function () { 116 | var $this = $(this); 117 | var data = $this.data('countTo'); 118 | var init = !data || typeof(option) === 'object'; 119 | var options = typeof(option) === 'object' ? option : {}; 120 | var method = typeof(option) === 'string' ? option : 'start'; 121 | 122 | if (init) { 123 | if (data) data.stop(); 124 | $this.data('countTo', data = new CountTo(this, options)); 125 | } 126 | 127 | data[method].call(data); 128 | }); 129 | }; 130 | })); -------------------------------------------------------------------------------- /docs/js/magnific-popup-options.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // MagnificPopup 3 | var magnifPopup = function() { 4 | $('.image-popup').magnificPopup({ 5 | type: 'image', 6 | removalDelay: 300, 7 | mainClass: 'mfp-with-zoom', 8 | gallery:{ 9 | enabled:true 10 | }//, 11 | //zoom: { 12 | // enabled: true, // By default it's false, so don't forget to enable it 13 | 14 | // duration: 300, // duration of the effect, in milliseconds 15 | // easing: 'ease-in-out', // CSS transition easing function 16 | 17 | // The "opener" function should return the element from which popup will be zoomed in 18 | // and to which popup will be scaled down 19 | // By defailt it looks for an image tag: 20 | // opener: function(openerElement) { 21 | // openerElement is the element on which popup was initialized, in this case its tag 22 | // you don't need to add "opener" option if this code matches your needs, it's defailt one. 23 | // return openerElement.is('img') ? openerElement : openerElement.find('img'); 24 | // } 25 | //} 26 | }); 27 | }; 28 | 29 | var magnifVideo = function() { 30 | $('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({ 31 | disableOn: 700, 32 | type: 'iframe', 33 | mainClass: 'mfp-fade', 34 | removalDelay: 160, 35 | preloader: false, 36 | 37 | fixedContentPos: false 38 | }); 39 | }; 40 | 41 | 42 | 43 | 44 | // Call the functions 45 | magnifPopup(); 46 | magnifVideo(); 47 | 48 | }); -------------------------------------------------------------------------------- /docs/js/respond.min.js: -------------------------------------------------------------------------------- 1 | 2 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 3 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 4 | * */ 5 | 6 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. 5 | 6 | 7 | @function twbs-font-path($path) { 8 | // do something like following 9 | // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" 10 | // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" 11 | // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" 12 | @return "<%- asset_path('#{$path}'.replace(/[#?].*$/, '')) + '#{$path}'.replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; 13 | } 14 | 15 | @function twbs-image-path($file) { 16 | @return "<%- asset_path('#{$file}') %>"; 17 | } 18 | 19 | $bootstrap-sass-asset-helper: true; 20 | -------------------------------------------------------------------------------- /docs/sass/_bootstrap-sprockets.scss: -------------------------------------------------------------------------------- 1 | @function twbs-font-path($path) { 2 | @return font-path($path); 3 | } 4 | 5 | @function twbs-image-path($path) { 6 | @return image-path($path); 7 | } 8 | 9 | $bootstrap-sass-asset-helper: true; 10 | -------------------------------------------------------------------------------- /docs/sass/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // Core variables and mixins 8 | @import "bootstrap/variables"; 9 | @import "bootstrap/mixins"; 10 | 11 | // Reset and dependencies 12 | @import "bootstrap/normalize"; 13 | @import "bootstrap/print"; 14 | //@import "bootstrap/glyphicons"; 15 | 16 | // Core CSS 17 | @import "bootstrap/scaffolding"; 18 | @import "bootstrap/type"; 19 | @import "bootstrap/code"; 20 | @import "bootstrap/grid"; 21 | @import "bootstrap/tables"; 22 | @import "bootstrap/forms"; 23 | @import "bootstrap/buttons"; 24 | 25 | // Components 26 | @import "bootstrap/component-animations"; 27 | @import "bootstrap/dropdowns"; 28 | @import "bootstrap/button-groups"; 29 | @import "bootstrap/input-groups"; 30 | @import "bootstrap/navs"; 31 | @import "bootstrap/navbar"; 32 | @import "bootstrap/breadcrumbs"; 33 | @import "bootstrap/pagination"; 34 | @import "bootstrap/pager"; 35 | @import "bootstrap/labels"; 36 | @import "bootstrap/badges"; 37 | @import "bootstrap/jumbotron"; 38 | @import "bootstrap/thumbnails"; 39 | @import "bootstrap/alerts"; 40 | @import "bootstrap/progress-bars"; 41 | @import "bootstrap/media"; 42 | @import "bootstrap/list-group"; 43 | @import "bootstrap/panels"; 44 | @import "bootstrap/responsive-embed"; 45 | @import "bootstrap/wells"; 46 | @import "bootstrap/close"; 47 | 48 | // Components w/ JavaScript 49 | @import "bootstrap/modals"; 50 | @import "bootstrap/tooltip"; 51 | @import "bootstrap/popovers"; 52 | @import "bootstrap/carousel"; 53 | 54 | // Utility classes 55 | @import "bootstrap/utilities"; 56 | @import "bootstrap/responsive-utilities"; 57 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_alerts.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: $alert-padding; 11 | margin-bottom: $line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: $alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing $headings-color 19 | color: inherit; 20 | } 21 | 22 | // Provide class for links that match alerts 23 | .alert-link { 24 | font-weight: $alert-link-font-weight; 25 | } 26 | 27 | // Improve alignment and spacing of inner content 28 | > p, 29 | > ul { 30 | margin-bottom: 0; 31 | } 32 | 33 | > p + p { 34 | margin-top: 5px; 35 | } 36 | } 37 | 38 | // Dismissible alerts 39 | // 40 | // Expand the right padding and account for the close button's positioning. 41 | 42 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 43 | .alert-dismissible { 44 | padding-right: ($alert-padding + 20); 45 | 46 | // Adjust close link position 47 | .close { 48 | position: relative; 49 | top: -2px; 50 | right: -21px; 51 | color: inherit; 52 | } 53 | } 54 | 55 | // Alternate styles 56 | // 57 | // Generate contextual modifier classes for colorizing the alert. 58 | 59 | .alert-success { 60 | @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); 61 | } 62 | 63 | .alert-info { 64 | @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); 65 | } 66 | 67 | .alert-warning { 68 | @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); 69 | } 70 | 71 | .alert-danger { 72 | @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); 73 | } 74 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_badges.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: $font-size-small; 12 | font-weight: $badge-font-weight; 13 | color: $badge-color; 14 | line-height: $badge-line-height; 15 | vertical-align: middle; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: $badge-bg; 19 | border-radius: $badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | 32 | .btn-xs &, 33 | .btn-group-xs > .btn & { 34 | top: 0; 35 | padding: 1px 5px; 36 | } 37 | 38 | // [converter] extracted a& to a.badge 39 | 40 | // Account for badges in navs 41 | .list-group-item.active > &, 42 | .nav-pills > .active > a > & { 43 | color: $badge-active-color; 44 | background-color: $badge-active-bg; 45 | } 46 | 47 | .list-group-item > & { 48 | float: right; 49 | } 50 | 51 | .list-group-item > & + & { 52 | margin-right: 5px; 53 | } 54 | 55 | .nav-pills > li > a > & { 56 | margin-left: 3px; 57 | } 58 | } 59 | 60 | // Hover state, but only for links 61 | a.badge { 62 | &:hover, 63 | &:focus { 64 | color: $badge-link-hover-color; 65 | text-decoration: none; 66 | cursor: pointer; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; 8 | margin-bottom: $line-height-computed; 9 | list-style: none; 10 | background-color: $breadcrumb-bg; 11 | border-radius: $border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: $breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: $breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // -------------------------------------------------- 8 | 9 | .btn { 10 | display: inline-block; 11 | margin-bottom: 0; // For input.btn 12 | font-weight: $btn-font-weight; 13 | text-align: center; 14 | vertical-align: middle; 15 | touch-action: manipulation; 16 | cursor: pointer; 17 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 18 | border: 1px solid transparent; 19 | white-space: nowrap; 20 | @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); 21 | @include user-select(none); 22 | 23 | &, 24 | &:active, 25 | &.active { 26 | &:focus, 27 | &.focus { 28 | @include tab-focus; 29 | } 30 | } 31 | 32 | &:hover, 33 | &:focus, 34 | &.focus { 35 | color: $btn-default-color; 36 | text-decoration: none; 37 | } 38 | 39 | &:active, 40 | &.active { 41 | outline: 0; 42 | background-image: none; 43 | @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); 44 | } 45 | 46 | &.disabled, 47 | &[disabled], 48 | fieldset[disabled] & { 49 | cursor: $cursor-disabled; 50 | @include opacity(.65); 51 | @include box-shadow(none); 52 | } 53 | 54 | // [converter] extracted a& to a.btn 55 | } 56 | 57 | a.btn { 58 | &.disabled, 59 | fieldset[disabled] & { 60 | pointer-events: none; // Future-proof disabling of clicks on `` elements 61 | } 62 | } 63 | 64 | 65 | // Alternate buttons 66 | // -------------------------------------------------- 67 | 68 | .btn-default { 69 | @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); 70 | } 71 | .btn-primary { 72 | @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); 73 | } 74 | // Success appears as green 75 | .btn-success { 76 | @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); 77 | } 78 | // Info appears as blue-green 79 | .btn-info { 80 | @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); 81 | } 82 | // Warning appears as orange 83 | .btn-warning { 84 | @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); 85 | } 86 | // Danger and error appear as red 87 | .btn-danger { 88 | @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); 89 | } 90 | 91 | 92 | // Link buttons 93 | // ------------------------- 94 | 95 | // Make a button look and behave like a link 96 | .btn-link { 97 | color: $link-color; 98 | font-weight: normal; 99 | border-radius: 0; 100 | 101 | &, 102 | &:active, 103 | &.active, 104 | &[disabled], 105 | fieldset[disabled] & { 106 | background-color: transparent; 107 | @include box-shadow(none); 108 | } 109 | &, 110 | &:hover, 111 | &:focus, 112 | &:active { 113 | border-color: transparent; 114 | } 115 | &:hover, 116 | &:focus { 117 | color: $link-hover-color; 118 | text-decoration: $link-hover-decoration; 119 | background-color: transparent; 120 | } 121 | &[disabled], 122 | fieldset[disabled] & { 123 | &:hover, 124 | &:focus { 125 | color: $btn-link-disabled-color; 126 | text-decoration: none; 127 | } 128 | } 129 | } 130 | 131 | 132 | // Button Sizes 133 | // -------------------------------------------------- 134 | 135 | .btn-lg { 136 | // line-height: ensure even-numbered height of button next to large input 137 | @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); 138 | } 139 | .btn-sm { 140 | // line-height: ensure proper height of button next to small input 141 | @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); 142 | } 143 | .btn-xs { 144 | @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); 145 | } 146 | 147 | 148 | // Block button 149 | // -------------------------------------------------- 150 | 151 | .btn-block { 152 | display: block; 153 | width: 100%; 154 | } 155 | 156 | // Vertically space out multiple block buttons 157 | .btn-block + .btn-block { 158 | margin-top: 5px; 159 | } 160 | 161 | // Specificity overrides 162 | input[type="submit"], 163 | input[type="reset"], 164 | input[type="button"] { 165 | &.btn-block { 166 | width: 100%; 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: ($font-size-base * 1.5); 9 | font-weight: $close-font-weight; 10 | line-height: 1; 11 | color: $close-color; 12 | text-shadow: $close-text-shadow; 13 | @include opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: $close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | @include opacity(.5); 21 | } 22 | 23 | // [converter] extracted button& to button.close 24 | } 25 | 26 | // Additional properties for button version 27 | // iOS requires the button element instead of an anchor tag. 28 | // If you want the anchor version, it requires `href="#"`. 29 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 30 | button.close { 31 | padding: 0; 32 | cursor: pointer; 33 | background: transparent; 34 | border: 0; 35 | -webkit-appearance: none; 36 | } 37 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_code.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: $font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: $code-color; 19 | background-color: $code-bg; 20 | border-radius: $border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: $kbd-color; 28 | background-color: $kbd-bg; 29 | border-radius: $border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | font-weight: bold; 36 | box-shadow: none; 37 | } 38 | } 39 | 40 | // Blocks of code 41 | pre { 42 | display: block; 43 | padding: (($line-height-computed - 1) / 2); 44 | margin: 0 0 ($line-height-computed / 2); 45 | font-size: ($font-size-base - 1); // 14px to 13px 46 | line-height: $line-height-base; 47 | word-break: break-all; 48 | word-wrap: break-word; 49 | color: $pre-color; 50 | background-color: $pre-bg; 51 | border: 1px solid $pre-border-color; 52 | border-radius: $border-radius-base; 53 | 54 | // Account for some code outputs that place code tags in pre tags 55 | code { 56 | padding: 0; 57 | font-size: inherit; 58 | color: inherit; 59 | white-space: pre-wrap; 60 | background-color: transparent; 61 | border-radius: 0; 62 | } 63 | } 64 | 65 | // Enable scrollable blocks of code 66 | .pre-scrollable { 67 | max-height: $pre-scrollable-max-height; 68 | overflow-y: scroll; 69 | } 70 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_component-animations.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | @include transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | // [converter] extracted tr&.in to tr.collapse.in 23 | // [converter] extracted tbody&.in to tbody.collapse.in 24 | } 25 | 26 | tr.collapse.in { display: table-row; } 27 | 28 | tbody.collapse.in { display: table-row-group; } 29 | 30 | .collapsing { 31 | position: relative; 32 | height: 0; 33 | overflow: hidden; 34 | @include transition-property(height, visibility); 35 | @include transition-duration(.35s); 36 | @include transition-timing-function(ease); 37 | } 38 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_grid.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | @include container-fixed; 12 | 13 | @media (min-width: $screen-sm-min) { 14 | width: $container-sm; 15 | } 16 | @media (min-width: $screen-md-min) { 17 | width: $container-md; 18 | } 19 | @media (min-width: $screen-lg-min) { 20 | width: $container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | @include container-fixed; 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | @include make-row; 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | @include make-grid-columns; 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | @include make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: $screen-sm-min) { 65 | @include make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: $screen-md-min) { 74 | @include make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: $screen-lg-min) { 83 | @include make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_input-groups.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Input groups 3 | // -------------------------------------------------- 4 | 5 | // Base styles 6 | // ------------------------- 7 | .input-group { 8 | position: relative; // For dropdowns 9 | display: table; 10 | border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table 11 | 12 | // Undo padding and float of grid classes 13 | &[class*="col-"] { 14 | float: none; 15 | padding-left: 0; 16 | padding-right: 0; 17 | } 18 | 19 | .form-control { 20 | // Ensure that the input is always above the *appended* addon button for 21 | // proper border colors. 22 | position: relative; 23 | z-index: 2; 24 | 25 | // IE9 fubars the placeholder attribute in text inputs and the arrows on 26 | // select elements in input groups. To fix it, we float the input. Details: 27 | // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 28 | float: left; 29 | 30 | width: 100%; 31 | margin-bottom: 0; 32 | } 33 | } 34 | 35 | // Sizing options 36 | // 37 | // Remix the default form control sizing classes into new ones for easier 38 | // manipulation. 39 | 40 | .input-group-lg > .form-control, 41 | .input-group-lg > .input-group-addon, 42 | .input-group-lg > .input-group-btn > .btn { 43 | @extend .input-lg; 44 | } 45 | .input-group-sm > .form-control, 46 | .input-group-sm > .input-group-addon, 47 | .input-group-sm > .input-group-btn > .btn { 48 | @extend .input-sm; 49 | } 50 | 51 | 52 | // Display as table-cell 53 | // ------------------------- 54 | .input-group-addon, 55 | .input-group-btn, 56 | .input-group .form-control { 57 | display: table-cell; 58 | 59 | &:not(:first-child):not(:last-child) { 60 | border-radius: 0; 61 | } 62 | } 63 | // Addon and addon wrapper for buttons 64 | .input-group-addon, 65 | .input-group-btn { 66 | width: 1%; 67 | white-space: nowrap; 68 | vertical-align: middle; // Match the inputs 69 | } 70 | 71 | // Text input groups 72 | // ------------------------- 73 | .input-group-addon { 74 | padding: $padding-base-vertical $padding-base-horizontal; 75 | font-size: $font-size-base; 76 | font-weight: normal; 77 | line-height: 1; 78 | color: $input-color; 79 | text-align: center; 80 | background-color: $input-group-addon-bg; 81 | border: 1px solid $input-group-addon-border-color; 82 | border-radius: $border-radius-base; 83 | 84 | // Sizing 85 | &.input-sm { 86 | padding: $padding-small-vertical $padding-small-horizontal; 87 | font-size: $font-size-small; 88 | border-radius: $border-radius-small; 89 | } 90 | &.input-lg { 91 | padding: $padding-large-vertical $padding-large-horizontal; 92 | font-size: $font-size-large; 93 | border-radius: $border-radius-large; 94 | } 95 | 96 | // Nuke default margins from checkboxes and radios to vertically center within. 97 | input[type="radio"], 98 | input[type="checkbox"] { 99 | margin-top: 0; 100 | } 101 | } 102 | 103 | // Reset rounded corners 104 | .input-group .form-control:first-child, 105 | .input-group-addon:first-child, 106 | .input-group-btn:first-child > .btn, 107 | .input-group-btn:first-child > .btn-group > .btn, 108 | .input-group-btn:first-child > .dropdown-toggle, 109 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), 110 | .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { 111 | @include border-right-radius(0); 112 | } 113 | .input-group-addon:first-child { 114 | border-right: 0; 115 | } 116 | .input-group .form-control:last-child, 117 | .input-group-addon:last-child, 118 | .input-group-btn:last-child > .btn, 119 | .input-group-btn:last-child > .btn-group > .btn, 120 | .input-group-btn:last-child > .dropdown-toggle, 121 | .input-group-btn:first-child > .btn:not(:first-child), 122 | .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { 123 | @include border-left-radius(0); 124 | } 125 | .input-group-addon:last-child { 126 | border-left: 0; 127 | } 128 | 129 | // Button input groups 130 | // ------------------------- 131 | .input-group-btn { 132 | position: relative; 133 | // Jankily prevent input button groups from wrapping with `white-space` and 134 | // `font-size` in combination with `inline-block` on buttons. 135 | font-size: 0; 136 | white-space: nowrap; 137 | 138 | // Negative margin for spacing, position for bringing hovered/focused/actived 139 | // element above the siblings. 140 | > .btn { 141 | position: relative; 142 | + .btn { 143 | margin-left: -1px; 144 | } 145 | // Bring the "active" button to the front 146 | &:hover, 147 | &:focus, 148 | &:active { 149 | z-index: 2; 150 | } 151 | } 152 | 153 | // Negative margin to only have a 1px border between the two 154 | &:first-child { 155 | > .btn, 156 | > .btn-group { 157 | margin-right: -1px; 158 | } 159 | } 160 | &:last-child { 161 | > .btn, 162 | > .btn-group { 163 | z-index: 2; 164 | margin-left: -1px; 165 | } 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding-top: $jumbotron-padding; 8 | padding-bottom: $jumbotron-padding; 9 | margin-bottom: $jumbotron-padding; 10 | color: $jumbotron-color; 11 | background-color: $jumbotron-bg; 12 | 13 | h1, 14 | .h1 { 15 | color: $jumbotron-heading-color; 16 | } 17 | 18 | p { 19 | margin-bottom: ($jumbotron-padding / 2); 20 | font-size: $jumbotron-font-size; 21 | font-weight: 200; 22 | } 23 | 24 | > hr { 25 | border-top-color: darken($jumbotron-bg, 10%); 26 | } 27 | 28 | .container &, 29 | .container-fluid & { 30 | border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container 31 | } 32 | 33 | .container { 34 | max-width: 100%; 35 | } 36 | 37 | @media screen and (min-width: $screen-sm-min) { 38 | padding-top: ($jumbotron-padding * 1.6); 39 | padding-bottom: ($jumbotron-padding * 1.6); 40 | 41 | .container &, 42 | .container-fluid & { 43 | padding-left: ($jumbotron-padding * 2); 44 | padding-right: ($jumbotron-padding * 2); 45 | } 46 | 47 | h1, 48 | .h1 { 49 | font-size: $jumbotron-heading-font-size; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_labels.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: $label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // [converter] extracted a& to a.label 18 | 19 | // Empty labels collapse automatically (not available in IE8) 20 | &:empty { 21 | display: none; 22 | } 23 | 24 | // Quick fix for labels in buttons 25 | .btn & { 26 | position: relative; 27 | top: -1px; 28 | } 29 | } 30 | 31 | // Add hover effects, but only for links 32 | a.label { 33 | &:hover, 34 | &:focus { 35 | color: $label-link-hover-color; 36 | text-decoration: none; 37 | cursor: pointer; 38 | } 39 | } 40 | 41 | // Colors 42 | // Contextual variations (linked labels get darker on :hover) 43 | 44 | .label-default { 45 | @include label-variant($label-default-bg); 46 | } 47 | 48 | .label-primary { 49 | @include label-variant($label-primary-bg); 50 | } 51 | 52 | .label-success { 53 | @include label-variant($label-success-bg); 54 | } 55 | 56 | .label-info { 57 | @include label-variant($label-info-bg); 58 | } 59 | 60 | .label-warning { 61 | @include label-variant($label-warning-bg); 62 | } 63 | 64 | .label-danger { 65 | @include label-variant($label-danger-bg); 66 | } 67 | -------------------------------------------------------------------------------- /docs/sass/bootstrap/_list-group.scss: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | // 8 | // Easily usable on