├── .gitignore ├── .jshintrc ├── LICENSE.md ├── README.md ├── app ├── .DS_Store ├── 404.html ├── adapters │ ├── simplicity.arcgis.rest.api.adapter.js │ └── simplicity.google.places.api.adapter.js ├── assets │ ├── .DS_Store │ ├── fonts │ │ ├── .DS_Store │ │ ├── flaticon.eot │ │ ├── flaticon.svg │ │ ├── flaticon.ttf │ │ ├── flaticon.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── images │ │ ├── address.png │ │ ├── citylogo-flatblue.png │ │ ├── crimes.png │ │ ├── development.png │ │ ├── layers-2x.png │ │ ├── layers.png │ │ ├── leaflet.awesome-markers.css │ │ ├── mailbox.png │ │ ├── marker-icon-2x.png │ │ ├── marker-icon.png │ │ ├── marker-shadow.png │ │ ├── markers-matte.png │ │ ├── markers-matte@2x.png │ │ ├── markers-plain.png │ │ ├── markers-shadow.png │ │ ├── markers-shadow@2x.png │ │ ├── markers-soft.png │ │ ├── markers-soft@2x.png │ │ ├── powered-by-google-on-white.png │ │ ├── property.png │ │ ├── recycling.png │ │ ├── street-maintenance.png │ │ ├── trash.png │ │ └── zoning.png │ └── styles │ │ ├── .DS_Store │ │ ├── _alerts.scss │ │ ├── _angular-animations.scss │ │ ├── _app.scss │ │ ├── _badges.scss │ │ ├── _bootswatch.scss │ │ ├── _breadcrumbs.scss │ │ ├── _browse-happy.scss │ │ ├── _button-groups.scss │ │ ├── _buttons.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _code.scss │ │ ├── _component-animations.scss │ │ ├── _dropdowns.scss │ │ ├── _flaticon.scss │ │ ├── _flipping.scss │ │ ├── _forms.scss │ │ ├── _glyphicons.scss │ │ ├── _grid.scss │ │ ├── _icon-buttons.scss │ │ ├── _input-groups.scss │ │ ├── _jumbotron.scss │ │ ├── _labels.scss │ │ ├── _leaflet-awesome-markers.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_bootstrap.scss │ │ ├── _variables_bootswatch.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 │ │ ├── _resize.scss │ │ ├── _responsive-visibility.scss │ │ ├── _size.scss │ │ ├── _tab-focus.scss │ │ ├── _table-row.scss │ │ ├── _text-emphasis.scss │ │ ├── _text-overflow.scss │ │ └── _vendor-prefixes.scss │ │ └── styles.scss ├── citylogo-flatblue.png ├── components │ ├── address.cache.factory.js │ ├── citizen-service-request │ │ └── request-form.html │ ├── main │ │ ├── main.controller.js │ │ └── main.html │ ├── search │ │ ├── search.controller.js │ │ └── search.html │ ├── simplicity.controller.js │ └── topics │ │ ├── sanitation.card.html │ │ ├── topic-components │ │ ├── address-list │ │ │ ├── address-list.view.html │ │ │ └── address.list.factory.js │ │ ├── address-mailing-list │ │ │ └── address.mailing.list.factory.js │ │ ├── crime │ │ │ ├── crime.factory.js │ │ │ ├── crime.list.view.html │ │ │ └── crime.summary.view.html │ │ ├── development │ │ │ ├── development.factory.js │ │ │ ├── development.list.view.html │ │ │ └── development.summary.view.html │ │ ├── owner-mailing-list │ │ │ └── owner.mailing.list.factory.js │ │ ├── owner │ │ │ ├── owner.details.view.html │ │ │ ├── owner.factory.js │ │ │ ├── owner.list.view.html │ │ │ └── owner.view.html │ │ ├── property │ │ │ ├── property.details.view.html │ │ │ ├── property.factory.js │ │ │ └── property.list.view.html │ │ ├── recycling-collection │ │ │ ├── recycling.collection.simple.view.html │ │ │ └── recycling.factory.js │ │ ├── street-maintenance │ │ │ ├── street.maintenance.factory.js │ │ │ └── street.maintenance.list.view.html │ │ ├── trash-collection │ │ │ ├── trash.collection.simple.view.html │ │ │ └── trash.factory.js │ │ └── zoning │ │ │ ├── zoning.factory.js │ │ │ └── zoning.view.html │ │ ├── topic-headers │ │ ├── topic.header.along.html │ │ ├── topic.header.at.html │ │ ├── topic.header.during.along.html │ │ ├── topic.header.during.in.html │ │ ├── topic.header.during.within.of.html │ │ ├── topic.header.in.html │ │ └── topic.header.ownedby.html │ │ ├── topic-list │ │ ├── topic.list.controller.js │ │ └── topic.list.html │ │ ├── topic-single │ │ ├── topic.single.controller.js │ │ ├── topic.single.html │ │ └── topic.view.header.html │ │ └── topics.factory.js ├── favicon.ico ├── index.html ├── simplicity.backend.config.js ├── simplicity.frontend.config.js ├── simplicity.http.js └── simplicity.js ├── e2e-tests.js ├── gulpfile.js ├── package.json ├── test ├── .DS_Store ├── dependencies │ ├── .DS_Store │ ├── angular-animate.js │ ├── angular-mocks.js │ ├── angular-ui-router.js │ ├── angular.js │ ├── bootstrap.js │ ├── jquery-2.1.1.js │ └── leaflet.js ├── e2e │ ├── .DS_Store │ └── main.js ├── karma.conf.js ├── protractor.conf.js └── unit │ ├── app.factory.mocha.js │ └── main.mocha.js └── unit-tests.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | 10 | # Packages # 11 | ############ 12 | # it's better to unpack these files and commit the raw source 13 | # git has its own built in compression methods 14 | *.7z 15 | *.dmg 16 | *.gz 17 | *.iso 18 | *.jar 19 | *.rar 20 | *.tar 21 | *.zip 22 | 23 | # Logs and databases # 24 | ###################### 25 | *.log 26 | *.sql 27 | *.sqlite 28 | 29 | # OS generated files # 30 | ###################### 31 | 32 | .DS_Store 33 | 34 | .DS_Store? 35 | ._* 36 | .Spotlight-V100 37 | .Trashes 38 | ehthumbs.db 39 | Thumbs.db 40 | 41 | # 42 | /dist 43 | /dev 44 | /node_modules 45 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "browser": true, 4 | "esnext": true, 5 | "bitwise": true, 6 | "camelcase": false, 7 | "curly": true, 8 | "eqeqeq": true, 9 | "immed": true, 10 | "indent": 4, 11 | "latedef": true, 12 | "newcap": true, 13 | "noarg": true, 14 | "undef": true, 15 | "unused": false, 16 | "strict": true, 17 | "trailing": true, 18 | "smarttabs": true, 19 | "multistr": true, 20 | "globals": { 21 | "app": true, 22 | "angular": false, 23 | "L" : true, 24 | "$" : true 25 | } 26 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 City of Asheville, NC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | simplicity-ui 2 | ============= 3 | 4 | View the site here: 5 | http://cityofasheville.github.io/simplicity-ui 6 | 7 | A webapp to provide simple access to city data. Built on an AngularJS frontend with an ArcGIS REST API on the back. 8 | 9 | 10 | ##GETTING STARTED 11 | 12 | ###Installation 13 | 14 | You'll need Node.js to work on SimpliCity. 15 | 16 | 1. Clone the repo, and cd into that directory 17 | 2. Install dependencies with npm 18 | 19 | npm install 20 | 3. You can serve it locally with gulp, and it'll watch for changes 21 | 22 | gulp serve 23 | 24 | ###Configuration 25 | ####There are 2 main configuration files: 26 | 27 | #####app/simplicity.frontend.config.js 28 | 29 | An assortment of frontend configuration stuff like colors, links, and drop-down values that probably can be abstracted and cleaned up. 30 | 31 | #####app/simplicity.backend.config.js 32 | 33 | Defines all the URIs to the ArcGIS feature services used by the app. It includes the simplicityBackend factory also exposes two methods in particular: 34 | 35 | ######simplicityBackend.simplicitySearch 36 | All search functionality is routed through this method. 37 | ######simplicityBackend.simplicityQuery 38 | All queries are routed through this method. 39 | 40 | An adapter, like app/adapters/simplicity.arcgis.rest.api.adapter.js, that contains set of queries defined as angular constants, and factory that exposes methods for querying an API, in this case the ArcGIS REST API, must be injected into the simplicityBackend factory. 41 | 42 | Additionally, each topic contains a set of views and a factory that is used to build that topic. 43 | 44 | 45 | #License 46 | The MIT License (MIT) 47 | 48 | Copyright (c) 2015 City of Asheville, NC 49 | 50 | 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: 51 | 52 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 53 | 54 | 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. 55 | -------------------------------------------------------------------------------- /app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/.DS_Store -------------------------------------------------------------------------------- /app/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/adapters/simplicity.google.places.api.adapter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | //keys: crimeIds, time, civicaddressId, civicaddressIds, centerlineIds, neighborhoodName, neighborhoodNames 3 | angular.module('simplicity.google.place.api.adapter', []) 4 | .constant('PLACES_API_CONFIG', { 5 | 'location' : '35.5951125,-82.5511088', 6 | 'radius' : 80000, 7 | 'key' : 'AIzaSyDV6CtVSMRpAXBNxGZ9-ClGTA84E4PTsF4' 8 | }) 9 | .factory('simplicityGooglePlacesApiAdapter', ['$http', '$location', '$q', '$filter', 'PLACES_API_CONFIG', 10 | function($http, $location, $q, $filter, PLACES_API_CONFIG){ 11 | 12 | 13 | var simplicityGooglePlacesApiAdapter = {}; 14 | 15 | 16 | var service = new google.maps.places.PlacesService(document.getElementById('stupid-required-google-input')); 17 | 18 | simplicityGooglePlacesApiAdapter.search = function(searchText){ 19 | //use $q promises to handle the http request asynchronously 20 | var q = $q.defer(); 21 | 22 | 23 | 24 | var googleCallback = function(results, status){ 25 | if (status === google.maps.places.PlacesServiceStatus.OK) { 26 | var formattedResults = []; 27 | for (var i = 0; i < results.length; i++) { 28 | var resultObj = { 29 | 'id' : results[i].place_id, 30 | 'label' : results[i].name + ' | ' + results[i].vicinity, 31 | 'type' : 'google-place', 32 | 'googleResult' : true 33 | }; 34 | formattedResults.push(resultObj); 35 | } 36 | var googleResults = { 37 | 'groupOrder' : 0, 38 | 'iconClass' : 'fa-dot-circle-o', 39 | 'label' : 'Places', 40 | 'name' : 'google_places', 41 | 'offset' : 3, 42 | 'results' : formattedResults 43 | }; 44 | q.resolve(googleResults); 45 | }else{ 46 | q.resolve('no google results'); 47 | } 48 | }; 49 | 50 | var locationCenter = new google.maps.LatLng(35.5951125,-82.5511088); 51 | 52 | var googleRequest = { 53 | 'name' : searchText, 54 | 'location' : locationCenter, 55 | 'radius' : 30000, 56 | 'types' : ['establishment'] 57 | }; 58 | 59 | service.nearbySearch(googleRequest, googleCallback); 60 | 61 | //return the promise using q 62 | return q.promise; 63 | 64 | }; 65 | 66 | simplicityGooglePlacesApiAdapter.getDetails = function(place_id){ 67 | //use $q promises to handle the http request asynchronously 68 | var q = $q.defer(); 69 | 70 | 71 | 72 | var googleCallback = function(results, status){ 73 | if (status === google.maps.places.PlacesServiceStatus.OK) { 74 | q.resolve(results); 75 | }else{ 76 | q.resolve('no google results'); 77 | } 78 | }; 79 | 80 | var locationCenter = new google.maps.LatLng(35.5951125,-82.5511088); 81 | 82 | var googleRequest = { 83 | 'placeId' : place_id, 84 | }; 85 | 86 | service.getDetails(googleRequest, googleCallback); 87 | 88 | 89 | 90 | //return the promise using q 91 | return q.promise; 92 | 93 | }; 94 | 95 | 96 | 97 | //****Return the factory object****// 98 | return simplicityGooglePlacesApiAdapter; 99 | 100 | 101 | }]); //END simplicityGooglePlacesApiAdapter factory function 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /app/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/.DS_Store -------------------------------------------------------------------------------- /app/assets/fonts/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/.DS_Store -------------------------------------------------------------------------------- /app/assets/fonts/flaticon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/flaticon.eot -------------------------------------------------------------------------------- /app/assets/fonts/flaticon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/flaticon.ttf -------------------------------------------------------------------------------- /app/assets/fonts/flaticon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/flaticon.woff -------------------------------------------------------------------------------- /app/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /app/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /app/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /app/assets/images/address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/address.png -------------------------------------------------------------------------------- /app/assets/images/citylogo-flatblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/citylogo-flatblue.png -------------------------------------------------------------------------------- /app/assets/images/crimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/crimes.png -------------------------------------------------------------------------------- /app/assets/images/development.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/development.png -------------------------------------------------------------------------------- /app/assets/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/layers-2x.png -------------------------------------------------------------------------------- /app/assets/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/layers.png -------------------------------------------------------------------------------- /app/assets/images/leaflet.awesome-markers.css: -------------------------------------------------------------------------------- 1 | /* 2 | Author: L. Voogdt 3 | License: MIT 4 | Version: 1.0 5 | */ 6 | 7 | /* Marker setup */ 8 | .awesome-marker { 9 | background: url('images/markers-soft.png') no-repeat 0 0; 10 | width: 35px; 11 | height: 46px; 12 | position:absolute; 13 | left:0; 14 | top:0; 15 | display: block; 16 | text-align: center; 17 | } 18 | 19 | .awesome-marker-shadow { 20 | background: url('images/markers-shadow.png') no-repeat 0 0; 21 | width: 36px; 22 | height: 16px; 23 | } 24 | 25 | /* Retina displays */ 26 | @media (min--moz-device-pixel-ratio: 1.5),(-o-min-device-pixel-ratio: 3/2), 27 | (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5),(min-resolution: 1.5dppx) { 28 | .awesome-marker { 29 | background-image: url('images/markers-soft@2x.png'); 30 | background-size: 720px 46px; 31 | } 32 | .awesome-marker-shadow { 33 | background-image: url('images/markers-shadow@2x.png'); 34 | background-size: 35px 16px; 35 | } 36 | } 37 | 38 | .awesome-marker i { 39 | color: #333; 40 | margin-top: 10px; 41 | display: inline-block; 42 | font-size: 14px; 43 | } 44 | 45 | .awesome-marker .icon-white { 46 | color: #fff; 47 | } 48 | 49 | /* Colors */ 50 | .awesome-marker-icon-red { 51 | background-position: 0 0; 52 | } 53 | 54 | .awesome-marker-icon-darkred { 55 | background-position: -180px 0; 56 | } 57 | 58 | .awesome-marker-icon-lightred { 59 | background-position: -360px 0; 60 | } 61 | 62 | .awesome-marker-icon-orange { 63 | background-position: -36px 0; 64 | } 65 | 66 | .awesome-marker-icon-beige { 67 | background-position: -396px 0; 68 | } 69 | 70 | .awesome-marker-icon-green { 71 | background-position: -72px 0; 72 | } 73 | 74 | .awesome-marker-icon-darkgreen { 75 | background-position: -252px 0; 76 | } 77 | 78 | .awesome-marker-icon-lightgreen { 79 | background-position: -432px 0; 80 | } 81 | 82 | .awesome-marker-icon-blue { 83 | background-position: -108px 0; 84 | } 85 | 86 | .awesome-marker-icon-darkblue { 87 | background-position: -216px 0; 88 | } 89 | 90 | .awesome-marker-icon-lightblue { 91 | background-position: -468px 0; 92 | } 93 | 94 | .awesome-marker-icon-purple { 95 | background-position: -144px 0; 96 | } 97 | 98 | .awesome-marker-icon-darkpurple { 99 | background-position: -288px 0; 100 | } 101 | 102 | .awesome-marker-icon-pink { 103 | background-position: -504px 0; 104 | } 105 | 106 | .awesome-marker-icon-cadetblue { 107 | background-position: -324px 0; 108 | } 109 | 110 | .awesome-marker-icon-white { 111 | background-position: -574px 0; 112 | } 113 | 114 | .awesome-marker-icon-gray { 115 | background-position: -648px 0; 116 | } 117 | 118 | .awesome-marker-icon-lightgray { 119 | background-position: -612px 0; 120 | } 121 | 122 | .awesome-marker-icon-black { 123 | background-position: -682px 0; 124 | } 125 | -------------------------------------------------------------------------------- /app/assets/images/mailbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/mailbox.png -------------------------------------------------------------------------------- /app/assets/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/marker-icon-2x.png -------------------------------------------------------------------------------- /app/assets/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/marker-icon.png -------------------------------------------------------------------------------- /app/assets/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/marker-shadow.png -------------------------------------------------------------------------------- /app/assets/images/markers-matte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-matte.png -------------------------------------------------------------------------------- /app/assets/images/markers-matte@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-matte@2x.png -------------------------------------------------------------------------------- /app/assets/images/markers-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-plain.png -------------------------------------------------------------------------------- /app/assets/images/markers-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-shadow.png -------------------------------------------------------------------------------- /app/assets/images/markers-shadow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-shadow@2x.png -------------------------------------------------------------------------------- /app/assets/images/markers-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-soft.png -------------------------------------------------------------------------------- /app/assets/images/markers-soft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/markers-soft@2x.png -------------------------------------------------------------------------------- /app/assets/images/powered-by-google-on-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/powered-by-google-on-white.png -------------------------------------------------------------------------------- /app/assets/images/property.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/property.png -------------------------------------------------------------------------------- /app/assets/images/recycling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/recycling.png -------------------------------------------------------------------------------- /app/assets/images/street-maintenance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/street-maintenance.png -------------------------------------------------------------------------------- /app/assets/images/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/trash.png -------------------------------------------------------------------------------- /app/assets/images/zoning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/images/zoning.png -------------------------------------------------------------------------------- /app/assets/styles/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/styles/.DS_Store -------------------------------------------------------------------------------- /app/assets/styles/_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 | // Provide class for links that match alerts 22 | .alert-link { 23 | font-weight: $alert-link-font-weight; 24 | } 25 | 26 | // Improve alignment and spacing of inner content 27 | > p, 28 | > ul { 29 | margin-bottom: 0; 30 | } 31 | > p + p { 32 | margin-top: 5px; 33 | } 34 | } 35 | 36 | // Dismissible alerts 37 | // 38 | // Expand the right padding and account for the close button's positioning. 39 | 40 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 41 | .alert-dismissible { 42 | padding-right: ($alert-padding + 20); 43 | 44 | // Adjust close link position 45 | .close { 46 | position: relative; 47 | top: -2px; 48 | right: -21px; 49 | color: inherit; 50 | } 51 | } 52 | 53 | // Alternate styles 54 | // 55 | // Generate contextual modifier classes for colorizing the alert. 56 | 57 | .alert-success { 58 | @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); 59 | } 60 | .alert-info { 61 | @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); 62 | } 63 | .alert-warning { 64 | @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); 65 | } 66 | .alert-danger { 67 | @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); 68 | } 69 | -------------------------------------------------------------------------------- /app/assets/styles/_angular-animations.scss: -------------------------------------------------------------------------------- 1 | .slide-container{ 2 | position: absolute; 3 | margin: 0 auto; 4 | } 5 | .slide-container.ng-enter, 6 | .slide-container.ng-leave { 7 | -webkit-transition: 0.5s ease all; 8 | -moz-transition: 0.5s ease all; 9 | -o-transition: 0.5s ease all; 10 | transition: 0.5s ease all; 11 | } 12 | 13 | .slide-container.ng-enter { 14 | -webkit-transform: translate(100%, 0); 15 | transform: translate(100%, 0); 16 | } 17 | .slide-container.ng-leave.ng-leave-active { 18 | -webkit-transform: translate(100%, 0); 19 | transform: translate(100%, 0); 20 | } 21 | .back.slide-container.ng-enter { 22 | -webkit-transform: translate(-100%, 0%); 23 | transform: translate(-100%, 0%); 24 | } 25 | .back.slide-container.ng-leave.ng-leave-active { 26 | -webkit-transform: translate(-100%, 0%); 27 | transform: translate(-100%, 0%); 28 | } 29 | .slide-container.ng-leave, 30 | .slide-container.ng-enter.ng-enter-active { 31 | -webkit-transform: translate(0, 0); 32 | transform: translate(0, 0); 33 | } 34 | 35 | //slide 36 | .slide { 37 | position: absolute; 38 | left: 0; 39 | top: 0; 40 | width: 100%; 41 | height: 100%; 42 | } 43 | .slide.ng-enter, 44 | .slide.ng-leave { 45 | -webkit-transition: all 1s ease; 46 | -moz-transition: all 1s ease; 47 | -o-transition: all 1s ease; 48 | transition: all 1s ease; 49 | } 50 | .slide.ng-enter { 51 | left: 100%; 52 | } 53 | .slide.ng-enter-active { 54 | left: 0; 55 | } 56 | .slide.ng-leave { 57 | left: 0; 58 | } 59 | .slide.ng-leave-active { 60 | left: -100%; 61 | } 62 | .back.slide.ng-enter { 63 | right: -100%; 64 | } 65 | .back.slide.ng-leave.ng-leave-active { 66 | right: 100% 67 | } 68 | // slidedown 69 | .slidedown { 70 | position: absolute; 71 | bottom: 0; 72 | left: 0; 73 | width: 100%; 74 | height: 100%; 75 | } 76 | .slidedown.ng-enter, 77 | .slidedown.ng-leave { 78 | -webkit-transition: all 1s ease; 79 | -moz-transition: all 1s ease; 80 | -o-transition: all 1s ease; 81 | transition: all 1s ease; 82 | } 83 | .slidedown.ng-enter { 84 | bottom: -100%; 85 | } 86 | .slidedown.ng-enter-active { 87 | bottom: 0; 88 | } 89 | .slidedown.ng-leave { 90 | bottom: 0; 91 | } 92 | .slidedown.ng-leave-active { 93 | bottom: 100%; 94 | } 95 | // slideup 96 | .slideup { 97 | position: absolute; 98 | bottom: 0; 99 | left: 0; 100 | width: 100%; 101 | height: 100%; 102 | } 103 | .slideup.ng-enter, 104 | .slideup.ng-leave { 105 | -webkit-transition: all 1s ease; 106 | -moz-transition: all 1s ease; 107 | -o-transition: all 1s ease; 108 | transition: all 1s ease; 109 | } 110 | .slideup.ng-enter { 111 | bottom: -100%; 112 | } 113 | .slideup.ng-enter-active { 114 | bottom: 0; 115 | } 116 | .slideup.ng-leave { 117 | bottom: 0; 118 | } 119 | .slideup.ng-leave-active { 120 | bottom: 100%; 121 | } 122 | 123 | // flip 124 | .content { 125 | -webkit-transition: -webkit-transform 1s; 126 | -webkit-perspective: 600px; 127 | } 128 | .content .flip { 129 | -webkit-transform-style: preserve-3d; 130 | -webkit-backface-visibility: hidden; 131 | -webkit-transition: all 1s ease-in-out; 132 | } 133 | .content .flip.ng-enter { 134 | -webkit-transform: rotateY(-180deg); 135 | } 136 | .content .flip.ng-enter-active { 137 | -webkit-transform: rotateY(0deg); 138 | } 139 | .content .flip.ng-leave { 140 | -webkit-transform: rotateY(0deg); 141 | } 142 | .content .flip.ng-leave-active { 143 | -webkit-transform: rotateY(180deg); 144 | } -------------------------------------------------------------------------------- /app/assets/styles/_app.scss: -------------------------------------------------------------------------------- 1 | .list-item-panel{ 2 | 3 | margin : 2px; 4 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); 5 | } 6 | 7 | a{ 8 | cursor: pointer; 9 | } 10 | 11 | .modal .modal-body { 12 | max-height: 500px; 13 | overflow-y: auto; 14 | } 15 | 16 | .leaflet-control-expand-map-interior{ 17 | width: 26px; 18 | height: 26px; 19 | display: block; 20 | padding: 2px; 21 | border-radius: 4px; 22 | -webkit-border-radius: 4px; 23 | -moz-border-radius: 4px; 24 | box-shadow: 0 1px 7px rgba(0, 0, 0, 0.65); 25 | cursor: pointer; 26 | text-align: center; 27 | background-color: #FFFFFF; 28 | } 29 | .leaflet-control-expand:before{ 30 | font-family: "fontawesome"; 31 | content : "\f0b2"; 32 | font-size: 17px; 33 | } 34 | 35 | .leaflet-control-collapse:before{ 36 | font-family: "fontawesome"; 37 | content : "\f066"; 38 | font-size: 17px; 39 | } 40 | 41 | .leaflet-control-command-interior:hover{ 42 | 43 | background-color: #F4F4F4; 44 | } 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/assets/styles/_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: baseline; 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 | .btn-xs & { 32 | top: 0; 33 | padding: 1px 5px; 34 | } 35 | 36 | // [converter] extracted a& to a.badge 37 | 38 | // Account for badges in navs 39 | a.list-group-item.active > &, 40 | .nav-pills > .active > a > & { 41 | color: $badge-active-color; 42 | background-color: $badge-active-bg; 43 | } 44 | .nav-pills > li > a > & { 45 | margin-left: 3px; 46 | } 47 | } 48 | 49 | // Hover state, but only for links 50 | a.badge { 51 | &:hover, 52 | &:focus { 53 | color: $badge-link-hover-color; 54 | text-decoration: none; 55 | cursor: pointer; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/assets/styles/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // Cosmo 3.2.0 2 | // Bootswatch 3 | // ----------------------------------------------------- 4 | 5 | @import url($web-font); 6 | 7 | // Navbar ===================================================================== 8 | 9 | .navbar-inverse { 10 | 11 | .badge { 12 | background-color: #fff; 13 | color: $brand-primary; 14 | } 15 | } 16 | 17 | // Buttons ==================================================================== 18 | 19 | 20 | // Typography ================================================================= 21 | 22 | body { 23 | -webkit-font-smoothing: antialiased; 24 | } 25 | 26 | .text-primary, 27 | .text-primary:hover { 28 | color: $brand-primary; 29 | } 30 | 31 | .text-success, 32 | .text-success:hover { 33 | color: $brand-success; 34 | } 35 | 36 | .text-danger, 37 | .text-danger:hover { 38 | color: $brand-danger; 39 | } 40 | 41 | .text-warning, 42 | .text-warning:hover { 43 | color: $brand-warning; 44 | } 45 | 46 | .text-info, 47 | .text-info:hover { 48 | color: $brand-info; 49 | } 50 | 51 | // Tables ===================================================================== 52 | 53 | table, 54 | .table { 55 | 56 | a:not(.btn) { 57 | text-decoration: underline; 58 | } 59 | 60 | .success, 61 | .warning, 62 | .danger, 63 | .info { 64 | color: #fff; 65 | 66 | a { 67 | color: #fff; 68 | } 69 | } 70 | } 71 | 72 | // Forms ====================================================================== 73 | 74 | 75 | .has-warning { 76 | .help-block, 77 | .control-label, 78 | .form-control-feedback { 79 | color: $brand-warning; 80 | } 81 | 82 | .form-control, 83 | .form-control:focus, 84 | .input-group-addon { 85 | border: 1px solid $brand-warning; 86 | } 87 | } 88 | 89 | .has-error { 90 | .help-block, 91 | .control-label, 92 | .form-control-feedback { 93 | color: $brand-danger; 94 | } 95 | 96 | .form-control, 97 | .form-control:focus, 98 | .input-group-addon { 99 | border: 1px solid $brand-danger; 100 | } 101 | } 102 | 103 | .has-success { 104 | .help-block, 105 | .control-label, 106 | .form-control-feedback { 107 | color: $brand-success; 108 | } 109 | 110 | .form-control, 111 | .form-control:focus, 112 | .input-group-addon { 113 | border: 1px solid $brand-success; 114 | } 115 | } 116 | 117 | // Navs ======================================================================= 118 | 119 | .nav-pills { 120 | 121 | & > li > a { 122 | border-radius: 0; 123 | } 124 | } 125 | 126 | .dropdown-menu { 127 | 128 | & > li > a:hover, 129 | & > li > a:focus { 130 | background-image: none; 131 | } 132 | } 133 | 134 | // Indicators ================================================================= 135 | 136 | .close { 137 | text-decoration: none; 138 | text-shadow: none; 139 | opacity: 0.4; 140 | 141 | &:hover, 142 | &:focus { 143 | opacity: 1; 144 | } 145 | } 146 | 147 | .alert { 148 | border: none; 149 | 150 | .alert-link { 151 | text-decoration: underline; 152 | color: #fff; 153 | } 154 | } 155 | 156 | .label { 157 | border-radius: 0; 158 | } 159 | 160 | // Progress bars ============================================================== 161 | 162 | .progress { 163 | height: 8px; 164 | @include box-shadow(none); 165 | .progress-bar { 166 | font-size: 8px; 167 | line-height: 8px; 168 | } 169 | } 170 | 171 | // Containers ================================================================= 172 | 173 | .panel-heading, 174 | .panel-footer { 175 | border-top-right-radius: 0; 176 | border-top-left-radius: 0; 177 | } 178 | 179 | .panel-default { 180 | .close { 181 | color: $text-color; 182 | } 183 | } 184 | 185 | .modal { 186 | .close { 187 | color: $text-color; 188 | } 189 | } 190 | 191 | .popover { 192 | color: $text-color; 193 | } -------------------------------------------------------------------------------- /app/assets/styles/_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 | -------------------------------------------------------------------------------- /app/assets/styles/_browse-happy.scss: -------------------------------------------------------------------------------- 1 | .browsehappy { 2 | margin: 0.2em 0; 3 | background: #ccc; 4 | color: #000; 5 | padding: 0.2em 0; 6 | } 7 | -------------------------------------------------------------------------------- /app/assets/styles/_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 | cursor: pointer; 16 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 17 | border: 1px solid transparent; 18 | white-space: nowrap; 19 | @include box-shadow(2px 2px 2px rgba(0,0,0,.3)); 20 | @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $border-radius-base); 21 | @include user-select(none); 22 | 23 | &, 24 | &:active, 25 | &.active { 26 | &:focus { 27 | @include tab-focus(); 28 | } 29 | } 30 | 31 | &:hover, 32 | &:focus { 33 | color: $btn-default-color; 34 | text-decoration: none; 35 | } 36 | 37 | &:active, 38 | &.active { 39 | outline: 0; 40 | background-image: none; 41 | @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); 42 | } 43 | 44 | &.disabled, 45 | &[disabled], 46 | fieldset[disabled] & { 47 | cursor: not-allowed; 48 | pointer-events: none; // Future-proof disabling of clicks 49 | @include opacity(.65); 50 | @include box-shadow(none); 51 | } 52 | } 53 | 54 | // Alternate buttons 55 | // -------------------------------------------------- 56 | 57 | .btn-default { 58 | @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); 59 | } 60 | .btn-primary { 61 | @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); 62 | } 63 | // Success appears as green 64 | .btn-success { 65 | @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); 66 | } 67 | // Info appears as blue-green 68 | .btn-info { 69 | @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); 70 | } 71 | // Warning appears as orange 72 | .btn-warning { 73 | @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); 74 | } 75 | // Danger and error appear as red 76 | .btn-danger { 77 | @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); 78 | } 79 | 80 | 81 | // Link buttons 82 | // ------------------------- 83 | 84 | // Make a button look and behave like a link 85 | .btn-link { 86 | color: $link-color; 87 | font-weight: normal; 88 | cursor: pointer; 89 | border-radius: 0; 90 | 91 | &, 92 | &:active, 93 | &[disabled], 94 | fieldset[disabled] & { 95 | background-color: transparent; 96 | @include box-shadow(none); 97 | } 98 | &, 99 | &:hover, 100 | &:focus, 101 | &:active { 102 | border-color: transparent; 103 | } 104 | &:hover, 105 | &:focus { 106 | color: $link-hover-color; 107 | text-decoration: underline; 108 | background-color: transparent; 109 | } 110 | &[disabled], 111 | fieldset[disabled] & { 112 | &:hover, 113 | &:focus { 114 | color: $btn-link-disabled-color; 115 | text-decoration: none; 116 | } 117 | } 118 | } 119 | 120 | 121 | // Button Sizes 122 | // -------------------------------------------------- 123 | 124 | .btn-lg { 125 | // line-height: ensure even-numbered height of button next to large input 126 | @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); 127 | } 128 | .btn-sm { 129 | // line-height: ensure proper height of button next to small input 130 | @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); 131 | } 132 | .btn-xs { 133 | @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $border-radius-small); 134 | } 135 | 136 | 137 | // Block button 138 | // -------------------------------------------------- 139 | 140 | .btn-block { 141 | display: block; 142 | width: 100%; 143 | } 144 | 145 | // Vertically space out multiple block buttons 146 | .btn-block + .btn-block { 147 | margin-top: 5px; 148 | } 149 | 150 | // Specificity overrides 151 | input[type="submit"], 152 | input[type="reset"], 153 | input[type="button"] { 154 | &.btn-block { 155 | width: 100%; 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /app/assets/styles/_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 | button.close { 30 | padding: 0; 31 | cursor: pointer; 32 | background: transparent; 33 | border: 0; 34 | -webkit-appearance: none; 35 | } 36 | -------------------------------------------------------------------------------- /app/assets/styles/_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 | box-shadow: none; 36 | } 37 | } 38 | 39 | // Blocks of code 40 | pre { 41 | display: block; 42 | padding: (($line-height-computed - 1) / 2); 43 | margin: 0 0 ($line-height-computed / 2); 44 | font-size: ($font-size-base - 1); // 14px to 13px 45 | line-height: $line-height-base; 46 | word-break: break-all; 47 | word-wrap: break-word; 48 | color: $pre-color; 49 | background-color: $pre-bg; 50 | border: 1px solid $pre-border-color; 51 | border-radius: $border-radius-base; 52 | 53 | // Account for some code outputs that place code tags in pre tags 54 | code { 55 | padding: 0; 56 | font-size: inherit; 57 | color: inherit; 58 | white-space: pre-wrap; 59 | background-color: transparent; 60 | border-radius: 0; 61 | } 62 | } 63 | 64 | // Enable scrollable blocks of code 65 | .pre-scrollable { 66 | max-height: $pre-scrollable-max-height; 67 | overflow-y: scroll; 68 | } 69 | -------------------------------------------------------------------------------- /app/assets/styles/_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(height .35s ease); 35 | } 36 | -------------------------------------------------------------------------------- /app/assets/styles/_flaticon.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Flaticon"; 3 | src: url("fonts/flaticon.eot"); 4 | src: url("fonts/flaticon.eot#iefix") format("embedded-opentype"), 5 | url("fonts/flaticon.woff") format("woff"), 6 | url("fonts/flaticon.ttf") format("truetype"), 7 | url("fonts/flaticon.svg") format("svg"); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | [class^="flaticon-"]:before, [class*=" flaticon-"]:before, 12 | [class^="flaticon-"]:after, [class*=" flaticon-"]:after { 13 | font-family: Flaticon; 14 | font-size: 3em; 15 | font-style: normal; 16 | margin-left: 20px; 17 | }.flaticon-building33:before { 18 | content: "\e000"; 19 | } 20 | .flaticon-email20:before { 21 | content: "\e001"; 22 | } 23 | .flaticon-garbage5:before { 24 | content: "\e002"; 25 | } 26 | .flaticon-house112:before { 27 | content: "\e003"; 28 | } 29 | .flaticon-map104:before { 30 | content: "\e004"; 31 | } 32 | .flaticon-police19:before { 33 | content: "\e005"; 34 | } 35 | .flaticon-purchase1:before { 36 | content: "\e006"; 37 | } 38 | .flaticon-shovel1:before { 39 | content: "\e007"; 40 | } 41 | .flaticon-trash42:before { 42 | content: "\e008"; 43 | } 44 | -------------------------------------------------------------------------------- /app/assets/styles/_flipping.scss: -------------------------------------------------------------------------------- 1 | #folder { 2 | padding: 10px; 3 | 4 | height: inherit; 5 | } 6 | .shadow{ 7 | border-color: #dddddd; 8 | box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); 9 | } 10 | 11 | 12 | .fold { 13 | padding: 10px; 14 | height: 80px; 15 | cursor: pointer; 16 | -webkit-transition: all .3s linear; 17 | -moz-transition: all .3s linear; 18 | -ms-transition: all .3s linear; 19 | transition: all .3s linear; 20 | } 21 | 22 | #toggle { display: none; } 23 | 24 | 25 | #toggle:checked ~ .fold:nth-child(odd) { 26 | margin-top: -85px; 27 | -webkit-transform: perspective(1000px) rotateX(-90deg); 28 | -moz-transform: perspective(1000px) rotateX(-90deg); 29 | -ms-transform: perspective(1000px) rotateX(-90deg); 30 | transform: perspective(1000px) rotateX(-90deg); 31 | } 32 | 33 | #toggle:checked ~ .fold:nth-child(even) { 34 | margin-top: -85px; 35 | -webkit-transform: perspective(1000px) rotateX(90deg); 36 | -moz-transform: perspective(1000px) rotateX(90deg); 37 | -ms-transform: perspective(1000px) rotateX(90deg); 38 | transform: perspective(1000px) rotateX(90deg); 39 | } 40 | .panel{ 41 | margin-bottom: 0px 42 | } 43 | 44 | /*.card-container { 45 | height : 400px; 46 | position: relative; 47 | -webkit-perspective: 1000px; 48 | -moz-perspective: 1000px; 49 | -o-perspective: 1000px; 50 | perspective: 1000px; 51 | } 52 | 53 | #card { 54 | width: 100%; 55 | height: 100%; 56 | position: absolute; 57 | -webkit-transition: -webkit-transform 1s; 58 | -moz-transition: -moz-transform 1s; 59 | -o-transition: -o-transform 1s; 60 | transition: transform 1s; 61 | -webkit-transform-style: preserve-3d; 62 | -moz-transform-style: preserve-3d; 63 | -o-transform-style: preserve-3d; 64 | transform-style: preserve-3d; 65 | } 66 | 67 | .face { 68 | background: white; 69 | display: block; 70 | height: 100%; 71 | width: 100%; 72 | position: absolute; 73 | -webkit-backface-visibility: visible; 74 | -webkit-backface-visibility: hidden; 75 | -moz-backface-visibility: hidden; 76 | -o-backface-visibility: hidden; 77 | backface-visibility: hidden; 78 | } 79 | 80 | #card .back { 81 | height: 400px; 82 | background: white; 83 | -webkit-transform: rotateY( 180deg ); 84 | -moz-transform: rotateY( 180deg ); 85 | -o-transform: rotateY( 180deg ); 86 | transform: rotateY( 180deg ); 87 | } 88 | 89 | #card.flipped { 90 | -webkit-transform: rotateY( 180deg ); 91 | -moz-transform: rotateY( 180deg ); 92 | -o-transform: rotateY( 180deg ); 93 | transform: rotateY( 180deg ); 94 | }*/ 95 | 96 | .flip { 97 | -webkit-perspective: 1000; 98 | -ms-perspective: 1000; 99 | -moz-perspective: 1000; 100 | -o-perspective: 1000; 101 | width: 100%; 102 | 103 | position: relative; 104 | } 105 | .flip .card.flipped { 106 | transform:rotatey(180deg); 107 | -ms-transform:rotatey(180deg); /* IE 9 */ 108 | -moz-transform:rotatey(180deg); /* Firefox */ 109 | -webkit-transform:rotatey(180deg); /* Safari and Chrome */ 110 | -o-transform:rotatey(180deg); /* Opera */ 111 | } 112 | .flip .card { 113 | width: 100%; 114 | height: 100%; 115 | -webkit-transform-style: preserve-3d; 116 | -webkit-transition: 0.5s; 117 | -moz-transform-style: preserve-3d; 118 | -moz-transition: 0.5s; 119 | -ms-transform-style: preserve-3d; 120 | -ms-transition: 0.5s; 121 | -o-transform-style: preserve-3d; 122 | -o-transition: 0.5s; 123 | transform-style: preserve-3d; 124 | transition: 0.5s; 125 | } 126 | .flip .card .face { 127 | width: 100%; 128 | height: 100%; 129 | backface-visibility: hidden; /* W3C */ 130 | -webkit-backface-visibility: hidden; /* Safari & Chrome */ 131 | -moz-backface-visibility: hidden; /* Firefox */ 132 | -ms-backface-visibility: hidden; /* Internet Explorer */ 133 | -o-backface-visibility: hidden; /* Opera */ 134 | 135 | } 136 | .flip .card .front { 137 | position: absolute; 138 | z-index: 1; 139 | background: white; 140 | } 141 | .flip .card .back { 142 | 143 | z-index: 1; 144 | background: white; 145 | position: absolute; 146 | 147 | transform:rotatey(180deg); 148 | -ms-transform:rotatey(180deg); /* IE 9 */ 149 | -moz-transform:rotatey(180deg); /* Firefox */ 150 | -webkit-transform:rotatey(180deg); /* Safari and Chrome */ 151 | -o-transform:rotatey(180deg); /* Opera */ 152 | 153 | } -------------------------------------------------------------------------------- /app/assets/styles/_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 | -------------------------------------------------------------------------------- /app/assets/styles/_icon-buttons.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cityofasheville/simplicity-ui/bee7141b1d0b84512f2c58526e2b26ec64fb03c6/app/assets/styles/_icon-buttons.scss -------------------------------------------------------------------------------- /app/assets/styles/_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 | margin-left: -1px; 164 | } 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /app/assets/styles/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: $jumbotron-padding; 8 | margin-bottom: $jumbotron-padding; 9 | color: $jumbotron-color; 10 | background-color: $jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: $jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: ($jumbotron-padding / 2); 18 | font-size: $jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | > hr { 23 | border-top-color: darken($jumbotron-bg, 10%); 24 | } 25 | 26 | .container & { 27 | border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container 28 | } 29 | 30 | .container { 31 | max-width: 100%; 32 | } 33 | 34 | @media screen and (min-width: $screen-sm-min) { 35 | padding-top: ($jumbotron-padding * 1.6); 36 | padding-bottom: ($jumbotron-padding * 1.6); 37 | 38 | .container & { 39 | padding-left: ($jumbotron-padding * 2); 40 | padding-right: ($jumbotron-padding * 2); 41 | } 42 | 43 | h1, 44 | .h1 { 45 | font-size: ($font-size-base * 4.5); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/assets/styles/_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 | -------------------------------------------------------------------------------- /app/assets/styles/_leaflet-awesome-markers.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Author: L. Voogdt 3 | License: MIT 4 | Version: 1.0 5 | */ 6 | 7 | /* Marker setup */ 8 | .awesome-marker { 9 | background: url('images/markers-soft.png') no-repeat 0 0; 10 | width: 35px; 11 | height: 46px; 12 | position:absolute; 13 | left:0; 14 | top:0; 15 | display: block; 16 | text-align: center; 17 | } 18 | 19 | .awesome-marker-shadow { 20 | background: url('images/markers-shadow.png') no-repeat 0 0; 21 | width: 36px; 22 | height: 16px; 23 | } 24 | 25 | /* Retina displays */ 26 | @media (min--moz-device-pixel-ratio: 1.5),(-o-min-device-pixel-ratio: 3/2), 27 | (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5),(min-resolution: 1.5dppx) { 28 | .awesome-marker { 29 | background-image: url('images/markers-soft@2x.png'); 30 | background-size: 720px 46px; 31 | } 32 | .awesome-marker-shadow { 33 | background-image: url('images/markers-shadow@2x.png'); 34 | background-size: 35px 16px; 35 | } 36 | } 37 | 38 | .awesome-marker i { 39 | color: #333; 40 | margin-top: 10px; 41 | display: inline-block; 42 | font-size: 14px; 43 | } 44 | 45 | .awesome-marker .icon-white { 46 | color: #fff; 47 | } 48 | 49 | /* Colors */ 50 | .awesome-marker-icon-red { 51 | background-position: 0 0; 52 | } 53 | 54 | .awesome-marker-icon-darkred { 55 | background-position: -180px 0; 56 | } 57 | 58 | .awesome-marker-icon-lightred { 59 | background-position: -360px 0; 60 | } 61 | 62 | .awesome-marker-icon-orange { 63 | background-position: -36px 0; 64 | } 65 | 66 | .awesome-marker-icon-beige { 67 | background-position: -396px 0; 68 | } 69 | 70 | .awesome-marker-icon-green { 71 | background-position: -72px 0; 72 | } 73 | 74 | .awesome-marker-icon-darkgreen { 75 | background-position: -252px 0; 76 | } 77 | 78 | .awesome-marker-icon-lightgreen { 79 | background-position: -432px 0; 80 | } 81 | 82 | .awesome-marker-icon-blue { 83 | background-position: -108px 0; 84 | } 85 | 86 | .awesome-marker-icon-darkblue { 87 | background-position: -216px 0; 88 | } 89 | 90 | .awesome-marker-icon-lightblue { 91 | background-position: -468px 0; 92 | } 93 | 94 | .awesome-marker-icon-purple { 95 | background-position: -144px 0; 96 | } 97 | 98 | .awesome-marker-icon-darkpurple { 99 | background-position: -288px 0; 100 | } 101 | 102 | .awesome-marker-icon-pink { 103 | background-position: -504px 0; 104 | } 105 | 106 | .awesome-marker-icon-cadetblue { 107 | background-position: -324px 0; 108 | } 109 | 110 | .awesome-marker-icon-white { 111 | background-position: -574px 0; 112 | } 113 | 114 | .awesome-marker-icon-gray { 115 | background-position: -648px 0; 116 | } 117 | 118 | .awesome-marker-icon-lightgray { 119 | background-position: -612px 0; 120 | } 121 | 122 | .awesome-marker-icon-black { 123 | background-position: -682px 0; 124 | } -------------------------------------------------------------------------------- /app/assets/styles/_list-group.scss: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | // 8 | // Easily usable on