").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+ jQuery.fn[ type ] = function( fn ){
+ return this.on( type, fn );
+ };
+});
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Cross-domain detection vars
+ parts,
+ // Loop variable
+ i,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers as string
+ responseHeadersString,
+ // timeout handle
+ timeoutTimer,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ transport,
+ // Response headers
+ responseHeaders,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+ var firstDataType, ct, finalDataType, type,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || jQuery("head")[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement("script");
+
+ script.async = true;
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( script.parentNode ) {
+ script.parentNode.removeChild( script );
+ }
+
+ // Dereference the script
+ script = null;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+
+ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( undefined, true );
+ }
+ }
+ };
+ }
+});
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+var xhrCallbacks, xhrSupported,
+ xhrId = 0,
+ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject && function() {
+ // Abort all pending requests
+ var key;
+ for ( key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( undefined, true );
+ }
+ };
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var handle, i,
+ xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( err ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+ var status, responseHeaders, statusText, responses;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occurred
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ responses = {};
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ if ( typeof xhr.responseText === "string" ) {
+ responses.text = xhr.responseText;
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ if ( !s.async ) {
+ // if we're in sync mode we fire the callback
+ callback();
+ } else if ( xhr.readyState === 4 ) {
+ // (IE6 & IE7) if it's in cache and has been
+ // retrieved directly we need to fire the callback
+ setTimeout( callback );
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback( undefined, true );
+ }
+ }
+ };
+ }
+ });
+}
+var fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ }]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // we're done with this property
+ return tween;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = jQuery._data( elem, "fxshow" );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( elem, "display" ) === "inline" &&
+ jQuery.css( elem, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+ style.display = "inline-block";
+
+ } else {
+ style.zoom = 1;
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ if ( !jQuery.support.shrinkWrapBlocks ) {
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+ }
+
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+ continue;
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = jQuery._data( elem, "fxshow", {} );
+ }
+
+ // store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+ jQuery._removeData( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+ }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || jQuery._data( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = jQuery._data( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // enable finishing flag on private data
+ data.finish = true;
+
+ // empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ attrs = { height: type },
+ i = 0;
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth? 1 : 0;
+ for( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p*Math.PI ) / 2;
+ }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ if ( timer() && jQuery.timers.push( timer ) ) {
+ jQuery.fx.start();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ box = { top: 0, left: 0 },
+ elem = this[ 0 ],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
+ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+ };
+};
+
+jQuery.offset = {
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ parentOffset = { top: 0, left: 0 },
+ elem = this[ 0 ];
+
+ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // we assume that getBoundingClientRect is available when computed position is fixed
+ offset = elem.getBoundingClientRect();
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || docElem;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ win.document.documentElement[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+ // Expose jQuery as module.exports in loaders that implement the Node
+ // module pattern (including browserify). Do not create the global, since
+ // the user will be storing it themselves locally, and globals are frowned
+ // upon in the Node module world.
+ module.exports = jQuery;
+} else {
+ // Otherwise expose jQuery to the global object as usual
+ window.jQuery = window.$ = jQuery;
+
+ // Register as a named AMD module, since jQuery can be concatenated with other
+ // files that may use define, but not via a proper concatenation script that
+ // understands anonymous AMD modules. A named AMD is safest and most robust
+ // way to register. Lowercase jquery is used because AMD module names are
+ // derived from file names, and jQuery is normally delivered in a lowercase
+ // file name. Do this after creating the global so that if an AMD module wants
+ // to call noConflict to hide this version of jQuery, it will work.
+ if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function () { return jQuery; } );
+ }
+}
+
+})( window );
\ No newline at end of file
diff --git a/public/assets/admin/js/light-bootstrap-dashboard.js b/public/assets/admin/js/light-bootstrap-dashboard.js
new file mode 100644
index 00000000..5edf4dcf
--- /dev/null
+++ b/public/assets/admin/js/light-bootstrap-dashboard.js
@@ -0,0 +1,175 @@
+/*!
+
+ =========================================================
+ * Light Bootstrap Dashboard - v1.3.1.0
+ =========================================================
+
+ * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard
+ * Copyright 2017 Creative Tim (http://www.creative-tim.com)
+ * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md)
+
+ =========================================================
+
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+ */
+
+var searchVisible = 0;
+var transparent = true;
+
+var transparentDemo = true;
+var fixedTop = false;
+
+var navbar_initialized = false;
+
+$(document).ready(function(){
+ window_width = $(window).width();
+
+ // check if there is an image set for the sidebar's background
+ lbd.checkSidebarImage();
+
+ // Init navigation toggle for small screens
+ if(window_width <= 991){
+ lbd.initRightMenu();
+ }
+
+ // Activate the tooltips
+ $('[rel="tooltip"]').tooltip();
+
+ // Activate the switches with icons
+ if($('.switch').length != 0){
+ $('.switch')['bootstrapSwitch']();
+ }
+ // Activate regular switches
+ if($("[data-toggle='switch']").length != 0){
+ $("[data-toggle='switch']").wrap('
').parent().bootstrapSwitch();
+ }
+
+ $('.form-control').on("focus", function(){
+ $(this).parent('.input-group').addClass("input-group-focus");
+ }).on("blur", function(){
+ $(this).parent(".input-group").removeClass("input-group-focus");
+ });
+
+});
+
+// activate collapse right menu when the windows is resized
+$(window).resize(function(){
+ if($(window).width() <= 991){
+ lbd.initRightMenu();
+ }
+});
+
+lbd = {
+ misc:{
+ navbar_menu_visible: 0
+ },
+
+ checkSidebarImage: function(){
+ $sidebar = $('.sidebar');
+ image_src = $sidebar.data('image');
+
+ if(image_src !== undefined){
+ sidebar_container = ''
+ $sidebar.append(sidebar_container);
+ }
+ },
+ initRightMenu: function(){
+ if(!navbar_initialized){
+ $navbar = $('nav').find('.navbar-collapse').first().clone(true);
+
+ $sidebar = $('.sidebar');
+ sidebar_color = $sidebar.data('color');
+
+ $logo = $sidebar.find('.logo').first();
+ logo_content = $logo[0].outerHTML;
+
+ ul_content = '';
+
+ $navbar.attr('data-color',sidebar_color);
+
+ // add the content from the sidebar to the right menu
+ content_buff = $sidebar.find('.nav').html();
+ ul_content = ul_content + content_buff;
+
+ //add the content from the regular header to the right menu
+ $navbar.children('ul').each(function(){
+ content_buff = $(this).html();
+ ul_content = ul_content + content_buff;
+ });
+
+ ul_content = '
';
+
+ navbar_content = logo_content + ul_content;
+
+ $navbar.html(navbar_content);
+
+ $('body').append($navbar);
+
+ background_image = $sidebar.data('image');
+ if(background_image != undefined){
+ $navbar.css('background',"url('" + background_image + "')")
+ .removeAttr('data-nav-image')
+ .addClass('has-image');
+ }
+
+
+ $toggle = $('.navbar-toggle');
+
+ $navbar.find('a').removeClass('btn btn-round btn-default');
+ $navbar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral');
+ $navbar.find('button').addClass('btn-simple btn-block');
+
+ $toggle.click(function (){
+ if(lbd.misc.navbar_menu_visible == 1) {
+ $('html').removeClass('nav-open');
+ lbd.misc.navbar_menu_visible = 0;
+ $('#bodyClick').remove();
+ setTimeout(function(){
+ $toggle.removeClass('toggled');
+ }, 400);
+
+ } else {
+ setTimeout(function(){
+ $toggle.addClass('toggled');
+ }, 430);
+
+ div = '
';
+ $(div).appendTo("body").click(function() {
+ $('html').removeClass('nav-open');
+ lbd.misc.navbar_menu_visible = 0;
+ $('#bodyClick').remove();
+ setTimeout(function(){
+ $toggle.removeClass('toggled');
+ }, 400);
+ });
+
+ $('html').addClass('nav-open');
+ lbd.misc.navbar_menu_visible = 1;
+
+ }
+ });
+ navbar_initialized = true;
+ }
+
+ }
+}
+
+
+// Returns a function, that, as long as it continues to be invoked, will not
+// be triggered. The function will be called after it stops being called for
+// N milliseconds. If `immediate` is passed, trigger the function on the
+// leading edge, instead of the trailing.
+
+function debounce(func, wait, immediate) {
+ var timeout;
+ return function() {
+ var context = this, args = arguments;
+ clearTimeout(timeout);
+ timeout = setTimeout(function() {
+ timeout = null;
+ if (!immediate) func.apply(context, args);
+ }, wait);
+ if (immediate && !timeout) func.apply(context, args);
+ };
+};
diff --git a/public/assets/admin/sass/lbd/_alerts.scss b/public/assets/admin/sass/lbd/_alerts.scss
new file mode 100644
index 00000000..3fbc267d
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_alerts.scss
@@ -0,0 +1,82 @@
+.alert{
+ border: 0;
+ border-radius: 0;
+ color: #FFFFFF;
+ padding: 10px 15px;
+ font-size: 14px;
+
+ .container &{
+ border-radius: 4px;
+
+ }
+ .navbar &{
+ border-radius: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 85px;
+ width: 100%;
+ z-index: 3;
+ }
+ .navbar:not(.navbar-transparent) &{
+ top: 70px;
+ }
+
+ span[data-notify="icon"]{
+ font-size: 30px;
+ display: block;
+ left: 15px;
+ position: absolute;
+ top: 50%;
+ margin-top: -15px;
+ }
+
+ button.close{
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ margin-top: -13px;
+ z-index: 1033;
+ background-color: #FFFFFF;
+ display: block;
+ border-radius: 50%;
+ opacity: .4;
+ line-height: 11px;
+ width: 25px;
+ height: 25px;
+ outline: 0 !important;
+ text-align: center;
+ padding: 3px;
+ font-weight: 300;
+
+ &:hover{
+ opacity: .55;
+ }
+ }
+
+ .close ~ span{
+ display: block;
+ max-width: 89%;
+ }
+
+ &[data-notify="container"]{
+ padding: 10px 10px 10px 20px;
+ border-radius: $border-radius-base;
+ }
+
+ &.alert-with-icon{
+ padding-left: 65px;
+ }
+}
+.alert-info{
+ background-color: $azure-navbar;
+}
+.alert-success {
+ background-color: $green-navbar;
+}
+.alert-warning {
+ background-color: $orange-navbar;
+}
+.alert-danger {
+ background-color: $red-navbar;
+}
diff --git a/public/assets/admin/sass/lbd/_buttons.scss b/public/assets/admin/sass/lbd/_buttons.scss
new file mode 100755
index 00000000..1b3bc698
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_buttons.scss
@@ -0,0 +1,108 @@
+.btn{
+ border-width: $border-thick;
+ background-color: $transparent-bg;
+ font-weight: $font-weight-normal;
+
+ @include opacity(.8);
+ padding: $padding-base-vertical $padding-base-horizontal;
+
+ @include btn-styles($default-color, $default-states-color);
+
+ &:hover,
+ &:focus{
+ @include opacity(1);
+ outline: 0 !important;
+ }
+ &:active,
+ &.active,
+ .open > &.dropdown-toggle {
+ @include box-shadow(none);
+ outline: 0 !important;
+ }
+
+ &.btn-icon{
+ padding: $padding-base-vertical;
+ }
+
+}
+
+// Apply the mixin to the buttons
+//.btn-default { @include btn-styles($default-color, $default-states-color); }
+.btn-primary { @include btn-styles($primary-color, $primary-states-color); }
+.btn-success { @include btn-styles($success-color, $success-states-color); }
+.btn-info { @include btn-styles($info-color, $info-states-color); }
+.btn-warning { @include btn-styles($warning-color, $warning-states-color); }
+.btn-danger { @include btn-styles($danger-color, $danger-states-color); }
+.btn-neutral {
+ @include btn-styles($white-color, $white-color);
+
+ &:active,
+ &.active,
+ .open > &.dropdown-toggle{
+ background-color: $white-color;
+ color: $default-color;
+ }
+
+ &.btn-fill,
+ &.btn-fill:hover,
+ &.btn-fill:focus{
+ color: $default-color;
+ }
+
+ &.btn-simple:active,
+ &.btn-simple.active{
+ background-color: transparent;
+ }
+}
+
+.btn{
+ &:disabled,
+ &[disabled],
+ &.disabled{
+ @include opacity(.5);
+ }
+}
+.btn-round{
+ border-width: $border-thin;
+ border-radius: $btn-round-radius !important;
+ padding: $padding-round-vertical $padding-round-horizontal;
+
+ &.btn-icon{
+ padding: $padding-round-vertical;
+ }
+}
+.btn-simple{
+ border: $none;
+ font-size: $font-size-medium;
+ padding: $padding-base-vertical $padding-base-horizontal;
+
+ &.btn-icon{
+ padding: $padding-base-vertical;
+ }
+}
+.btn-lg{
+ @include btn-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);
+ font-weight: $font-weight-normal;
+}
+.btn-sm{
+ @include btn-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);
+}
+.btn-xs {
+ @include btn-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $border-radius-small);
+}
+.btn-wd {
+ min-width: 140px;
+}
+
+.btn-group.select{
+ width: 100%;
+}
+.btn-group.select .btn{
+ text-align: left;
+}
+.btn-group.select .caret{
+ position: absolute;
+ top: 50%;
+ margin-top: -1px;
+ right: 8px;
+}
diff --git a/public/assets/admin/sass/lbd/_cards.scss b/public/assets/admin/sass/lbd/_cards.scss
new file mode 100644
index 00000000..4b25fcc1
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_cards.scss
@@ -0,0 +1,207 @@
+.card{
+ border-radius: $border-radius-base;
+ box-shadow: 0 1px 2px rgba(0,0,0,.05),0 0 0 1px rgba(63,63,68,.1);
+ background-color: #FFFFFF;
+ margin-bottom: 30px;
+
+ .image{
+ width: 100%;
+ overflow: hidden;
+ height: 260px;
+ border-radius: $border-radius-base $border-radius-base 0 0;
+ position: relative;
+ -webkit-transform-style: preserve-3d;
+ -moz-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+
+ img {
+ width: 100%;
+ }
+ }
+ .filter{
+ position: absolute;
+ z-index: 2;
+ background-color: rgba(0,0,0,.68);
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+
+ @include opacity(0);
+
+ .btn{
+ @include vertical-align();
+ }
+ }
+ &:hover .filter{
+ @include opacity(1);
+ }
+ .btn-hover{
+ @include opacity(0);
+ }
+ &:hover .btn-hover{
+ @include opacity(1);
+ }
+ .content{
+ padding: 15px 15px 10px 15px;
+ }
+ .header{
+ padding: 15px 15px 0;
+ }
+ .category,
+ label{
+ font-size: $font-size-base;
+ font-weight: $font-weight-normal;
+ color: $dark-gray;
+ margin-bottom: 0px;
+
+ i{
+ font-size: $font-paragraph;
+ }
+ }
+
+ label{
+ font-size: $font-size-small;
+ margin-bottom: 5px;
+ text-transform: uppercase;
+ }
+
+ .title{
+ margin: $none;
+ color: $black-color;
+ font-weight: $font-weight-light;
+ }
+ .avatar{
+ width: 30px;
+ height: 30px;
+ overflow: hidden;
+ border-radius: 50%;
+ margin-right: 5px;
+ }
+ .description{
+ font-size: $font-size-base;
+ color: #333;
+ }
+ .footer{
+ padding: 0;
+ background-color: $transparent-bg;
+ line-height: 30px;
+
+ .legend{
+ padding: 5px 0;
+ }
+
+ hr{
+ margin-top: 5px;
+ margin-bottom: 5px;
+ }
+ }
+ .stats{
+ color: #a9a9a9;
+ }
+ .footer div{
+ display: inline-block;
+ }
+
+ .author{
+ font-size: $font-size-small;
+ font-weight: $font-weight-bold;
+ text-transform: uppercase;
+ }
+ .author i{
+ font-size: $font-size-base;
+ }
+ h6{
+ font-size: $font-size-small;
+ margin: 0;
+ }
+ &.card-separator:after{
+ height: 100%;
+ right: -15px;
+ top: 0;
+ width: 1px;
+ background-color: $medium-gray;
+ content: "";
+ position: absolute;
+ }
+
+ .ct-chart{
+ margin: 30px 0 30px;
+ height: 245px;
+ }
+
+ .table{
+ tbody td:first-child,
+ thead th:first-child{
+ padding-left: 15px;
+ }
+
+ tbody td:last-child,
+ thead th:last-child{
+ padding-right: 15px;
+ }
+ }
+
+ .alert{
+ border-radius: $border-radius-base;
+ position: relative;
+
+ &.alert-with-icon{
+ padding-left: 65px;
+ }
+ }
+}
+.card-user{
+ .image{
+ height: 110px;
+ }
+ .image-plain{
+ height: 0;
+ margin-top: 110px;
+ }
+ .author{
+ text-align: center;
+ text-transform: none;
+ margin-top: -70px;
+ }
+ .avatar{
+ width: 124px;
+ height: 124px;
+ border: 5px solid #FFFFFF;
+ position: relative;
+ margin-bottom: 15px;
+
+ &.border-gray{
+ border-color: #EEEEEE;
+ }
+ }
+ .title{
+ line-height: 24px;
+ }
+ .content{
+ min-height: 240px;
+ }
+}
+
+.card-user,
+.card-price{
+ .footer{
+ padding: 5px 15px 10px;
+ }
+ hr{
+ margin: 5px 15px;
+ }
+}
+.card-plain{
+ background-color: transparent;
+ box-shadow: none;
+ border-radius: 0;
+
+ .image{
+ border-radius: 4px;
+ }
+}
+
+
+
diff --git a/public/assets/admin/sass/lbd/_carousel.scss b/public/assets/admin/sass/lbd/_carousel.scss
new file mode 100644
index 00000000..5518df88
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_carousel.scss
@@ -0,0 +1,15 @@
+.carousel-control{
+ width: 8%;
+}
+.carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .fa, .carousel-control .fa {
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+}
+.carousel-control .fa{
+ font-size: 35px;
+}
+.carousel-control.left, .carousel-control.right {
+ background-image: none;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_chartist.scss b/public/assets/admin/sass/lbd/_chartist.scss
new file mode 100644
index 00000000..021f0a33
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_chartist.scss
@@ -0,0 +1,230 @@
+@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) {
+ display: block;
+ position: relative;
+ width: $width;
+
+ &:before {
+ display: block;
+ float: left;
+ content: "";
+ width: 0;
+ height: 0;
+ padding-bottom: $ratio * 100%;
+ }
+
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+
+ > svg {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+}
+
+@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) {
+ -webkit-box-align: $ct-text-align;
+ -webkit-align-items: $ct-text-align;
+ -ms-flex-align: $ct-text-align;
+ align-items: $ct-text-align;
+ -webkit-box-pack: $ct-text-justify;
+ -webkit-justify-content: $ct-text-justify;
+ -ms-flex-pack: $ct-text-justify;
+ justify-content: $ct-text-justify;
+ // Fallback to text-align for non-flex browsers
+ @if($ct-text-justify == 'flex-start') {
+ text-align: left;
+ } @else if ($ct-text-justify == 'flex-end') {
+ text-align: right;
+ } @else {
+ text-align: center;
+ }
+}
+
+@mixin ct-flex() {
+ // Fallback to block
+ display: block;
+ display: -webkit-box;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: -webkit-flex;
+ display: flex;
+}
+
+@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) {
+ fill: $ct-text-color;
+ color: $ct-text-color;
+ font-size: $ct-text-size;
+ line-height: $ct-text-line-height;
+}
+
+@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) {
+ stroke: $ct-grid-color;
+ stroke-width: $ct-grid-width;
+
+ @if ($ct-grid-dasharray) {
+ stroke-dasharray: $ct-grid-dasharray;
+ }
+}
+
+@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) {
+ stroke-width: $ct-point-size;
+ stroke-linecap: $ct-point-shape;
+}
+
+@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) {
+ fill: none;
+ stroke-width: $ct-line-width;
+
+ @if ($ct-line-dasharray) {
+ stroke-dasharray: $ct-line-dasharray;
+ }
+}
+
+@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) {
+ stroke: none;
+ fill-opacity: $ct-area-opacity;
+}
+
+@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) {
+ fill: none;
+ stroke-width: $ct-bar-width;
+}
+
+@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) {
+ fill: none;
+ stroke-width: $ct-donut-width;
+}
+
+@mixin ct-chart-series-color($color) {
+ .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} {
+ stroke: $color;
+ }
+
+ .#{$ct-class-slice-pie}, .#{$ct-class-area} {
+ fill: $color;
+ }
+}
+
+@mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) {
+
+ .#{$ct-class-label} {
+ @include ct-chart-label($ct-text-color, $ct-text-size);
+ }
+
+ .#{$ct-class-chart-line} .#{$ct-class-label},
+ .#{$ct-class-chart-bar} .#{$ct-class-label} {
+ @include ct-flex();
+ }
+
+ .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
+ @include ct-align-justify(flex-end, flex-start);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
+ @include ct-align-justify(flex-start, flex-start);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
+ @include ct-align-justify(flex-end, flex-end);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: end;
+ }
+
+ .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
+ @include ct-align-justify(flex-end, flex-start);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
+ @include ct-align-justify(flex-end, center);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
+ @include ct-align-justify(flex-start, center);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
+ @include ct-align-justify(flex-end, flex-start);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
+ @include ct-align-justify(flex-start, flex-start);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: start;
+ }
+
+ .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
+ //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify);
+ @include ct-align-justify(center, flex-end);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: end;
+ }
+
+ .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
+ @include ct-align-justify(center, flex-start);
+ // Fallback for browsers that don't support foreignObjects
+ text-anchor: end;
+ }
+
+ .#{$ct-class-grid} {
+ @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray);
+ }
+
+ .#{$ct-class-point} {
+ @include ct-chart-point($ct-point-size, $ct-point-shape);
+ }
+
+ .#{$ct-class-line} {
+ @include ct-chart-line($ct-line-width);
+ }
+
+ .#{$ct-class-area} {
+ @include ct-chart-area();
+ }
+
+ .#{$ct-class-bar} {
+ @include ct-chart-bar($ct-bar-width);
+ }
+
+ .#{$ct-class-slice-donut} {
+ @include ct-chart-donut($ct-donut-width);
+ }
+
+ @if $ct-include-colored-series {
+ @for $i from 0 to length($ct-series-names) {
+ .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} {
+ $color: nth($ct-series-colors, $i + 1);
+
+ @include ct-chart-series-color($color);
+ }
+ }
+ }
+}
+
+@if $ct-include-classes {
+ @include ct-chart();
+
+ @if $ct-include-alternative-responsive-containers {
+ @for $i from 0 to length($ct-scales-names) {
+ .#{nth($ct-scales-names, $i + 1)} {
+ @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_checkbox-radio-switch.scss b/public/assets/admin/sass/lbd/_checkbox-radio-switch.scss
new file mode 100644
index 00000000..4783a738
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_checkbox-radio-switch.scss
@@ -0,0 +1,246 @@
+/* Checkbox and radio */
+.checkbox,
+.radio {
+ margin-bottom: 12px;
+ padding-left: 32px;
+ position: relative;
+ -webkit-transition: color 0.25s linear;
+ transition: color 0.25s linear;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.5;
+ color: #333333;
+}
+.checkbox input,
+.radio input {
+ outline: none !important;
+ display: none;
+}
+.checkbox .icons,
+.radio .icons {
+ color: $medium-gray;
+ display: block;
+ height: 20px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 20px;
+ text-align: center;
+ line-height: 21px;
+ font-size: 20px;
+ cursor: pointer;
+ -webkit-transition: color 0.2s linear;
+ transition: color 0.2s linear;
+}
+
+
+.checkbox .icons .first-icon,
+.radio .icons .first-icon,
+.checkbox .icons .second-icon,
+.radio .icons .second-icon {
+ display: inline-table;
+ position: absolute;
+ left: 0;
+ top: 0;
+ background-color: transparent;
+ margin: 0;
+ @include opacity(1);
+}
+.checkbox .icons .second-icon,
+.radio .icons .second-icon {
+ @include opacity(0);
+}
+.checkbox:hover,
+.radio:hover {
+ -webkit-transition: color 0.2s linear;
+ transition: color 0.2s linear;
+}
+.checkbox:hover .first-icon,
+.radio:hover .first-icon {
+ @include opacity(0);
+}
+.checkbox:hover .second-icon,
+.radio:hover .second-icon {
+ @include opacity (1);
+}
+.checkbox.checked,
+.radio.checked {
+ color: $info-color;
+}
+.checkbox.checked .first-icon,
+.radio.checked .first-icon {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.checkbox.checked .second-icon,
+.radio.checked .second-icon {
+ opacity: 1;
+ filter: alpha(opacity=100);
+ color: $info-color;
+ -webkit-transition: color 0.2s linear;
+ transition: color 0.2s linear;
+}
+.checkbox.disabled,
+.radio.disabled {
+ cursor: default;
+ color: $medium-gray !important;
+}
+.checkbox.disabled .icons,
+.radio.disabled .icons {
+ color: $medium-gray !important;
+}
+.checkbox.disabled .first-icon,
+.radio.disabled .first-icon {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.checkbox.disabled .second-icon,
+.radio.disabled .second-icon {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.checkbox.disabled.checked .icons,
+.radio.disabled.checked .icons {
+ color: $medium-gray;
+}
+.checkbox.disabled.checked .first-icon,
+.radio.disabled.checked .first-icon {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.checkbox.disabled.checked .second-icon,
+.radio.disabled.checked .second-icon {
+ opacity: 1;
+ filter: alpha(opacity=100);
+ color: #D9D9D9;
+}
+
+
+
+/* ============================================================
+ * bootstrapSwitch v1.3 by Larentis Mattia @spiritualGuru
+ * http://www.larentis.eu/switch/
+ * ============================================================
+ * Licensed under the Apache License, Version 2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * ============================================================ */
+.has-switch {
+ border-radius: 30px;
+ cursor: pointer;
+ display: inline-block;
+ line-height: 1.72222;
+ overflow: hidden;
+ position: relative;
+ text-align: left;
+ width: 60px;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+
+ /* this code is for fixing safari bug with hidden overflow for border-radius */
+ -webkit-mask: url('../img/mask.png') 0 0 no-repeat;
+ -webkit-mask-size: 60px 24px;
+ mask: url('../img/mask.png') 0 0 no-repeat;
+}
+.has-switch.deactivate {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ cursor: default !important;
+}
+.has-switch.deactivate label,
+.has-switch.deactivate span {
+ cursor: default !important;
+}
+.has-switch > div {
+ position: relative;
+ top: 0;
+ width: 100px;
+}
+.has-switch > div.switch-animate {
+ -webkit-transition: left 0.25s ease-out;
+ transition: left 0.25s ease-out;
+}
+.has-switch > div.switch-off {
+ left: -35px;
+}
+
+.has-switch > div.switch-on {
+ left: 0;
+}
+.has-switch > div label {
+ background-color: #FFFFFF;
+ @include icon-gradient (rgba(255,255,255,1), rgba(241,241,242,1));
+
+ box-shadow: 0 1px 1px #FFFFFF inset, 0 1px 1px rgba(0, 0, 0, 0.25);
+ cursor: pointer;
+}
+.has-switch input[type=checkbox] {
+ display: none;
+}
+.has-switch span {
+/* box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2) inset; */
+ cursor: pointer;
+ float: left;
+ font-size: 11px;
+ font-weight: 400;
+ height: 24px;
+ line-height: 15px;
+ margin: 0;
+ padding-bottom: 6px;
+ padding-top: 5px;
+ position: relative;
+ text-align: center;
+ text-indent: -10px;
+ width: 50%;
+ z-index: 1;
+ -webkit-transition: 0.25s ease-out;
+ transition: 0.25s ease-out;
+}
+.has-switch span.switch-left {
+ background-color: $info-color;
+ border-left: 1px solid rgba(0, 0, 0, 0);
+ border-radius: 30px 0 0 30px;
+ color: #FFFFFF;
+}
+.has-switch .switch-off span.switch-left{
+ background-color: $medium-gray;
+}
+.has-switch span.switch-right {
+ border-radius: 0 30px 30px 0;
+ background-color: $info-color;
+ color: #ffffff;
+ text-indent: 1px;
+}
+.has-switch .switch-off span.switch-right{
+ background-color: $medium-gray;
+}
+
+.has-switch label {
+ border-radius: 12px;
+ float: left;
+ height: 22px;
+ margin: 1px -13px;
+ padding: 0;
+ position: relative;
+ transition: all 0.25s ease-out 0s;
+ vertical-align: middle;
+ width: 22px;
+ z-index: 100;
+ -webkit-transition: 0.25s ease-out;
+ transition: 0.25s ease-out;
+}
+.has-switch .switch-on .fa-check:before{
+ margin-left: 10px;
+}
+.has-switch:hover .switch-on label{
+ margin: 1px -17px;
+ width: 26px;
+}
+.has-switch:hover .switch-off label{
+ margin: 1px -13px;
+ width: 26px;
+}
+
diff --git a/public/assets/admin/sass/lbd/_collapse.scss b/public/assets/admin/sass/lbd/_collapse.scss
new file mode 100644
index 00000000..53265091
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_collapse.scss
@@ -0,0 +1,30 @@
+.panel {
+ border: 0;
+ border-bottom: 1px solid $medium-gray;
+ box-shadow: none;
+}
+.panel-default > .panel-heading {
+ background-color: $white-color;
+ border-color: $white-color;
+}
+.panel-group .panel{
+ border-radius: 0;
+}
+.panel-title{
+ font-size: $font-size-h5;
+}
+.panel-title a:hover, .panel-title a:focus{
+ text-decoration: none;
+}
+.gsdk-collapse{
+ display: block;
+ height: 0px;
+ visibility: visible;
+ overflow: hidden;
+}
+.panel-title a:hover, .panel-title a:focus{
+ color: $default-states-color;
+}
+.panel-default > .panel-heading + .panel-collapse.gsdk-collapse > .panel-body {
+ box-shadow: inset 0 7px 10px -7px rgba(0,0,0,0.14);
+}
diff --git a/public/assets/admin/sass/lbd/_datepicker.scss b/public/assets/admin/sass/lbd/_datepicker.scss
new file mode 100644
index 00000000..a92805ab
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_datepicker.scss
@@ -0,0 +1,221 @@
+/*!
+ * Datepicker for Bootstrap
+ *
+ * Copyright 2012 Stefan Petre
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+
+/*
+ *
+ * SCSS by Creative Tim
+ * http://www.creative-tim.com
+ *
+ */
+
+.datepicker {
+ top: 0;
+ left: 0;
+ padding: 4px;
+ margin-top: 1px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+
+ > div {
+ display: none;
+ }
+
+ table {
+ width: 100%;
+ margin: 0;
+ }
+
+ td,
+ th {
+ text-align: center;
+ width: 20px;
+ height: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ }
+
+ td{
+ border-top: 1px solid $medium-gray;
+ text-align: center;
+ p{
+ font-size: $font-size-small;
+ font-weight: $font-weight-normal;
+ border-radius: 50%;
+ height: 29px;
+ line-height: 29px;
+ margin: 3px 0 8px;
+ width: 29px;
+ }
+ :hover{
+ cursor: pointer;
+ }
+ }
+
+ th{
+ font-weight: $font-weight-light;
+
+ &.switch-datepicker{
+ font-size: $font-paragraph;
+ }
+ }
+
+ .prev p,
+ .next p{
+ font-size: $font-size-h3;
+ }
+
+ p:hover{
+ background: #eeeeee;
+ }
+
+ .day.disabled {
+ color: #eeeeee;
+ }
+
+ td.old,
+ td.new {
+ color: #999999;
+ border-top: 0;
+ }
+
+ td.active p,
+ td.active:hover p{
+ color: #ffffff;
+ background-color: $info-color;
+ }
+
+ td.blue p,
+ td.blue:hover p{
+ background-color: $primary-color;
+ }
+ td.azure p,
+ td.azure:hover p{
+ background-color: $info-color;
+ }
+ td.green p,
+ td.green:hover p{
+ background-color: $success-color;
+ }
+ td.orange p,
+ td.orange:hover p{
+ background-color: $warning-color;
+ }
+ td.red p,
+ td.red:hover p{
+ background-color: $danger-color;
+ }
+
+ span {
+ display: block;
+ width: 55px;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 2px;
+ cursor: pointer;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+
+ &.old {
+ color: #999999;
+ }
+ }
+ span.active,
+ span:focus,
+ span:hover,
+ span:active {
+ background-color: $info-color;
+ }
+ span.active{
+ color: #FFFFFF;
+ }
+ span:hover {
+ background: #eeeeee;
+ }
+ span.blue,
+ span.blue:hover{
+ background-color: $primary-color;
+ }
+ span.azure,
+ span.azure:hover{
+ background-color: $info-color;
+ }
+ span.green,
+ span.green:hover{
+ background-color: $success-color;
+ }
+ span.orange,
+ span.orange:hover{
+ background-color: $warning-color;
+ }
+ span.red,
+ span.red:hover{
+ background-color: $danger-color;
+ }
+ th.switch-datepicker {
+ width: 145px;
+ }
+ th.next,
+ th.prev {
+ font-size: 21px;
+ }
+ thead tr:first-child th {
+ cursor: pointer;
+ }
+ thead tr:first-child th:hover {
+ background: #eeeeee;
+ }
+
+ &.dropdown-menu{
+ border-radius: $border-radius-bottom;
+ @include box-shadow(none);
+ @include transform-origin(none);
+ @include transform-scale(1);
+ @include transition($fast-transition-time, $transition-linear);
+ margin-top: -20px;
+ }
+
+ &.dropdown-menu.open{
+ @include opacity(1);
+ visibility: visible;
+ margin-top: -1px;
+ }
+
+ .table-condensed > tbody > tr > td{
+ padding: 2px;
+ }
+
+ .table-condensed > thead > tr > th{
+ padding: 0;
+ }
+}
+
+.input-append.date .add-on i,
+.input-prepend.date .add-on i {
+ display: block;
+ cursor: pointer;
+ width: 16px;
+ height: 16px;
+}
+
+.datepicker-months thead{
+ padding: 0 0 3px;
+ display: block;
+}
+
+
+
+
+
+
+
+
diff --git a/public/assets/admin/sass/lbd/_dropdown.scss b/public/assets/admin/sass/lbd/_dropdown.scss
new file mode 100644
index 00000000..c1c5f933
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_dropdown.scss
@@ -0,0 +1,120 @@
+.dropdown-menu{
+ visibility: hidden;
+ margin: 0;
+ padding: 0;
+ border-radius: $border-radius-extreme;
+ display: block;
+ z-index: 9000;
+ position: absolute;
+
+ @include opacity(0);
+ @include box-shadow($dropdown-shadow);
+
+ .open &{
+ @include opacity(1);
+ visibility: visible;
+ }
+ .select &{
+ border-radius: $border-radius-bottom;
+ @include box-shadow(none);
+ @include transform-origin($select-coordinates);
+ @include transform-scale(1);
+ @include transition($fast-transition-time, $transition-linear);
+ margin-top: -20px;
+ }
+ .select.open &{
+ margin-top: -1px;
+ }
+
+ > li > a {
+ padding: $padding-base-vertical $padding-base-horizontal;
+ color: #333333;
+
+ img{
+ margin-top: -3px;
+ }
+ }
+ > li > a:focus{
+ outline: 0 !important;
+ }
+
+ .btn-group.select &{
+ min-width: 100%;
+ }
+
+ > li:first-child > a{
+ border-top-left-radius: $border-radius-extreme;
+ border-top-right-radius: $border-radius-extreme;
+ }
+
+ > li:last-child > a{
+ border-bottom-left-radius: $border-radius-extreme;
+ border-bottom-right-radius: $border-radius-extreme;
+ }
+
+ .select & > li:first-child > a{
+ border-radius: 0;
+ border-bottom: 0 none;
+ }
+
+ > li > a:hover,
+ > li > a:focus {
+ background-color: $smoke-bg;
+ color: #333333;
+ opacity: 1;
+ text-decoration: none;
+ }
+
+ &.dropdown-blue > li > a:hover,
+ &.dropdown-blue > li > a:focus{
+ background-color: $light-blue;
+ }
+ &.dropdown-azure > li > a:hover,
+ &.dropdown-azure > li > a:focus{
+ background-color: $light-azure;
+ }
+ &.ct-green > li > a:hover,
+ &.ct-green > li > a:focus{
+ background-color: $light-green;
+ }
+ &.dropdown-orange > li > a:hover,
+ &.dropdown-orange > li > a:focus{
+ background-color: $light-orange;
+ }
+ &.dropdown-red > li > a:hover,
+ &.dropdown-red > li > a:focus{
+ background-color: $light-red;
+ }
+
+}
+
+.dropdown-with-icons{
+ > li > a{
+ padding-left: 0px;
+ line-height: 28px;
+ }
+ i{
+ text-align: center;
+ line-height: 28px;
+ float: left;
+
+ &[class^="pe-"]{
+ font-size: 24px;
+ width: 46px;
+ }
+ &[class^="fa"]{
+ font-size: 14px;
+ width: 38px;
+ }
+ }
+}
+
+//fix bug for the select items in btn-group
+.btn-group.select{
+ overflow: hidden;
+}
+.btn-group.select.open{
+ overflow: visible;
+}
+
+
diff --git a/public/assets/admin/sass/lbd/_flexisel.scss b/public/assets/admin/sass/lbd/_flexisel.scss
new file mode 100644
index 00000000..8ab545d5
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_flexisel.scss
@@ -0,0 +1,53 @@
+.nbs-flexisel-container {
+ position:relative;
+ min-width:100%;
+}
+.nbs-flexisel-ul {
+ position:relative;
+ width:9999px;
+ margin:0px;
+ padding:0px;
+ list-style-type:none;
+ text-align:center;
+}
+
+.nbs-flexisel-inner {
+ overflow:hidden;
+ float:left;
+ width:100%;
+}
+
+.nbs-flexisel-item {
+ float:left;
+ margin:0px;
+ padding:0px;
+ cursor:pointer;
+ position:relative;
+ line-height:0px;
+}
+.nbs-flexisel-item img {
+ width: 100%;
+ cursor: pointer;
+ position: relative;
+ margin-top: 10px;
+ margin-bottom: 10px;
+
+}
+
+/*** Navigation ***/
+
+.nbs-flexisel-nav-left,
+.nbs-flexisel-nav-right {
+ position: absolute;
+ cursor: pointer;
+ z-index: 100;
+ opacity: 0.5;
+}
+
+.nbs-flexisel-nav-left, {
+ left: 0;
+}
+
+.nbs-flexisel-nav-right {
+ right: 0;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_footers.scss b/public/assets/admin/sass/lbd/_footers.scss
new file mode 100644
index 00000000..6e6682de
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_footers.scss
@@ -0,0 +1,77 @@
+.footer{
+ background-color: $white-color;
+ line-height: $line-height;
+
+ nav > ul{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ font-weight: normal;
+
+ a:not(.btn){
+ color: $dark-gray;
+ display: block;
+ margin-bottom: 3px;
+ &:hover,
+ &:focus{
+ color: $default-states-color;
+ }
+ }
+ }
+ .social-area{
+ padding: 15px 0;
+ h5{
+ padding-bottom: 15px;
+ }
+ }
+ .social-area > a:not(.btn){
+ color: $dark-gray;
+ display: inline-block;
+ vertical-align: top;
+ padding: $padding-social-a;
+ font-size: $font-size-large-navbar;
+ font-weight: normal;
+ line-height: $line-height;
+ text-align: center;
+ &:hover,
+ &:focus{
+ color: $default-states-color;
+ }
+ }
+ .copyright{
+ color: $default-states-color;
+ padding: 10px 15px;
+ margin: 10px 3px;
+ line-height: 20px;
+ font-size: $font-size-base;
+ }
+ hr{
+ border-color: $medium-gray;
+ }
+ .title{
+ color: $default-states-color;
+ }
+}
+
+.footer-default{
+ background-color: $smoke-bg;
+}
+
+.footer:not(.footer-big){
+ nav > ul{
+ font-size: $font-size-base;
+ li{
+ margin-left: 20px;
+ float: left;
+ }
+ a{
+ padding: 10px 0px;
+ margin: 10px 10px 10px 0px;
+ }
+ }
+}
+
+
+
+
+
diff --git a/public/assets/admin/sass/lbd/_icons.scss b/public/assets/admin/sass/lbd/_icons.scss
new file mode 100644
index 00000000..4c5d3cf8
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_icons.scss
@@ -0,0 +1,127 @@
+.icon {
+ @include icon-shape ($size-icon, $padding-icon, $border-radius-icon);
+ @include icon-gradient ($icon-default-color-top, $icon-default-color-bottom);
+
+// padding suprascris pentru iconite 7s si fa, test!
+ padding: 8px;
+
+ [class^="icon-"]{
+ height: $height-icon-message;
+ width: $width-icon-message;
+ background-repeat: no-repeat;
+ background-size: 100%;
+ }
+
+ &.icon-sm {
+ @include icon-shape ($size-icon-sm, $padding-icon-sm, $border-radius-icon-sm);
+
+ [class^="icon-"]{
+ height: $height-icon-message-sm;
+ width: $width-icon-message-sm;
+
+ }
+
+ [class*="pe-7s-"]{
+ width: 25px;
+ height: 25px;
+ line-height: 25px;
+ font-size: 25px;
+ text-align: center;
+ color: #FFFFFF;
+ }
+ [class*="fa-"]{
+ width: 25px;
+ height: 25px;
+ line-height: 25px;
+ font-size: 19px;
+ text-align: center;
+ color: #FFFFFF;
+ }
+ }
+
+ [class*="pe-7s-"]{
+ width: 50px;
+ height: 50px;
+ line-height: 50px;
+ font-size: 46px;
+ text-align: center;
+ color: #FFFFFF;
+ }
+ [class*="fa-"]{
+ width: 50px;
+ height: 50px;
+ line-height: 50px;
+ font-size: 36px;
+ text-align: center;
+ color: #FFFFFF;
+ }
+
+ }
+
+.icon-blue {
+ @include icon-gradient ($icon-blue-color-top, $icon-blue-color-bottom);
+}
+
+.icon-azure {
+ @include icon-gradient ($icon-azure-color-top, $icon-azure-color-bottom);
+}
+
+.icon-green {
+ @include icon-gradient ($icon-green-color-top, $icon-green-color-bottom);
+}
+
+.icon-orange {
+ @include icon-gradient ($icon-orange-color-top, $icon-orange-color-bottom);
+}
+
+.icon-red {
+ @include icon-gradient ($icon-red-color-top, $icon-red-color-bottom);
+}
+
+.icon-purple {
+ @include icon-gradient ($icon-purple-color-top, $icon-purple-color-bottom);
+}
+
+.icon-pink {
+ @include icon-gradient ($icon-pink-color-top, $icon-pink-color-bottom);
+}
+
+.icon-black {
+ @include icon-gradient ($icon-black-color-top, $icon-black-color-bottom);
+}
+
+.info{
+ margin-top: 20px;
+ margin-bottom: 30px;
+ text-align: center;
+ .icon{
+ margin-top: 0;
+ }
+ h4,
+ .h4{
+ margin-top: 20px;
+ margin-bottom: 5px;
+ }
+}
+
+.info-horizontal{
+ text-align: left;
+ margin-top: 0;
+ .icon{
+ float: left;
+ margin-top: 20px;
+ margin-right: 20px;
+ }
+ .description{
+ overflow: hidden;
+ }
+}
+
+
+
+
+
+
+
+
+
diff --git a/public/assets/admin/sass/lbd/_inputs.scss b/public/assets/admin/sass/lbd/_inputs.scss
new file mode 100755
index 00000000..2b9820ab
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_inputs.scss
@@ -0,0 +1,141 @@
+.form-control::-moz-placeholder{
+ @include placeholder($medium-gray,1);
+}
+.form-control:-moz-placeholder{
+ @include placeholder($medium-gray,1);
+}
+.form-control::-webkit-input-placeholder{
+ @include placeholder($medium-gray,1);
+}
+.form-control:-ms-input-placeholder{
+ @include placeholder($medium-gray,1);
+}
+
+.form-control {
+ background-color: $white-bg;
+ border: 1px solid $light-gray;
+ border-radius: $border-radius-base;
+ color: #565656;
+ @include input-size($padding-base-vertical, $padding-base-horizontal - 4, $height-base);
+ @include box-shadow(none);
+
+ &:focus{
+ background-color: $white-bg;
+ border: 1px solid $medium-dark-gray;
+ @include box-shadow(none);
+ outline: 0 !important;
+ color: #333333;
+ }
+
+ .has-success &,
+ .has-error &,
+ .has-success &:focus,
+ .has-error &:focus{
+ border-color: $light-gray;
+ @include box-shadow(none);
+ }
+
+ .has-success &{
+ color: $success-color;
+ }
+ .has-success &:focus{
+ border-color: $success-color;
+ }
+ .has-error &{
+ color: $danger-color;
+ }
+ .has-error &:focus{
+ border-color: $danger-color;
+ }
+
+ & + .form-control-feedback{
+ border-radius: $border-radius-large;
+ font-size: $font-size-base;
+ margin-top: -7px;
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ vertical-align: middle;
+ }
+
+ .open &{
+ border-radius: $border-radius-base $border-radius-base 0 0;
+ border-bottom-color: transparent;
+ }
+}
+
+.input-lg{
+ height: 55px;
+ padding: $padding-large-vertical $padding-large-horizontal;
+}
+
+.has-error{
+ .form-control-feedback{
+ color: $danger-color;
+ }
+}
+.has-success{
+ .form-control-feedback{
+ color: $success-color
+ }
+}
+
+
+.input-group-addon {
+ background-color: $white-color;
+ border: 1px solid $light-gray;
+ border-radius: $border-radius-base;
+
+ .has-success &,
+ .has-error &{
+ background-color: $white-color;
+ border: 1px solid $light-gray;
+ }
+ .has-error .form-control:focus + &{
+ border-color: $danger-color;
+ color: $danger-color;
+ }
+ .has-success .form-control:focus + &{
+ border-color: $success-color;
+ color: $success-color;
+ }
+ .form-control:focus + &,
+ .form-control:focus ~ &{
+ background-color: $white-color;
+ border-color: $dark-gray;
+ }
+}
+
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-right: 0 none;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+ border-left: 0 none;
+}
+.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
+ background-color: $smoke-bg;
+ color: $default-color;
+ cursor: not-allowed;
+}
+
+.input-group-btn .btn{
+ border-width: $border-thin;
+ padding: $padding-round-vertical $padding-base-horizontal;
+}
+.input-group-btn .btn-default:not(.btn-fill){
+ border-color: $medium-gray;
+}
+
+.input-group-btn:last-child > .btn{
+ margin-left: 0;
+}
+
+.input-group-focus .input-group-addon{
+ border-color: $dark-gray;
+}
diff --git a/public/assets/admin/sass/lbd/_labels.scss b/public/assets/admin/sass/lbd/_labels.scss
new file mode 100644
index 00000000..63f38eae
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_labels.scss
@@ -0,0 +1,54 @@
+/* Labels & Progress-bar */
+.label{
+ padding: 0.2em 0.6em 0.2em;
+ border: 1px solid #999999;
+ border-radius: 3px;
+ color: #999999;
+ background-color: #FFFFFF;
+ font-weight: 500;
+ font-size: 11px;
+ text-transform: uppercase;
+ display: inline-block;
+ margin-bottom: 3px;
+}
+.label-primary{
+ border-color: #3472F7;
+ color: #3472F7;
+}
+.label-info{
+ border-color: #2CA8FF;
+ color: #2CA8FF;
+}
+.label-success{
+ border-color: #05AE0E;
+ color: #05AE0E;
+}
+.label-warning{
+ border-color: #FF9500;
+ color: #FF9500;
+}
+.label-danger{
+ border-color: #FF3B30;
+ color: #FF3B30;
+}
+.label.label-fill{
+ color: #FFFFFF;
+}
+.label-primary.label-fill, .progress-bar, .progress-bar-primary{
+ background-color: #3472F7;
+}
+.label-info.label-fill, .progress-bar-info{
+ background-color: #2CA8FF;
+}
+.label-success.label-fill, .progress-bar-success{
+ background-color: #05AE0E;
+}
+.label-warning.label-fill, .progress-bar-warning{
+ background-color: #FF9500;
+}
+.label-danger.label-fill, .progress-bar-danger{
+ background-color: #FF3B30;
+}
+.label-default.label-fill{
+ background-color: #999999;
+}
diff --git a/public/assets/admin/sass/lbd/_media.scss b/public/assets/admin/sass/lbd/_media.scss
new file mode 100644
index 00000000..f8ded151
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_media.scss
@@ -0,0 +1,80 @@
+.media{
+ border-bottom: 1px solid $medium-gray;
+ padding-bottom: 30px;
+ margin-top: 30px;
+
+ .avatar{
+ margin: 0 auto;
+ width: 64px;
+ height: 64px;
+ overflow: hidden;
+ border-radius: 50%;
+ margin-right: 15px;
+ border: 3px solid transparent;
+
+ img{
+ width: 100%;
+ }
+ }
+ .media-heading{
+ margin-bottom: 10px;
+ margin-top: 5px;
+ display: inline-block;
+ }
+ .btn-simple{
+ padding: 0px 5px;
+ }
+ .media{
+ margin-top: 30px;
+ }
+ .media:last-child{
+ border: 0;
+ }
+}
+
+.media-post{
+ color: #555;
+ border: 0;
+ .media-heading{
+ display: block;
+ text-align: center;
+ }
+ .author{
+ width: 15%;
+ }
+ .media-body{
+ width: 85%;
+ float: left;
+ display: inline-block;
+ }
+ textarea{
+ margin: $margin-bottom;
+ font-size: $font-paragraph;
+ }
+ .avatar{
+ border-color: white;
+ }
+}
+
+
+.media-area{
+ .media:last-child{
+ border: 0;
+ }
+ .pagination-area{
+ padding: 10px 0;
+ text-align: center;
+ }
+}
+.media-area-small{
+ p{
+ font-size: 14px;
+ }
+ .btn-simple{
+ font-size: 14px;
+ }
+ .avatar{
+ width: 58px;
+ height: 58px;
+ }
+}
diff --git a/public/assets/admin/sass/lbd/_misc.scss b/public/assets/admin/sass/lbd/_misc.scss
new file mode 100755
index 00000000..47e229dc
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_misc.scss
@@ -0,0 +1,62 @@
+/* General overwrite */
+body,
+.wrapper{
+ min-height: 100vh;
+ position: relative;
+}
+a{
+ color: $info-color;
+
+ &:hover, &:focus{
+ color: $info-states-color;
+ text-decoration: none;
+ }
+}
+
+a:focus, a:active,
+button::-moz-focus-inner,
+input::-moz-focus-inner,
+input[type="reset"]::-moz-focus-inner,
+input[type="button"]::-moz-focus-inner,
+input[type="submit"]::-moz-focus-inner,
+select::-moz-focus-inner,
+input[type="file"] > input[type="button"]::-moz-focus-inner{
+ outline:0;
+}
+.ui-slider-handle:focus,
+.navbar-toggle,
+input:focus {
+ outline : 0 !important;
+}
+
+/* Animations */
+.form-control,
+.input-group-addon,
+.tagsinput,
+.navbar,
+.navbar .alert{
+ @include transition($general-transition-time, $transition-linear);
+}
+
+.sidebar .nav a,
+.table > tbody > tr .td-actions .btn{
+ @include transition($fast-transition-time, $transition-ease-in);
+}
+
+.btn{
+ @include transition($ultra-fast-transition-time, $transition-ease-in);
+}
+.fa{
+ width: 18px;
+ text-align: center;
+}
+.margin-top{
+ margin-top: 50px;
+}
+
+.wrapper{
+ position: relative;
+ top: 0;
+ height: 100vh;
+}
+
diff --git a/public/assets/admin/sass/lbd/_mixins.scss b/public/assets/admin/sass/lbd/_mixins.scss
new file mode 100644
index 00000000..33a9fff2
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_mixins.scss
@@ -0,0 +1,22 @@
+//Utilities
+
+@import "mixins/transparency";
+@import "mixins/vendor-prefixes";
+
+
+//Components
+
+@import "mixins/buttons";
+@import "mixins/inputs";
+@import "mixins/labels";
+@import "mixins/tabs";
+
+@import "mixins/navbars";
+@import "mixins/icons";
+@import "mixins/social-buttons";
+
+@import "mixins/morphing-buttons";
+
+@import "mixins/cards";
+
+@import "mixins/chartist";
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_modal.scss b/public/assets/admin/sass/lbd/_modal.scss
new file mode 100644
index 00000000..3e367c83
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_modal.scss
@@ -0,0 +1,79 @@
+.modal-header {
+ border: 0 none;
+}
+.modal-content {
+ border: 0 none;
+ border-radius: 10px;
+ box-shadow: 0 0 15px rgba(0, 0, 0, 0.15), 0 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+.modal-dialog {
+ padding-top: 60px;
+}
+.modal-footer {
+ border-top: 0 none;
+ padding: 10px 10px;
+}
+.modal-footer .modal-footer .btn-default.btn-simple{
+ font-weight: 400;
+}
+
+.modal.fade .modal-dialog {
+ transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+}
+.modal.in .modal-dialog {
+ transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+}
+.modal-small{
+ .modal-dialog{
+ max-width: 350px;
+ }
+}
+.modal-small{
+ .divider{
+ margin: 0 auto;
+ display: block;
+ width: 14px;
+ position: relative;
+ margin-top: 40px;
+ margin-bottom: 30px;
+ font-size: $font-paragraph;
+ }
+ .divider:after{
+ position: absolute;
+ content: "";
+ right: -140px;
+ top: 12px;
+ height: 1px;
+ width: 115px;
+ background-color: $light-gray;
+ }
+ .divider:before{
+ position: absolute;
+ content: "";
+ left: -140px;
+ top: 12px;
+ height: 1px;
+ width: 115px;
+ background-color: $light-gray;
+ }
+ .modal-footer{
+ text-align: center;
+ }
+}
+.social-area{
+ text-align: center;
+
+ .btn-social{
+ margin: 0 10px;
+ }
+}
+.modal-backdrop.in {
+ opacity: 0.25;
+}
+
+
+
diff --git a/public/assets/admin/sass/lbd/_morphing-buttons.scss b/public/assets/admin/sass/lbd/_morphing-buttons.scss
new file mode 100644
index 00000000..ab06a114
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_morphing-buttons.scss
@@ -0,0 +1,161 @@
+.btn-morphing {
+ position: relative;
+ display: inline-block;
+ text-align: center;
+ width: 100%;
+
+ .btn-toggle {
+ display: block;
+ margin: 0 auto;
+ width: 100%;
+ -webkit-transition: all 0.3s;
+ transition: all 0.3s;
+ }
+
+ .fa{
+ width: 40px;
+ height: 40px;
+ @include opacity(0);
+ }
+ .btn-lg + .fa{
+ width: 55px;
+ height: 55px;
+ }
+ .fa.visible{
+ @include opacity(1);
+ }
+}
+
+.btn-morphing button:focus {
+ outline: none;
+}
+
+.btn-morphing span, .btn-morphing svg{
+ position: absolute;
+ top: 0;
+ left: 50%;
+ margin-left: -20px;
+ pointer-events: none;
+ display: none;
+}
+
+.morphing-lg span, .morphing-lg svg{
+ margin-left: -27.5px;
+}
+.btn-morphing span {
+ color: $dark-gray;
+ font-size: $font-size-h5;
+ line-height: $height-base;
+}
+.circle {
+ opacity: 1;
+ fill: none;
+ stroke: #fff;
+ stroke-linecap: round;
+ stroke-width: 4;
+ stroke-dasharray: 121;
+ stroke-dashoffset: 121;
+
+}
+
+.rotation-animate{
+ @include circle-animation();
+}
+.circle-animation {
+ stroke-dashoffset: 14;
+}
+
+.morphing-lg{
+ span{
+ font-size: $font-size-h4;
+ line-height: 55px;
+ }
+ .circle{
+ stroke-dasharray: 158;
+ stroke-dashoffset: 158;
+ }
+ .circle-animation {
+ stroke-dashoffset: 14;
+ }
+}
+.btn-morphing {
+ .circle {
+ stroke-width: 2px;
+ }
+ .circle-gray{
+ stroke: $default-color;
+ }
+ .circle-blue{
+ stroke: $primary-color;
+ }
+ .circle-azure{
+ stroke: $info-color;
+ }
+ .circle-green{
+ stroke: $success-color;
+ }
+ .circle-orange{
+ stroke: $warning-color;
+ }
+ .circle-red{
+ stroke: $danger-color;
+ }
+}
+.morphing-info{
+ .circle{
+ stroke: $info-color;
+ }
+ .fa{
+ color: $info-color;
+ }
+}
+.morphing-success{
+ .circle{
+ stroke: $success-color;
+ }
+ .fa{
+ color: $success-color;
+ }
+}
+.morphing-warning{
+ .circle{
+ stroke: $warning-color;
+ }
+ .fa{
+ color: $warning-color;
+ }
+}
+.morphing-error{
+ .circle{
+ stroke: $danger-color;
+ }
+ .fa{
+ color: $danger-color;
+ }
+}
+.btn-toggle{
+ height: 40px;
+
+ &.btn-lg{
+ height: 55px;
+
+ &.resize{
+ width: 53px;
+ height: 53px;
+
+ .btn-round{
+ width: 52px;
+ height: 52px;
+ }
+ }
+ }
+
+ &.resize{
+ width: 38px;
+ height: 38px;
+ margin-top: 1px;
+ padding: 0;
+ border-radius: 40px;
+ background-color: transparent !important;
+ }
+}
diff --git a/public/assets/admin/sass/lbd/_navbars.scss b/public/assets/admin/sass/lbd/_navbars.scss
new file mode 100644
index 00000000..40244454
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_navbars.scss
@@ -0,0 +1,293 @@
+.nav {
+ > li{
+ > a:hover,
+ > a:focus{
+ background-color: transparent;
+ }
+ }
+}
+.navbar{
+ border: $none;
+ font-size: $font-size-navbar;
+ border-radius: 0;
+
+ .navbar-brand {
+ font-weight: $font-weight-normal;
+ margin: $navbar-margin-brand;
+ padding: $navbar-padding-brand;
+ font-size: $font-size-large-navbar;
+ }
+ .navbar-nav{
+ > li > a {
+ padding: $navbar-padding-a;
+ margin: $navbar-margin-a;
+ position: relative;
+ }
+ > li > a.btn{
+ margin: $navbar-margin-a-btn;
+ padding: $padding-base-vertical $padding-base-horizontal;
+ }
+ > li > a.btn-round{
+ margin: $navbar-margin-a-btn-round;
+ }
+ > li > a [class^="fa"]{
+ font-size: $font-size-large + 1;
+ position: relative;
+ line-height: 16px;
+ top: 1px;
+ }
+
+ .notification{
+ position: absolute;
+ background-color: #FB404B;
+ text-align: center;
+ border-radius: 10px;
+ min-width: 18px;
+ padding: 0 5px;
+ height: 18px;
+ font-size: 12px;
+ color: #FFFFFF;
+ font-weight: bold;
+ line-height: 18px;
+ top: 0px;
+ left: 7px;
+ }
+ }
+ .btn{
+ margin: $navbar-margin-btn;
+ font-size: $font-size-base;
+ }
+ .btn-simple{
+ font-size: $font-size-medium;
+ }
+ .caret{
+ // @include center-item();
+ }
+
+ &.fixed{
+ width: calc(100% - $sidebar-width);
+ right: 0;
+ left: auto;
+ border-radius: 0;
+ }
+
+}
+
+.navbar-nav > li > .dropdown-menu{
+ border-radius: $border-radius-extreme;
+ margin-top: -5px;
+}
+
+.navbar-transparent, [class*="navbar-ct"]{
+ .navbar-brand{
+ color: $white-color;
+ @include opacity(.9);
+
+ &:focus,
+ &:hover{
+ background-color: transparent;
+ @include opacity(1);
+ }
+ }
+
+ .navbar-nav{
+ > li > a:not(.btn){
+ color: $white-color;
+ border-color: $white-color;
+ @include opacity(0.8);
+ }
+ > .active > a:not(.btn),
+ > .active > a:hover:not(.btn),
+ > .active > a:focus:not(.btn),
+ > li > a:hover:not(.btn),
+ > li > a:focus:not(.btn){
+ background-color: transparent;
+ border-radius: 3px;
+ color: $white-color;
+ @include opacity(1);
+ }
+ .nav > li > a.btn:hover{
+ background-color: transparent;
+ }
+
+ > .dropdown > a .caret,
+ > .dropdown > a:hover .caret,
+ > .dropdown > a:focus .caret{
+ border-bottom-color: $white-color;
+ border-top-color: $white-color;
+ }
+
+ > .open > a,
+ > .open > a:hover,
+ > .open > a:focus {
+ background-color: transparent;
+ color: $white-color;
+ @include opacity(1);
+ }
+ }
+
+ .btn-default{
+ color: $white-color;
+ border-color: $white-color;
+ }
+ .btn-default.btn-fill{
+ color: $dark-gray;
+ background-color: $white-color;
+ @include opacity(.9);
+ }
+ .btn-default.btn-fill:hover,
+ .btn-default.btn-fill:focus,
+ .btn-default.btn-fill:active,
+ .btn-default.btn-fill.active,
+ .open .dropdown-toggle.btn-fill.btn-default{
+ border-color: $white-color;
+ @include opacity(1);
+ }
+
+}
+.navbar-transparent{
+ .dropdown-menu .divider{
+ background-color: rgba($white-color,.2);
+ }
+}
+
+.nav-open .nav .caret{
+ border-bottom-color: $white-color;
+ border-top-color: $white-color;
+}
+
+.navbar-default {
+ background-color: $white-navbar;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+
+ .navbar-nav{
+ > li > a:not(.btn){
+ color: $dark-gray;
+ }
+
+ > .active > a,
+ > .active > a:not(.btn):hover,
+ > .active > a:not(.btn):focus,
+ > li > a:not(.btn):hover,
+ > li > a:not(.btn):focus {
+ background-color: transparent;
+ border-radius: 3px;
+ color: $info-color;
+ @include opacity(1);
+ }
+
+ > .dropdown > a:hover .caret,
+ > .dropdown > a:focus .caret {
+ border-bottom-color: $info-color;
+ border-top-color: $info-color;
+
+ }
+
+ > .open > a,
+ > .open > a:hover,
+ > .open > a:focus{
+ background-color: transparent;
+ color: $info-color;
+ }
+
+ .navbar-toggle:hover,.navbar-toggle:focus {
+ background-color: transparent;
+ }
+
+ }
+
+ &:not(.navbar-transparent) .btn-default:hover{
+ color: $info-color;
+ border-color: $info-color;
+ }
+ &:not(.navbar-transparent) .btn-neutral,
+ &:not(.navbar-transparent) .btn-neutral:hover,
+ &:not(.navbar-transparent) .btn-neutral:active{
+ color: $dark-gray;
+ }
+}
+
+/* Navbar with icons */
+
+.navbar-icons{
+ &.navbar .navbar-brand{
+ margin-top: 12px;
+ margin-bottom: 12px;
+ }
+ .navbar-nav{
+ > li > a{
+ text-align: center;
+ padding: $navbar-padding-a-icons;
+ margin: $navbar-margin-a-icons;
+ }
+
+ [class^="pe"] {
+ font-size: 30px;
+ position: relative;
+ }
+ p {
+ margin: 3px 0 0;
+ }
+ }
+}
+
+.navbar-form{
+ @include box-shadow(none);
+ .form-control{
+ @include light-form();
+ height: 22px;
+ font-size: $font-size-navbar;
+ line-height: $line-height-general;
+ color: $light-gray;
+ }
+ .navbar-transparent & .form-control,
+ [class*="navbar-ct"] & .form-control{
+ color: $white-color;
+ border: $none;
+ border-bottom: 1px solid rgba($white-color,.6);
+ }
+
+}
+
+.navbar-ct-blue{
+ @include navbar-color($blue-navbar);
+}
+.navbar-ct-azure{
+ @include navbar-color($azure-navbar);
+}
+.navbar-ct-green{
+ @include navbar-color($green-navbar);
+}
+.navbar-ct-orange{
+ @include navbar-color($orange-navbar);
+}
+.navbar-ct-red{
+ @include navbar-color($red-navbar);
+}
+
+.navbar-transparent{
+ padding-top: 15px;
+ background-color: transparent;
+ border-bottom: 1px solid transparent;
+}
+
+.navbar-toggle{
+ margin-top: 19px;
+ margin-bottom: 19px;
+ border: $none;
+
+ .icon-bar {
+ background-color: $white-color;
+ }
+ .navbar-collapse,
+ .navbar-form {
+ border-color: transparent;
+ }
+
+ &.navbar-default .navbar-toggle:hover,
+ &.navbar-default .navbar-toggle:focus {
+ background-color: transparent;
+ }
+}
+
+
diff --git a/public/assets/admin/sass/lbd/_progress-bars.scss b/public/assets/admin/sass/lbd/_progress-bars.scss
new file mode 100644
index 00000000..aefd66bb
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_progress-bars.scss
@@ -0,0 +1,9 @@
+.progress {
+ background-color: #E5E5E5;
+ border-radius: 3px;
+ box-shadow: none;
+ height: 4px;
+}
+.progress-thin{
+ height: 2px;
+}
diff --git a/public/assets/admin/sass/lbd/_responsive.scss b/public/assets/admin/sass/lbd/_responsive.scss
new file mode 100644
index 00000000..74c3da8a
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_responsive.scss
@@ -0,0 +1,413 @@
+@media (min-width: 992px){
+ .navbar-form {
+ margin-top: 21px;
+ margin-bottom: 21px;
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+ .navbar-nav > li > .dropdown-menu, .dropdown .dropdown-menu{
+ @include transform-scale(0);
+ @include transition($slow-transition-time, $transition-bezier);
+ }
+ .navbar-nav > li.open > .dropdown-menu, .dropdown.open .dropdown-menu{
+ @include transform-scale(1);
+ @include transform-origin($dropdown-coordinates);
+
+ }
+
+ .navbar-nav > li > .dropdown-menu:before{
+ border-bottom: 11px solid rgba(0, 0, 0, 0.2);
+ border-left: 11px solid rgba(0, 0, 0, 0);
+ border-right: 11px solid rgba(0, 0, 0, 0);
+ content: "";
+ display: inline-block;
+ position: absolute;
+ left: 12px;
+ top: -11px;
+ }
+ .navbar-nav > li > .dropdown-menu:after {
+ border-bottom: 11px solid #FFFFFF;
+ border-left: 11px solid rgba(0, 0, 0, 0);
+ border-right: 11px solid rgba(0, 0, 0, 0);
+ content: "";
+ display: inline-block;
+ position: absolute;
+ left: 12px;
+ top: -10px;
+ }
+
+ .navbar-nav.navbar-right > li > .dropdown-menu:before{
+ left: auto;
+ right: 12px;
+ }
+
+ .navbar-nav.navbar-right > li > .dropdown-menu:after{
+ left: auto;
+ right: 12px;
+ }
+
+ .footer:not(.footer-big){
+ nav > ul{
+ li:first-child{
+ margin-left: 0;
+ }
+ }
+ }
+
+ body > .navbar-collapse.collapse{
+ display: none !important;
+ }
+
+ .card{
+ form{
+ [class*="col-"]{
+ padding: 6px;
+ }
+ [class*="col-"]:first-child{
+ padding-left: 15px;
+ }
+ [class*="col-"]:last-child{
+ padding-right: 15px;
+ }
+ }
+ }
+}
+
+/* Changes for small display */
+
+@media (max-width: 991px){
+ .sidebar{
+ display: none;
+ }
+
+ .main-panel{
+ width: 100%;
+ }
+ .navbar-transparent{
+ padding-top: 15px;
+ background-color: rgba(0, 0, 0, 0.45);
+ }
+ body {
+ position: relative;
+ }
+ .wrapper{
+ @include transform-translate-x(0px);
+ @include transition (0.33s, cubic-bezier(0.685, 0.0473, 0.346, 1));
+ left: 0;
+ background-color: white;
+ }
+ .navbar .container{
+ left: 0;
+ width: 100%;
+ @include transition (0.33s, cubic-bezier(0.685, 0.0473, 0.346, 1));
+ position: relative;
+ }
+ .navbar .navbar-collapse.collapse,
+ .navbar .navbar-collapse.collapse.in,
+ .navbar .navbar-collapse.collapsing{
+ display: none !important;
+ }
+
+ .navbar-nav > li{
+ float: none;
+ position: relative;
+ display: block;
+ }
+
+ body > .navbar-collapse {
+ position: fixed;
+ display: block;
+ top: 0;
+ height: 100%;
+ width: 250px;
+ right: 0;
+ z-index: 1032;
+ visibility: visible;
+ background-color: #999;
+ overflow-y: visible;
+ border-top: none;
+ text-align: left;
+ padding: 0;
+
+ @include transform-translate-x(250px);
+ @include transition (0.33s, cubic-bezier(0.685, 0.0473, 0.346, 1));
+ > ul {
+ position: relative;
+ z-index: 4;
+ overflow-y:scroll;
+ height: calc(100vh - 61px);
+ width: 100%;
+ }
+ .nav > li{
+ & > a{
+ padding: 30px 25px;
+ }
+ }
+ &::before{
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ position: absolute;
+ background-color: #282828;
+ display: block;
+ content: "";
+ z-index: 1;
+ }
+
+ .logo{
+ position: relative;
+ z-index: 4;
+ }
+ }
+ .nav-open .navbar-collapse{
+ @include transform-translate-x(0px);
+ }
+ .nav-open .navbar .container{
+ left: -250px;
+ }
+ .nav-open .wrapper{
+ left: 0;
+ @include transform-translate-x(-250px);
+ }
+ .navbar-toggle .icon-bar {
+ display: block;
+ position: relative;
+ background: #fff;
+ width: 24px;
+ height: 2px;
+ border-radius: 1px;
+ margin: 0 auto;
+ }
+
+ .navbar-header .navbar-toggle {
+ margin: 10px 15px 10px 0;
+ width: 40px;
+ height: 40px;
+ }
+ .bar1,
+ .bar2,
+ .bar3 {
+ outline: 1px solid transparent;
+ }
+ .bar1 {
+ top: 0px;
+ @include bar-animation($topbar-back);
+ }
+ .bar2 {
+ opacity: 1;
+ }
+ .bar3 {
+ bottom: 0px;
+ @include bar-animation($bottombar-back);
+ }
+ .toggled .bar1 {
+ top: 6px;
+ @include bar-animation($topbar-x);
+ }
+ .toggled .bar2 {
+ opacity: 0;
+ }
+ .toggled .bar3 {
+ bottom: 6px;
+ @include bar-animation($bottombar-x);
+ }
+
+ @include topbar-x-rotation();
+ @include topbar-back-rotation();
+ @include bottombar-x-rotation();
+ @include bottombar-back-rotation();
+
+ @-webkit-keyframes fadeIn {
+ 0% {opacity: 0;}
+ 100% {opacity: 1;}
+ }
+ @-moz-keyframes fadeIn {
+ 0% {opacity: 0;}
+ 100% {opacity: 1;}
+ }
+ @keyframes fadeIn {
+ 0% {opacity: 0;}
+ 100% {opacity: 1;}
+ }
+
+ .dropdown-menu .divider{
+ background-color: rgba(229, 229, 229, 0.15);
+ }
+
+ .navbar-nav {
+ margin: 1px 0;
+
+ .open .dropdown-menu > li {
+ & > a{
+ padding: 15px 15px 5px 50px;
+ }
+
+ &:first-child > a{
+ padding: 5px 15px 5px 50px;
+ }
+
+ &:last-child > a {
+ padding: 15px 15px 25px 50px;
+ }
+ }
+ }
+
+ [class*="navbar-"] .navbar-nav {
+ & > li > a,
+ > li > a:hover,
+ > li > a:focus,
+ .active > a,
+ .active > a:hover,
+ .active > a:focus,
+ .open .dropdown-menu > li > a,
+ .open .dropdown-menu > li > a:hover,
+ .open .dropdown-menu > li > a:focus,
+ .navbar-nav .open .dropdown-menu > li > a:active {
+ color: white;
+ }
+
+ & > li > a,
+ > li > a:hover,
+ > li > a:focus,
+ .open .dropdown-menu > li > a,
+ .open .dropdown-menu > li > a:hover,
+ .open .dropdown-menu > li > a:focus{
+ opacity: .7;
+ background: transparent;
+ }
+
+ &.navbar-nav .open .dropdown-menu > li > a:active {
+ opacity: 1;
+ }
+
+ & .dropdown > a{
+ &:hover .caret {
+ border-bottom-color: #777;
+ border-top-color: #777;
+ }
+ &:active .caret {
+ border-bottom-color: white;
+ border-top-color: white;
+ }
+ }
+
+ }
+
+ .dropdown-menu {
+ display: none;
+ }
+ .navbar-fixed-top {
+ -webkit-backface-visibility: hidden;
+ }
+ #bodyClick {
+ height: 100%;
+ width: 100%;
+ position: fixed;
+ opacity: 0;
+ top: 0;
+ left: auto;
+ right: 250px;
+ content: "";
+ z-index: 9999;
+ overflow-x: hidden;
+ }
+
+ .social-line .btn{
+ margin: $margin-bottom;
+ }
+ .subscribe-line .form-control{
+ margin: $margin-bottom;
+ }
+ .social-line.pull-right{
+ float: none;
+ }
+ .footer nav.pull-left{
+ float: none !important;
+ }
+ .footer:not(.footer-big) nav > ul li{
+ float: none;
+ }
+ .social-area.pull-right{
+ float: none !important;
+ }
+ .form-control + .form-control-feedback{
+ margin-top: -8px;
+ }
+ .navbar-toggle:hover,.navbar-toggle:focus {
+ background-color: transparent !important;
+ }
+ .btn.dropdown-toggle{
+ margin-bottom: 0;
+ }
+ .media-post .author{
+ width: 20%;
+ float: none !important;
+ display: block;
+ margin: 0 auto 10px;
+ }
+ .media-post .media-body{
+ width: 100%;
+ }
+
+ .navbar-collapse.collapse{
+ height: 100% !important;
+ }
+ .navbar-collapse.collapse.in {
+ display: block;
+ }
+ .navbar-header .collapse, .navbar-toggle {
+ display:block !important;
+ }
+ .navbar-header {
+ float:none;
+ }
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-collapse{
+ .nav p{
+ font-size: $font-size-base;
+ margin: 0;
+ }
+
+ [class^="pe-7s-"]{
+ float: left;
+ font-size: 20px;
+ margin-right: 10px;
+ }
+ }
+}
+
+//overwrite table responsive for 768px screens
+
+@media (min-width: 992px){
+ .table-full-width{
+ margin-left: -15px;
+ margin-right: -15px;
+ }
+ .table-responsive{
+ overflow: visible;
+ }
+
+}
+
+@media (max-width: 991px){
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ -webkit-overflow-scrolling: touch;
+ }
+
+}
+
diff --git a/public/assets/admin/sass/lbd/_sections.scss b/public/assets/admin/sass/lbd/_sections.scss
new file mode 100644
index 00000000..9682b413
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_sections.scss
@@ -0,0 +1,12 @@
+.section{
+ padding: 30px 0;
+
+ position: relative;
+ background-color: #FFFFFF;
+}
+.section-gray{
+ background-color: #EEEEEE;
+}
+.section-white{
+ background-color: #FFFFFF;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_sidebar-and-main-panel.scss b/public/assets/admin/sass/lbd/_sidebar-and-main-panel.scss
new file mode 100755
index 00000000..f5780821
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_sidebar-and-main-panel.scss
@@ -0,0 +1,249 @@
+.sidebar{
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 260px;
+ display: block;
+ z-index: 1;
+ color: #fff;
+ font-weight: 200;
+ background-size: cover;
+ background-position: center center;
+
+ .sidebar-wrapper{
+ position: relative;
+ max-height: none;
+ min-height: 100%;
+ overflow: hidden;
+ width: 260px;
+ z-index: 4;
+ }
+
+ .sidebar-background{
+ position: absolute;
+ z-index: 1;
+ height: 100%;
+ width: 100%;
+ display: block;
+ top: 0;
+ left: 0;
+ background-size: cover;
+ background-position: center center;
+ }
+
+ .logo{
+ padding: $navbar-padding-a;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
+
+ p{
+ float: left;
+ font-size: 20px;
+ margin: 10px 10px;
+ color: $white-color;
+ line-height: 20px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .simple-text{
+ text-transform: uppercase;
+ padding: $padding-small-vertical $padding-zero;
+ display: block;
+ font-size: $font-size-large;
+ color: $white-color;
+ text-align: center;
+ font-weight: $font-weight-normal;
+ line-height: 30px;
+ }
+ }
+
+ .logo-tim{
+ border-radius: 50%;
+ border: 1px solid #333;
+ display: block;
+ height: 61px;
+ width: 61px;
+ float: left;
+ overflow: hidden;
+
+ img{
+ width: 60px;
+ height: 60px;
+ }
+ }
+
+ .nav{
+ margin-top: 20px;
+
+ li{
+ > a{
+ color: #FFFFFF;
+ margin: 5px 15px;
+ opacity: .86;
+ border-radius: 4px;
+ }
+
+ &:hover > a{
+ background: rgba(255,255,255,0.13);
+ opacity: 1;
+ }
+
+ &.active > a{
+ color: #FFFFFF;
+ opacity: 1;
+ background: rgba(255,255,255,0.23);
+
+ }
+ }
+
+ h1,h2,h3,h4,h5 {
+ padding-left: 10px;
+ }
+
+ p{
+ margin: 0;
+ padding-left: 10px;
+ line-height: 30px;
+ font-size: 12px;
+ font-weight: 600;
+ text-transform: uppercase;
+ }
+
+ i{
+ font-size: 28px;
+ float: left;
+ margin-right: 15px;
+ line-height: 30px;
+ width: 30px;
+ text-align: center;
+ }
+ }
+}
+
+
+.sidebar,
+body > .navbar-collapse{
+ .logo{
+ padding: $navbar-padding-a;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
+
+ p{
+ float: left;
+ font-size: 20px;
+ margin: 10px 10px;
+ color: $white-color;
+ line-height: 20px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .simple-text{
+ text-transform: uppercase;
+ padding: $padding-small-vertical $padding-zero;
+ display: block;
+ font-size: $font-size-large;
+ color: $white-color;
+ text-align: center;
+ font-weight: $font-weight-normal;
+ line-height: 30px;
+ }
+ }
+
+ .logo-tim{
+ border-radius: 50%;
+ border: 1px solid #333;
+ display: block;
+ height: 61px;
+ width: 61px;
+ float: left;
+ overflow: hidden;
+
+ img{
+ width: 60px;
+ height: 60px;
+ }
+ }
+
+ &:after,
+ &:before{
+ display: block;
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ z-index: 2;
+ }
+
+ &:before{
+ opacity: .33;
+ background: #000000;
+ }
+
+ &:after{
+ @include icon-gradient($black-color-top, $black-color-bottom);
+ z-index: 3;
+ opacity: 1;
+ }
+
+ &[data-image]:after,
+ &.has-image:after{
+ opacity: .77;
+ }
+
+ &[data-color="blue"]:after{
+ @include icon-gradient($new-dark-blue, $blue-color-bottom);
+ }
+ &[data-color="azure"]:after{
+ @include icon-gradient($new-blue, $azure-color-bottom);
+ }
+ &[data-color="green"]:after{
+ @include icon-gradient($new-green, $green-color-bottom);
+ }
+ &[data-color="orange"]:after{
+ @include icon-gradient($new-orange, $orange-color-bottom);
+ }
+ &[data-color="red"]:after{
+ @include icon-gradient($new-red, $red-color-bottom);
+ }
+ &[data-color="purple"]:after{
+ @include icon-gradient($new-purple, $purple-color-bottom);
+ }
+}
+
+
+.main-panel{
+ background: rgba(203,203,210,.15);
+ position: relative;
+ z-index: 2;
+ float: right;
+ width: $sidebar-width;
+ min-height: 100%;
+
+ > .content{
+ padding: 30px 15px;
+ min-height: calc(100% - 123px);
+ }
+
+ > .footer{
+ border-top: 1px solid #e7e7e7;
+ }
+
+ .navbar{
+ margin-bottom: 0;
+ }
+}
+
+.sidebar,
+.main-panel{
+ overflow: auto;
+ max-height: 100%;
+ height: 100%;
+ -webkit-transition-property: top,bottom;
+ transition-property: top,bottom;
+ -webkit-transition-duration: .2s,.2s;
+ transition-duration: .2s,.2s;
+ -webkit-transition-timing-function: linear,linear;
+ transition-timing-function: linear,linear;
+ -webkit-overflow-scrolling: touch;
+}
diff --git a/public/assets/admin/sass/lbd/_sliders.scss b/public/assets/admin/sass/lbd/_sliders.scss
new file mode 100644
index 00000000..51df094e
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_sliders.scss
@@ -0,0 +1,218 @@
+
+/*!
+ * jQuery UI Slider 1.10.4
+ * http://jqueryui.com
+ *
+ * Copyright 2014 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/slider/#theming
+ */
+.ui-slider {
+ position: relative;
+ text-align: left;
+}
+.ui-slider .ui-slider-handle {
+ position: absolute;
+ z-index: 2;
+ width: 1.2em;
+ height: 1.2em;
+ cursor: default;
+}
+.ui-slider .ui-slider-range {
+ position: absolute;
+ z-index: 1;
+ font-size: .7em;
+ display: block;
+ border: 0;
+ background-position: 0 0;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+ filter: inherit;
+}
+
+.ui-slider-horizontal {
+ height: 4px;
+}
+.ui-slider-horizontal .ui-slider-handle {
+ margin-left: -10px;
+ top: -7px;
+}
+.ui-slider-horizontal .ui-slider-range {
+ top: 0;
+ height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+ left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+ right: 0;
+}
+
+.ui-slider-vertical {
+ width: .8em;
+ height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+ left: -.3em;
+ margin-left: 0;
+ margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+ left: 0;
+ width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+ bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+ top: 0;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+ font-size: 1.1em/*{fsDefault}*/;
+}
+.ui-widget .ui-widget {
+ font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-size: 1em;
+}
+.ui-widget-content {
+ background-color: #E5E5E5;
+}
+.ui-widget-content a {
+ color: #222222/*{fcContent}*/;
+}
+.ui-widget-header {
+ background: #999999;
+ color: #222222;
+ font-weight: bold;
+}
+.ui-widget-header a {
+ color: #222222;
+}
+
+.slider-primary .ui-widget-header{
+ background-color: #3472F7;
+}
+.slider-info .ui-widget-header{
+ background-color: #2C93FF;
+}
+.slider-success .ui-widget-header{
+ background-color: #05AE0E;
+}
+.slider-warning .ui-widget-header{
+ background-color: #FF9500;
+}
+.slider-danger .ui-widget-header{
+ background-color: #FF3B30;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+ background: rgb(255,255,255); /* Old browsers */
+ background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(241,241,242,1) 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(241,241,242,1))); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(241,241,242,1) 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(241,241,242,1) 100%); /* Opera 11.10+ */
+ background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(241,241,242,1) 100%); /* IE10+ */
+ background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(241,241,242,1) 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f1f1f2',GradientType=0 ); /* IE6-9 */
+
+ border-radius: 50%;
+ box-shadow: 0 1px 1px #FFFFFF inset, 0 1px 2px rgba(0, 0, 0, 0.4);
+ height:15px;
+ width:15px;
+ cursor:pointer;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+ color: #555555/*{fcDefault}*/;
+ text-decoration: none;
+}
+
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+ color: #212121/*{fcHover}*/;
+ text-decoration: none;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ color: #212121/*{fcActive}*/;
+ text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #fcefa1;
+ background: #fbf9ee;
+ color: #363636;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+ color: #363636;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid $danger-color/*{borderColorError}*/;
+ background-color: $danger-color;
+ color: $danger-color/*{fcError}*/;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+ color: $danger-color/*{fcError}*/;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: $danger-color/*{fcError}*/;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .7;
+ filter:Alpha(Opacity=70);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .35;
+ filter:Alpha(Opacity=35);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_social-buttons.scss b/public/assets/admin/sass/lbd/_social-buttons.scss
new file mode 100644
index 00000000..4c9ed705
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_social-buttons.scss
@@ -0,0 +1,76 @@
+.btn-social {
+ //@include btn-styles($default-color, $default-states-color);
+ opacity: 0.85;
+ padding: 8px 9px;
+
+ .fa {
+ font-size: 18px;
+ vertical-align: middle;
+ display: inline-block;
+ }
+
+ &.btn-round {
+ padding: 9px 10px;
+ }
+
+ &.btn-simple {
+ padding: 9px 5px;
+ font-size: 16px;
+
+ .fa{
+ font-size: 20px;
+ position: relative;
+ top: -2px;
+ width: 24px;
+ }
+ }
+
+}
+
+.btn-facebook {
+ @include social-buttons-color($social-facebook);
+}
+
+.btn-twitter {
+ @include social-buttons-color($social-twitter);
+}
+
+.btn-pinterest {
+ @include social-buttons-color($social-pinterest);
+}
+
+.btn-google {
+ @include social-buttons-color($social-google);
+}
+
+.btn-linkedin {
+ @include social-buttons-color($social-linkedin);
+}
+
+.btn-dribbble {
+ @include social-buttons-color($social-dribbble);
+}
+
+.btn-github {
+ @include social-buttons-color($social-github);
+}
+
+.btn-youtube {
+ @include social-buttons-color($social-youtube);
+}
+
+.btn-stumbleupon {
+ @include social-buttons-color($social-stumbleupon);
+}
+
+.btn-reddit {
+ @include social-buttons-color($social-reddit);
+}
+
+.btn-tumblr {
+ @include social-buttons-color($social-tumblr);
+}
+
+.btn-behance{
+ @include social-buttons-color($social-behance);
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_tables.scss b/public/assets/admin/sass/lbd/_tables.scss
new file mode 100644
index 00000000..6d35ed80
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_tables.scss
@@ -0,0 +1,57 @@
+.table{
+
+ .radio,
+ .checkbox{
+ position: relative;
+ height: 20px;
+ display: block;
+ width: 20px;
+ padding: 0px 0px;
+ margin: 0px 5px;
+ text-align: center;
+
+ .icons{
+ left: 5px;
+ }
+ }
+ > thead > tr > th,
+ > tbody > tr > th,
+ > tfoot > tr > th,
+ > thead > tr > td,
+ > tbody > tr > td,
+ > tfoot > tr > td{
+ padding: 12px 8px;
+ vertical-align: middle;
+ }
+
+ > thead > tr > th{
+ border-bottom-width: 1px;
+ font-size: $font-size-small;
+ text-transform: uppercase;
+ color: $dark-gray;
+ font-weight: $font-weight-normal;
+ padding-bottom: 5px;
+ }
+
+ .td-actions .btn{
+ @include opacity(0.36);
+
+ &.btn-xs{
+ padding-left: 3px;
+ padding-right: 3px;
+ }
+ }
+ .td-actions{
+ min-width: 90px;
+ }
+
+ > tbody > tr{
+ position: relative;
+
+ &:hover{
+ .td-actions .btn{
+ @include opacity(1);
+ }
+ }
+ }
+}
diff --git a/public/assets/admin/sass/lbd/_tabs-navs-pagination.scss b/public/assets/admin/sass/lbd/_tabs-navs-pagination.scss
new file mode 100644
index 00000000..70842bd2
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_tabs-navs-pagination.scss
@@ -0,0 +1,207 @@
+/* Navigation menu */
+.nav-pills {
+ > li + li {
+ margin-left: 0;
+ }
+ > li > a {
+ border: 1px solid $info-color;
+ border-radius: 0;
+ color: $info-color;
+ margin-left: -1px;
+
+ &:hover,
+ &:focus{
+ background-color: #F5F5F5;
+ }
+ }
+ > li.active > a,
+ > li.active > a:hover,
+ > li.active > a:focus {
+ background-color: $info-color;
+ color: #FFFFFF;
+ }
+ > li:first-child > a{
+ border-radius: 4px 0 0 4px;
+ margin: 0;
+ }
+ > li:last-child > a{
+ border-radius: 0 4px 4px 0;
+ }
+
+}
+
+.pagination.pagination-no-border > li > a,
+.pagination.pagination-no-border > li > span{
+ border: 0;
+}
+.pagination > li > a, .pagination > li > span, .pagination > li:first-child > a, .pagination > li:first-child > span, .pagination > li:last-child > a, .pagination > li:last-child > span{
+ border-radius: 50%;
+ margin: 0 2px;
+ color: $default-states-color;
+}
+.pagination > li.active > a, .pagination > li.active > span, .pagination > li.active > a:hover, .pagination > li.active > span:hover, .pagination > li.active > a:focus, .pagination > li.active > span:focus {
+ background-color: $info-color;
+ border: 0;
+ color: #FFFFFF;
+ padding: 7px 13px;
+}
+
+.nav-pills-blue > li.active > a,
+.nav-pills-blue > li.active > a:hover,
+.nav-pills-blue > li.active > a:focus,
+.pagination-blue > li.active > a,
+.pagination-blue > li.active > span,
+.pagination-blue > li.active > a:hover,
+.pagination-blue > li.active > span:hover,
+.pagination-blue > li.active > a:focus,
+.pagination-blue > li.active > span:focus{
+ background-color: $primary-color;
+}
+
+.nav-pills-azure > li.active > a,
+.nav-pills-azure > li.active > a:hover,
+.nav-pills-azure > li.active > a:focus,
+.pagination-azure > li.active > a,
+.pagination-azure > li.active > span,
+.pagination-azure > li.active > a:hover,
+.pagination-azure > li.active > span:hover,
+.pagination-azure > li.active > a:focus,
+.pagination-azure > li.active > span:focus{
+ background-color: $info-color;
+}
+
+.nav-pills-green > li.active > a,
+.nav-pills-green > li.active > a:hover,
+.nav-pills-green > li.active > a:focus,
+.pagination-green > li.active > a,
+.pagination-green > li.active > span,
+.pagination-green > li.active > a:hover,
+.pagination-green > li.active > span:hover,
+.pagination-green > li.active > a:focus,
+.pagination-green > li.active > span:focus{
+ background-color: $success-color;
+}
+
+.nav-pills-orange > li.active > a,
+.nav-pills-orange > li.active > a:hover,
+.nav-pills-orange > li.active > a:focus,
+.pagination-orange > li.active > a,
+.pagination-orange > li.active > span,
+.pagination-orange > li.active > a:hover,
+.pagination-orange > li.active > span:hover,
+.pagination-orange > li.active > a:focus,
+.pagination-orange > li.active > span:focus{
+ background-color: $warning-color;
+}
+
+.nav-pills-red > li.active > a,
+.nav-pills-red > li.active > a:hover,
+.nav-pills-red > li.active > a:focus,
+.pagination-red > li.active > a,
+.pagination-red > li.active > span,
+.pagination-red > li.active > a:hover,
+.pagination-red > li.active > span:hover,
+.pagination-red > li.active > a:focus,
+.pagination-red > li.active > span:focus{
+ background-color: $danger-color;
+}
+.nav-pills-blue > li > a {
+ @include pill-style($primary-color);
+}
+.nav-pills-azure > li > a {
+ @include pill-style($info-color);
+}
+.nav-pills-green > li > a {
+ @include pill-style($success-color);
+}
+.nav-pills-orange > li > a {
+ @include pill-style($warning-color);
+}
+.nav-pills-red > li > a {
+ @include pill-style($danger-color);
+}
+
+.nav-text, .nav-icons{
+ margin: $margin-bottom;
+
+ > li > a{
+ display: block;
+ padding: 0px $padding-base-horizontal;
+ color: $dark-gray;
+ text-align: center;
+ @include opacity(0.8);
+
+ &:hover,
+ &:focus{
+ background-color: $transparent-bg;
+ @include opacity(1);
+ }
+ }
+ > li:first-child a{
+ padding-left: 0;
+ }
+ > li.active a{
+ color: $info-color;
+ }
+}
+.nav-icons > li{
+ display: inline-block;
+ > a{
+ padding: 0 10px;
+ margin-bottom: 10px;
+ }
+ > a i{
+ font-size: $font-size-h4;
+ margin-bottom: 10px;
+ width: $font-size-h4;
+ }
+}
+.nav-icons.nav-stacked > li{
+ display: block;
+ > a {
+ margin-bottom: 20px;
+ }
+}
+.nav-blue > li.active a{
+ color: $primary-color;
+}
+.nav-azure > li.active a{
+ color: $info-color;
+}
+.nav-green > li.active a{
+ color: $success-color;
+}
+.nav-orange > li.active a{
+ color: $warning-color;
+}
+.nav-red > li.active a{
+ color: $danger-color;
+}
+
+.nav-text{
+ margin: $margin-bottom;
+
+ > li > a{
+ font-size: $font-size-h6;
+ text-transform: uppercase;
+ padding: 3px 0;
+ text-align: left;
+ font-weight: $font-weight-semi;
+
+ }
+ > li:first-child > a{
+ padding-top: 0;
+ }
+ h4{
+ margin-top: 0;
+ }
+}
+
+.nav-text:not(.nav-stacked){
+ > li{
+ display: inline-block;
+ }
+ > li > a{
+ margin-right: 15px;
+ }
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_tags.scss b/public/assets/admin/sass/lbd/_tags.scss
new file mode 100644
index 00000000..97d6ef9f
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_tags.scss
@@ -0,0 +1,118 @@
+.tagsinput {
+ height: $height-base;
+ overflow-y: auto;
+ text-align: left;
+ .tag {
+ cursor: pointer;
+ overflow: hidden;
+ position: relative;
+ margin: 5px 3px 5px 0;
+ @include label-style();
+ }
+
+ .tag:hover{
+ padding-left: 10px;
+ padding-right: 14px;
+ }
+
+ .tagsinput-add {
+ color: $black-color;
+ cursor: pointer;
+ display: inline-block;
+ font-size: 14px;
+ padding: 5px 6px;
+ margin: 5px 0 0;
+ vertical-align: top;
+ @include opacity(0.8);
+
+ &:hover,
+ &:focus{
+ @include opacity(1);
+ }
+ }
+ .tagsinput-add:before {
+ content: "\f067";
+ font-family: "FontAwesome";
+ }
+
+ .tagsinput-remove-link {
+ color: $default-color;
+ cursor: pointer;
+ font-size: 12px;
+ padding: 2px 0;
+ position: absolute;
+ right: 0;
+ opacity: 0;
+ text-align: right;
+ text-decoration: none;
+ top: 0;
+ width: 100%;
+ z-index: 2;
+ }
+ .tag:hover .tagsinput-remove-link {
+ opacity: 1;
+ padding-right: 6px;
+ }
+ .tagsinput-remove-link:before {
+ content: "\f00d";
+ font-family: "FontAwesome";
+ }
+ .tagsinput-add-container {
+ display: inline-block;
+ vertical-align: middle;
+ }
+ input{
+ background: transparent;
+ border: none;
+ color: $black-color;
+ margin: 0;
+ outline: medium none !important;
+ padding: 0 0 0 5px;
+ vertical-align: top;
+ width: 30px;
+ height: 40px;
+ }
+
+ &.tag-blue .tag,
+ &.tag-blue .tagsinput-remove-link{
+ @include label-color($primary-color);
+ }
+ &.tag-azure .tag,
+ &.tag-azure .tagsinput-remove-link{
+ @include label-color($info-color);
+ }
+ &.tag-green .tag,
+ &.tag-green .tagsinput-remove-link{
+ @include label-color($success-color);
+ }
+ &.tag-orange .tag,
+ &.tag-orange .tagsinput-remove-link{
+ @include label-color($warning-color);
+ }
+ &.tag-red .tag,
+ &.tag-red .tagsinput-remove-link{
+ @include label-color($danger-color);
+ }
+
+ &.tag-fill{
+ &.tag-blue .tag{
+ @include label-color-fill($primary-color);
+ }
+ &.tag-azure .tag{
+ @include label-color-fill($info-color);
+ }
+ &.tag-green .tag{
+ @include label-color-fill($success-color);
+ }
+ &.tag-orange .tag{
+ @include label-color-fill($warning-color);
+ }
+ &.tag-red .tag{
+ @include label-color-fill($danger-color);
+ }
+ }
+ &.tag-fill .tagsinput-remove-link{
+ color: $white-color;
+ }
+
+}
diff --git a/public/assets/admin/sass/lbd/_tooltips-and-popovers.scss b/public/assets/admin/sass/lbd/_tooltips-and-popovers.scss
new file mode 100644
index 00000000..0001be2e
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_tooltips-and-popovers.scss
@@ -0,0 +1,155 @@
+.tooltip {
+ font-size: $font-size-base;
+ font-weight: $font-weight-bold;
+
+ &.top {
+ margin-top: -11px;
+ padding: 0;
+ }
+ &.top .tooltip-inner:after {
+ border-top: 11px solid #FAE6A4;
+ border-left: 11px solid rgba(0, 0, 0, 0);
+ border-right: 11px solid rgba(0, 0, 0, 0);
+ bottom: -10px;
+ }
+ &.top .tooltip-inner:before {
+ border-top: 11px solid rgba(0, 0, 0, 0.2);
+ border-left: 11px solid rgba(0, 0, 0, 0);
+ border-right: 11px solid rgba(0, 0, 0, 0);
+ bottom: -11px;
+ }
+ &.bottom {
+ margin-top: 11px;
+ padding: 0;
+ }
+ &.bottom .tooltip-inner:after {
+ border-bottom: 11px solid #FAE6A4;
+ border-left: 11px solid rgba(0, 0, 0, 0);
+ border-right: 11px solid rgba(0, 0, 0, 0);
+ top: -10px;
+ }
+ &.bottom .tooltip-inner:before {
+ border-bottom: 11px solid rgba(0, 0, 0, 0.2);
+ border-left: 11px solid rgba(0, 0, 0, 0);
+ border-right: 11px solid rgba(0, 0, 0, 0);
+ top: -11px;
+ }
+ &.left{
+ margin-left: -11px;
+ padding: 0;
+ }
+ &.left .tooltip-inner:after {
+ border-left: 11px solid #FAE6A4;
+ border-top: 11px solid rgba(0, 0, 0, 0);
+ border-bottom: 11px solid rgba(0, 0, 0, 0);
+ right: -10px;
+ left: auto;
+ margin-left: 0;
+ }
+ &.left .tooltip-inner:before {
+ border-left: 11px solid rgba(0, 0, 0, 0.2);
+ border-top: 11px solid rgba(0, 0, 0, 0);
+ border-bottom: 11px solid rgba(0, 0, 0, 0);
+ right: -11px;
+ left: auto;
+ margin-left: 0;
+ }
+ &.right{
+ margin-left: 11px;
+ padding: 0;
+ }
+ &.right .tooltip-inner:after {
+ border-right: 11px solid #FAE6A4;
+ border-top: 11px solid rgba(0, 0, 0, 0);
+ border-bottom: 11px solid rgba(0, 0, 0, 0);
+ left: -10px;
+ top: 0;
+ margin-left: 0;
+ }
+ &.right .tooltip-inner:before {
+ border-right: 11px solid rgba(0, 0, 0, 0.2);
+ border-top: 11px solid rgba(0, 0, 0, 0);
+ border-bottom: 11px solid rgba(0, 0, 0, 0);
+ left: -11px;
+ top: 0;
+ margin-left: 0;
+ }
+}
+
+.tooltip-arrow{
+ display: none;
+ opacity: 0;
+}
+.tooltip-inner {
+ background-color: #FAE6A4;
+ border-radius: 4px;
+ box-shadow: 0 1px 13px rgba(0, 0, 0, 0.14), 0 0 0 1px rgba(115, 71, 38, 0.23);
+ color: #734726;
+ max-width: 200px;
+ padding: 6px 10px;
+ text-align: center;
+ text-decoration: none;
+}
+.tooltip-inner:after {
+ content: "";
+ display: inline-block;
+ left: 100%;
+ margin-left: -60%;
+ position: absolute;
+}
+.tooltip-inner:before {
+ content: "";
+ display: inline-block;
+ left: 100%;
+ margin-left: -60%;
+ position: absolute;
+}
+
+.popover{
+ padding: 0;
+ border-radius: $border-radius-extreme;
+ z-index: 1031;
+ border: 0;
+ @include box-shadow(none);
+}
+.popover-title{
+ font-size: $font-paragraph;
+ background-color: $azure-navbar;
+ font-weight: normal;
+ line-height: 22px;
+ padding: 8px 15px;
+ margin: 0;
+ color: $white-color;
+ text-align: center;
+ border-radius: $border-radius-extreme $border-radius-extreme 0 0;
+}
+.popover-content{
+ padding: 9px 15px;
+}
+.popover .arrow{
+ border: 0;
+}
+.popover.top .arrow{
+ margin-left: 0;
+}
+.popover.bottom .arrow:after{
+ border-bottom-color: $azure-navbar;
+}
+.popover-filter{
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+ background-color: #000000;
+ @include opacity(0);
+ visibility: hidden;
+
+ transition: visibility 0s linear 0.3s,opacity 0.3s linear;
+}
+.popover-filter.in{
+ visibility:visible;
+ @include opacity(0.2);
+ transition-delay: 0s;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/_typography.scss b/public/assets/admin/sass/lbd/_typography.scss
new file mode 100644
index 00000000..a79f7da0
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_typography.scss
@@ -0,0 +1,90 @@
+/* Font Smoothing */
+body,
+h1, .h1,
+h2, .h2,
+h3, .h3,
+h4, .h4,
+h5, .h5,
+h6, .h6,
+p,
+.navbar,
+.brand,
+.btn-simple,
+.alert,
+a,
+.td-name,
+td,
+button.close{
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ font-family: "Roboto","Helvetica Neue",Arial,sans-serif;
+ font-weight: $font-weight-normal;
+}
+
+h1, .h1, h2, .h2, h3, .h3, h4, .h4{
+ font-weight: $font-weight-light;
+ margin: $margin-large-vertical 0 $margin-base-vertical;
+}
+
+h1, .h1 {
+ font-size: $font-size-h1;
+}
+h2, .h2{
+ font-size: $font-size-h2;
+}
+h3, .h3{
+ font-size: $font-size-h3;
+ margin: 20px 0 10px;
+}
+h4, .h4{
+ font-size: $font-size-h4;
+ line-height: 30px;
+}
+h5, .h5 {
+ font-size: $font-size-h5;
+ margin-bottom: 15px;
+}
+h6, .h6{
+ font-size: $font-size-h6;
+ font-weight: $font-weight-bold;
+ text-transform: uppercase;
+}
+p{
+ font-size: $font-paragraph;
+ line-height: $line-height-general;
+}
+
+h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small {
+ color: $dark-gray;
+ font-weight: $font-weight-light;
+ line-height: $line-height-general;
+}
+
+h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small {
+ font-size: 60%;
+}
+
+h1 .subtitle{
+ display: block;
+ margin: 0 0 $margin-large-vertical;
+}
+
+.text-muted{
+ color: #9A9A9A;
+}
+.text-primary, .text-primary:hover{
+ color: #1D62F0 !important;
+}
+.text-info, .text-info:hover{
+ color: $info-color !important;
+}
+.text-success, .text-success:hover{
+ color: $success-color !important;
+}
+.text-warning, .text-warning:hover{
+ color: $warning-color !important;
+}
+.text-danger, .text-danger:hover{
+ color: $danger-color !important;
+}
+
diff --git a/public/assets/admin/sass/lbd/_variables.scss b/public/assets/admin/sass/lbd/_variables.scss
new file mode 100644
index 00000000..99332ee4
--- /dev/null
+++ b/public/assets/admin/sass/lbd/_variables.scss
@@ -0,0 +1,265 @@
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$none: 0 !default;
+$border-thin: 1px !default;
+$border-thick: 2px !default;
+
+$white-color: #FFFFFF !default;
+$white-bg: #FFFFFF !default;
+
+$smoke-bg: #F5F5F5 !default;
+
+$black-bg: rgba(30,30,30,.97) !default;
+
+$black-color: #333333 !default;
+$black-hr: #444444 !default;
+
+$light-gray: #E3E3E3 !default;
+$medium-gray: #DDDDDD !default;
+$medium-dark-gray: #AAAAAA !default;
+$dark-gray: #9A9A9A !default;
+
+$transparent-bg: transparent !default;
+
+$default-color: #888888 !default;
+$default-bg: #888888 !default;
+$default-states-color: #777777 !default;
+
+$primary-color: #3472F7 !default;
+$primary-bg: #3472F7 !default;
+$primary-states-color: #1D62F0 !default;
+
+$success-color: #87CB16 !default;
+$success-bg: #87CB16 !default;
+$success-states-color: #049F0C !default;
+
+$info-color: #1DC7EA !default;
+$info-bg: #1DC7EA !default;
+$info-states-color: lighten($info-color, 8%) !default;
+
+$warning-color: #FF9500 !default;
+$warning-bg: #FF9500 !default;
+$warning-states-color: #ED8D00 !default;
+
+
+$danger-color: #FF4A55 !default;
+$danger-bg: #FF4A55 !default;
+$danger-states-color: #EE2D20 !default;
+
+
+
+$link-disabled-color: #666666 !default;
+
+
+/* light colors */
+$light-blue: rgba($primary-color, .2);
+$light-azure: rgba($info-color, .2);
+$light-green: rgba($success-color, .2);
+$light-orange: rgba($warning-color, .2);
+$light-red: rgba($danger-color, .2);
+
+
+//== Components
+//
+
+$padding-base-vertical: 8px !default;
+$padding-base-horizontal: 16px !default;
+
+$padding-round-vertical: 9px !default;
+$padding-round-horizontal: 18px !default;
+
+$padding-simple-vertical: 10px !default;
+$padding-simple-horizontal: 18px !default;
+
+$padding-large-vertical: 14px !default;
+$padding-large-horizontal: 30px !default;
+
+$padding-small-vertical: 5px !default;
+$padding-small-horizontal: 10px !default;
+
+$padding-xs-vertical: 1px !default;
+$padding-xs-horizontal: 5px !default;
+
+$padding-label-vertical: 2px !default;
+$padding-label-horizontal: 12px !default;
+
+$margin-large-vertical: 30px !default;
+$margin-base-vertical: 15px !default;
+
+$padding-zero: 0px !default;
+
+$margin-bottom: 0 0 10px 0 !default;
+$border-radius-small: 3px !default;
+$border-radius-base: 4px !default;
+$border-radius-large: 6px !default;
+$border-radius-extreme: 10px !default;
+
+$border-radius-large-top: $border-radius-large $border-radius-large 0 0 !default;
+$border-radius-large-bottom: 0 0 $border-radius-large $border-radius-large !default;
+
+$btn-round-radius: 30px !default;
+
+$height-base: 40px !default;
+
+$font-size-base: 14px !default;
+$font-size-small: 12px !default;
+$font-size-medium: 16px !default;
+$font-size-large: 18px !default;
+$font-size-large-navbar: 20px !default;
+
+$font-size-h1: 52px !default;
+$font-size-h2: 36px !default;
+$font-size-h3: 28px !default;
+$font-size-h4: 22px !default;
+$font-size-h5: 16px !default;
+$font-size-h6: 14px !default;
+$font-paragraph: 16px !default;
+$font-size-navbar: 16px !default;
+$font-size-small: 12px !default;
+
+$font-weight-light: 300 !default;
+$font-weight-normal: 400 !default;
+$font-weight-semi: 500 !default;
+$font-weight-bold: 600 !default;
+
+$line-height-general: 1.5 !default;
+$line-height: 20px !default;
+$line-height-lg: 54px !default;
+
+$sidebar-width: calc(100% - 260px) !default;
+
+
+$border-radius-top: 10px 10px 0 0 !default;
+$border-radius-bottom: 0 0 10px 10px !default;
+
+$dropdown-shadow: 1px 2px 3px rgba(0, 0, 0, 0.125);
+
+$general-transition-time: 300ms !default;
+
+$slow-transition-time: 370ms !default;
+$dropdown-coordinates: 29px -50px !default;
+
+$fast-transition-time: 150ms !default;
+
+$ultra-fast-transition-time: 100ms !default;
+
+$select-coordinates: 50% -40px !default;
+
+$transition-linear: linear !default;
+$transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default;
+$transition-ease: ease 0s;
+$transition-ease-in: ease-in !default;
+$transition-ease-out: ease-out !default;
+
+
+$navbar-padding-a: 10px 15px;
+$navbar-margin-a: 10px 3px;
+
+$padding-social-a: 10px 5px;
+
+$navbar-margin-a-btn: 15px 3px;
+$navbar-margin-a-btn-round: 16px 3px;
+
+$navbar-padding-a-icons: 6px 15px;
+$navbar-margin-a-icons: 6px 3px;
+
+$navbar-padding-brand: 15px 15px;
+$navbar-margin-brand: 5px 0px;
+
+$navbar-margin-brand-icons: 12px auto;
+
+$navbar-margin-btn: 15px 3px;
+
+$height-icon: 64px !default;
+$width-icon: 64px !default;
+$padding-icon: 12px !default;
+$border-radius-icon: 15px !default;
+
+$size-icon: 64px;
+$size-icon-sm: 32px;
+
+
+$height-icon-sm: 32px;
+$width-icon-sm: 32px;
+$padding-icon-sm: 4px;
+$border-radius-icon-sm: 7px;
+
+$height-icon-message: 40px;
+$width-icon-message: 40px;
+
+$height-icon-message-sm: 20px;
+$width-icon-message-sm: 20px;
+
+$default-color-top: #d9d9d9 !default;
+$default-color-bottom: #909297 !default;
+
+$blue-color-top: #4087ea;
+$blue-color-bottom: #533ce1;
+
+$azure-color-top: #45c0fd;
+$azure-color-bottom: #4091ff;
+
+$green-color-top: #a1eb3a;
+$green-color-bottom: #6dc030;
+
+$orange-color-top: #ffb33b;
+$orange-color-bottom: #ff5221;
+
+$red-color-top: #ff3b30;
+$red-color-bottom: #bb0502;
+
+$purple-color-top: #df55e1;
+$purple-color-bottom: #943bea;
+
+$pink-color-top: #ff2a63;
+$pink-color-bottom: #ff2e2e;
+
+$black-color-top: #787878;
+$black-color-bottom: #343434;
+
+$social-facebook: #3b5998;
+$social-twitter: #55acee;
+$social-pinterest: #cc2127;
+$social-google: #dd4b39;
+$social-linkedin: #0976b4;
+$social-dribbble: #ea4c89;
+$social-github: #333333;
+$social-youtube: #e52d27;
+$social-stumbleupon: #eb4924;
+$social-reddit: #ff4500;
+$social-tumblr: #35465c;
+$social-behance: #1769ff;
+
+
+$filter-blue: darken($primary-color, 10%);
+$filter-azure: darken($info-color, 10%);
+$filter-green: darken($success-color, 10%);
+$filter-orange: darken($warning-color, 10%);
+$filter-red: darken($danger-color, 10%);
+
+
+$new-blue: #1DC7EA;
+$new-purple: #9368E9;
+$new-red: #FB404B;
+$new-green: #87CB16;
+$new-orange: #FFA534;
+$new-dark-blue: #1F77D0;
+$new-black: #5e5e5e;
+
+
+$topbar-x: topbar-x !default;
+$topbar-back: topbar-back !default;
+$bottombar-x: bottombar-x !default;
+$bottombar-back: bottombar-back !default;
+
+
+$white-navbar: rgba(#FFFFFF, .96);
+$blue-navbar: lighten($new-dark-blue, 10%);
+$azure-navbar: lighten($new-blue, 15%);
+$green-navbar: lighten($new-green, 10%);
+$orange-navbar: lighten($new-orange, 10%);
+$red-navbar: lighten($new-red, 10%);
+
+
diff --git a/public/assets/admin/sass/lbd/mixins/_buttons.scss b/public/assets/admin/sass/lbd/mixins/_buttons.scss
new file mode 100644
index 00000000..8322b055
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_buttons.scss
@@ -0,0 +1,70 @@
+// Mixin for generating new styles
+@mixin btn-styles($btn-color, $btn-states-color) {
+ border-color: $btn-color;
+ color: $btn-color;
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.active,
+ .open > &.dropdown-toggle {
+ background-color: $transparent-bg;
+ color: $btn-states-color;
+ border-color: $btn-states-color;
+ }
+
+ &.disabled,
+ &:disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ &,
+ &:hover,
+ &:focus,
+ &.focus,
+ &:active,
+ &.active {
+ background-color: $transparent-bg;
+ border-color: $btn-color;
+ }
+ }
+
+
+ &.btn-fill {
+ color: $white-color;
+ background-color: $btn-color;
+ @include opacity(1);
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.active,
+ .open > &.dropdown-toggle{
+ background-color: $btn-states-color;
+ color: $white-color;
+ }
+
+ .caret{
+ border-top-color: $white-color;
+ }
+ }
+
+ .caret{
+ border-top-color: $btn-color;
+ }
+}
+
+
+@mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){
+ font-size: $font-size;
+ border-radius: $border;
+ padding: $padding-vertical $padding-horizontal;
+
+ &.btn-round{
+ padding: $padding-vertical + 1 $padding-horizontal;
+ }
+
+ &.btn-simple{
+ padding: $padding-vertical + 2 $padding-horizontal;
+ }
+
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_cards.scss b/public/assets/admin/sass/lbd/mixins/_cards.scss
new file mode 100644
index 00000000..af1f955a
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_cards.scss
@@ -0,0 +1,8 @@
+@mixin filter($color){
+ @if $color == #FFFFFF{
+ background-color: rgba($color,.91);
+ } @else {
+ background-color: rgba($color,.69);
+ }
+}
+
diff --git a/public/assets/admin/sass/lbd/mixins/_chartist.scss b/public/assets/admin/sass/lbd/mixins/_chartist.scss
new file mode 100644
index 00000000..cc83d5d4
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_chartist.scss
@@ -0,0 +1,85 @@
+// Scales for responsive SVG containers
+$ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default;
+$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default;
+
+// Class names to be used when generating CSS
+$ct-class-chart: ct-chart !default;
+$ct-class-chart-line: ct-chart-line !default;
+$ct-class-chart-bar: ct-chart-bar !default;
+$ct-class-horizontal-bars: ct-horizontal-bars !default;
+$ct-class-chart-pie: ct-chart-pie !default;
+$ct-class-chart-donut: ct-chart-donut !default;
+$ct-class-label: ct-label !default;
+$ct-class-series: ct-series !default;
+$ct-class-line: ct-line !default;
+$ct-class-point: ct-point !default;
+$ct-class-area: ct-area !default;
+$ct-class-bar: ct-bar !default;
+$ct-class-slice-pie: ct-slice-pie !default;
+$ct-class-slice-donut: ct-slice-donut !default;
+$ct-class-grid: ct-grid !default;
+$ct-class-vertical: ct-vertical !default;
+$ct-class-horizontal: ct-horizontal !default;
+$ct-class-start: ct-start !default;
+$ct-class-end: ct-end !default;
+
+// Container ratio
+$ct-container-ratio: (1/1.618) !default;
+
+// Text styles for labels
+$ct-text-color: rgba(0, 0, 0, 0.4) !default;
+$ct-text-size: 1.3rem !default;
+$ct-text-align: flex-start !default;
+$ct-text-justify: flex-start !default;
+$ct-text-line-height: 1;
+
+// Grid styles
+$ct-grid-color: rgba(0, 0, 0, 0.2) !default;
+$ct-grid-dasharray: 2px !default;
+$ct-grid-width: 1px !default;
+
+// Line chart properties
+$ct-line-width: 3px !default;
+$ct-line-dasharray: false !default;
+$ct-point-size: 8px !default;
+// Line chart point, can be either round or square
+$ct-point-shape: round !default;
+// Area fill transparency between 0 and 1
+$ct-area-opacity: 0.8 !default;
+
+// Bar chart bar width
+$ct-bar-width: 10px !default;
+
+// Donut width (If donut width is to big it can cause issues where the shape gets distorted)
+$ct-donut-width: 60px !default;
+
+// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you
+// should set this property to false
+$ct-include-classes: true !default;
+
+// If this is set to true the CSS will contain colored series. You can extend or change the color with the
+// properties below
+$ct-include-colored-series: $ct-include-classes !default;
+
+// If set to true this will include all responsive container variations using the scales defined at the top of the script
+$ct-include-alternative-responsive-containers: $ct-include-classes !default;
+
+// Series names and colors. This can be extended or customized as desired. Just add more series and colors.
+$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default;
+$ct-series-colors: (
+ $new-blue,
+ $new-red,
+ $new-orange,
+ $new-purple,
+ $new-green,
+ $new-dark-blue,
+ $new-black,
+ $social-google,
+ $social-tumblr,
+ $social-youtube,
+ $social-twitter,
+ $social-pinterest,
+ $social-behance,
+ #6188e2,
+ #a748ca
+) !default;
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_icons.scss b/public/assets/admin/sass/lbd/mixins/_icons.scss
new file mode 100644
index 00000000..80df4dff
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_icons.scss
@@ -0,0 +1,13 @@
+@mixin icon-background ($icon-url){
+ background-image : url($icon-url);
+
+}
+
+@mixin icon-shape ($size, $padding, $border-radius) {
+ height: $size;
+ width: $size;
+ padding: $padding;
+ border-radius: $border-radius;
+ display: inline-table;
+
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_inputs.scss b/public/assets/admin/sass/lbd/mixins/_inputs.scss
new file mode 100644
index 00000000..870c918c
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_inputs.scss
@@ -0,0 +1,17 @@
+@mixin input-size($padding-vertical, $padding-horizontal, $height){
+ padding: $padding-vertical $padding-horizontal;
+ height: $height;
+}
+
+@mixin placeholder($color, $opacity){
+ color: $color;
+ @include opacity(1);
+}
+
+@mixin light-form(){
+ border-radius: 0;
+ border:0;
+ padding: 0;
+ background-color: transparent;
+
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_labels.scss b/public/assets/admin/sass/lbd/mixins/_labels.scss
new file mode 100644
index 00000000..8a2bdd5d
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_labels.scss
@@ -0,0 +1,21 @@
+@mixin label-style(){
+ padding: $padding-label-vertical $padding-label-horizontal;
+ border: 1px solid $default-color;
+ border-radius: $border-radius-small;
+ color: $default-color;
+ font-weight: $font-weight-semi;
+ font-size: $font-size-small;
+ text-transform: uppercase;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+@mixin label-color($color){
+ border-color: $color;
+ color: $color;
+}
+@mixin label-color-fill($color){
+ border-color: $color;
+ color: $white-color;
+ background-color: $color;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_morphing-buttons.scss b/public/assets/admin/sass/lbd/mixins/_morphing-buttons.scss
new file mode 100644
index 00000000..1a4e986d
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_morphing-buttons.scss
@@ -0,0 +1,34 @@
+$prefixes: ('', '-moz-', '-webkit-', '-ms-') !default;
+
+@mixin circle-animation(){
+ @for $i from 0 to length($prefixes) {
+ @include circle-animation-details(nth($prefixes, $i + 1));
+ }
+}
+
+@mixin circle-animation-details($name){
+ #{$name}animation-name: spin;
+ #{$name}animation-duration: 1250ms;
+ #{$name}animation-iteration-count: infinite;
+ #{$name}animation-timing-function: linear;
+
+}
+@keyframes spin {
+ from { transform:rotate(0deg); }
+ to { transform:rotate(360deg); }
+}
+
+@-webkit-keyframes spin {
+ from { -webkit-transform: rotate(0deg); }
+ to { -webkit-transform: rotate(360deg); }
+}
+
+@-moz-keyframes spin {
+ from { -moz-transform: rotate(0deg); }
+ to { -moz-transform: rotate(360deg); }
+}
+
+@-ms-keyframes spin {
+ from { -ms-transform: rotate(0deg); }
+ to { -ms-transform: rotate(360deg); }
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_navbars.scss b/public/assets/admin/sass/lbd/mixins/_navbars.scss
new file mode 100644
index 00000000..6f500463
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_navbars.scss
@@ -0,0 +1,11 @@
+@mixin navbar-color($color){
+ background-color: $color;
+}
+
+@mixin center-item(){
+ left: 0;
+ right: 0;
+ margin-right: auto;
+ margin-left: auto;
+ position: absolute;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_social-buttons.scss b/public/assets/admin/sass/lbd/mixins/_social-buttons.scss
new file mode 100644
index 00000000..38a7d4bd
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_social-buttons.scss
@@ -0,0 +1,43 @@
+@mixin social-buttons-color ($color){
+
+ border-color: $color;
+ color: $color;
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.active,
+ .open > &.dropdown-toggle {
+ background-color: $transparent-bg;
+ color: $color;
+ border-color: $color;
+ opacity: 1;
+ }
+
+ &:disabled,
+ &[disabled],
+ &.disabled {
+ background-color: $transparent-bg;
+ border-color: $color;
+ }
+
+ &.btn-fill {
+ color: $white-color;
+ background-color: $color;
+ opacity: 0.9;
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.active,
+ .open > &.dropdown-toggle{
+ background-color: $color;
+ color: $white-color;
+ opacity: 1;
+ }
+
+ }
+
+
+}
+
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_tabs.scss b/public/assets/admin/sass/lbd/mixins/_tabs.scss
new file mode 100644
index 00000000..edf6f580
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_tabs.scss
@@ -0,0 +1,4 @@
+@mixin pill-style($color){
+ border: 1px solid $color;
+ color: $color;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_transparency.scss b/public/assets/admin/sass/lbd/mixins/_transparency.scss
new file mode 100644
index 00000000..da32b745
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_transparency.scss
@@ -0,0 +1,20 @@
+// Opacity
+
+@mixin opacity($opacity) {
+ opacity: $opacity;
+ // IE8 filter
+ $opacity-ie: ($opacity * 100);
+ filter: #{alpha(opacity=$opacity-ie)};
+}
+
+@mixin black-filter($opacity){
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ position: absolute;
+ background-color: rgba(17,17,17,$opacity);
+ display: block;
+ content: "";
+ z-index: 1;
+}
\ No newline at end of file
diff --git a/public/assets/admin/sass/lbd/mixins/_vendor-prefixes.scss b/public/assets/admin/sass/lbd/mixins/_vendor-prefixes.scss
new file mode 100644
index 00000000..c9830d6c
--- /dev/null
+++ b/public/assets/admin/sass/lbd/mixins/_vendor-prefixes.scss
@@ -0,0 +1,189 @@
+// User select
+// For selecting text on the page
+
+@mixin user-select($select) {
+ -webkit-user-select: $select;
+ -moz-user-select: $select;
+ -ms-user-select: $select; // IE10+
+ user-select: $select;
+}
+
+@mixin box-shadow($shadow...) {
+ -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
+ box-shadow: $shadow;
+}
+
+// Box sizing
+@mixin box-sizing($boxmodel) {
+ -webkit-box-sizing: $boxmodel;
+ -moz-box-sizing: $boxmodel;
+ box-sizing: $boxmodel;
+}
+
+
+@mixin transition($time, $type){
+ -webkit-transition: all $time $type;
+ -moz-transition: all $time $type;
+ -o-transition: all $time $type;
+ -ms-transition: all $time $type;
+ transition: all $time $type;
+}
+
+@mixin transform-scale($value){
+ -webkit-transform: scale($value);
+ -moz-transform: scale($value);
+ -o-transform: scale($value);
+ -ms-transform: scale($value);
+ transform: scale($value);
+}
+
+@mixin transform-translate-x($value){
+ -webkit-transform: translate3d($value, 0, 0);
+ -moz-transform: translate3d($value, 0, 0);
+ -o-transform: translate3d($value, 0, 0);
+ -ms-transform: translate3d($value, 0, 0);
+ transform: translate3d($value, 0, 0);
+}
+
+@mixin transform-origin($coordinates){
+ -webkit-transform-origin: $coordinates;
+ -moz-transform-origin: $coordinates;
+ -o-transform-origin: $coordinates;
+ -ms-transform-origin: $coordinates;
+ transform-origin: $coordinates;
+}
+
+@mixin icon-gradient ($top-color, $bottom-color){
+ background: $top-color;
+ background: -moz-linear-gradient(top, $top-color 0%, $bottom-color 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top-color), color-stop(100%,$bottom-color));
+ background: -webkit-linear-gradient(top, $top-color 0%,$bottom-color 100%);
+ background: -o-linear-gradient(top, $top-color 0%,$bottom-color 100%);
+ background: -ms-linear-gradient(top, $top-color 0%,$bottom-color 100%);
+ background: linear-gradient(to bottom, $top-color 0%,$bottom-color 100%);
+ background-size: 150% 150%;
+}
+
+@mixin radial-gradient($extern-color, $center-color){
+ background: $extern-color;
+ background: -moz-radial-gradient(center, ellipse cover, $center-color 0%, $extern-color 100%); /* FF3.6+ */
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,$center-color), color-stop(100%,$extern-color)); /* Chrome,Safari4+ */
+ background: -webkit-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Opera 12+ */
+ background: -ms-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* IE10+ */
+ background: radial-gradient(ellipse at center, $center-color 0%,$extern-color 100%); /* W3C */
+ background-size: 550% 450%;
+}
+
+@mixin vertical-align {
+ position: relative;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+@mixin rotate-180(){
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+@mixin bar-animation($type){
+ -webkit-animation: $type 500ms linear 0s;
+ -moz-animation: $type 500ms linear 0s;
+ animation: $type 500ms 0s;
+ -webkit-animation-fill-mode: forwards;
+ -moz-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+}
+
+@mixin topbar-x-rotation(){
+ @keyframes topbar-x {
+ 0% {top: 0px; transform: rotate(0deg); }
+ 45% {top: 6px; transform: rotate(145deg); }
+ 75% {transform: rotate(130deg); }
+ 100% {transform: rotate(135deg); }
+ }
+ @-webkit-keyframes topbar-x {
+ 0% {top: 0px; -webkit-transform: rotate(0deg); }
+ 45% {top: 6px; -webkit-transform: rotate(145deg); }
+ 75% {-webkit-transform: rotate(130deg); }
+ 100% { -webkit-transform: rotate(135deg); }
+ }
+ @-moz-keyframes topbar-x {
+ 0% {top: 0px; -moz-transform: rotate(0deg); }
+ 45% {top: 6px; -moz-transform: rotate(145deg); }
+ 75% {-moz-transform: rotate(130deg); }
+ 100% { -moz-transform: rotate(135deg); }
+ }
+}
+
+@mixin topbar-back-rotation(){
+ @keyframes topbar-back {
+ 0% { top: 6px; transform: rotate(135deg); }
+ 45% { transform: rotate(-10deg); }
+ 75% { transform: rotate(5deg); }
+ 100% { top: 0px; transform: rotate(0); }
+ }
+
+ @-webkit-keyframes topbar-back {
+ 0% { top: 6px; -webkit-transform: rotate(135deg); }
+ 45% { -webkit-transform: rotate(-10deg); }
+ 75% { -webkit-transform: rotate(5deg); }
+ 100% { top: 0px; -webkit-transform: rotate(0); }
+ }
+
+ @-moz-keyframes topbar-back {
+ 0% { top: 6px; -moz-transform: rotate(135deg); }
+ 45% { -moz-transform: rotate(-10deg); }
+ 75% { -moz-transform: rotate(5deg); }
+ 100% { top: 0px; -moz-transform: rotate(0); }
+ }
+}
+
+@mixin bottombar-x-rotation(){
+ @keyframes bottombar-x {
+ 0% {bottom: 0px; transform: rotate(0deg);}
+ 45% {bottom: 6px; transform: rotate(-145deg);}
+ 75% {transform: rotate(-130deg);}
+ 100% {transform: rotate(-135deg);}
+ }
+ @-webkit-keyframes bottombar-x {
+ 0% {bottom: 0px; -webkit-transform: rotate(0deg);}
+ 45% {bottom: 6px; -webkit-transform: rotate(-145deg);}
+ 75% {-webkit-transform: rotate(-130deg);}
+ 100% {-webkit-transform: rotate(-135deg);}
+ }
+ @-moz-keyframes bottombar-x {
+ 0% {bottom: 0px; -moz-transform: rotate(0deg);}
+ 45% {bottom: 6px; -moz-transform: rotate(-145deg);}
+ 75% {-moz-transform: rotate(-130deg);}
+ 100% {-moz-transform: rotate(-135deg);}
+ }
+}
+
+@mixin bottombar-back-rotation{
+ @keyframes bottombar-back {
+ 0% { bottom: 6px;transform: rotate(-135deg);}
+ 45% { transform: rotate(10deg);}
+ 75% { transform: rotate(-5deg);}
+ 100% { bottom: 0px;transform: rotate(0);}
+ }
+ @-webkit-keyframes bottombar-back {
+ 0% {bottom: 6px;-webkit-transform: rotate(-135deg);}
+ 45% {-webkit-transform: rotate(10deg);}
+ 75% {-webkit-transform: rotate(-5deg);}
+ 100% {bottom: 0px;-webkit-transform: rotate(0);}
+ }
+ @-moz-keyframes bottombar-back {
+ 0% {bottom: 6px;-moz-transform: rotate(-135deg);}
+ 45% {-moz-transform: rotate(10deg);}
+ 75% {-moz-transform: rotate(-5deg);}
+ 100% {bottom: 0px;-moz-transform: rotate(0);}
+ }
+
+}
+
+
diff --git a/public/assets/admin/sass/light-bootstrap-dashboard.scss b/public/assets/admin/sass/light-bootstrap-dashboard.scss
new file mode 100755
index 00000000..78c84c95
--- /dev/null
+++ b/public/assets/admin/sass/light-bootstrap-dashboard.scss
@@ -0,0 +1,44 @@
+/*!
+
+ =========================================================
+ * Light Bootstrap Dashboard - v1.3.1.0
+ =========================================================
+
+ * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard
+ * Copyright 2017 Creative Tim (http://www.creative-tim.com)
+ * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md)
+
+ =========================================================
+
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+ */
+
+@import "lbd/variables";
+@import "lbd/mixins";
+
+@import "lbd/typography";
+
+// Core CSS
+@import "lbd/misc";
+@import "lbd/sidebar-and-main-panel";
+@import "lbd/buttons";
+@import "lbd/inputs";
+
+@import "lbd/alerts";
+@import "lbd/tables";
+
+@import "lbd/checkbox-radio-switch";
+@import "lbd/navbars";
+@import "lbd/footers";
+
+// Fancy Stuff
+
+@import "lbd/dropdown";
+@import "lbd/cards";
+@import "lbd/chartist";
+@import "lbd/responsive";
+
+
+
+