////
/// @group root/osbp-steel
////


@import "variables-steel.scss";      /* settings specific to this theme */
@import "variables-common.scss";    /* settings used by themes of this set, 
	    /!\ theme-specific settings overwrite common settings */
@import "../valo/valo.scss";

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)

@import "external/reset.scss"
*/

@import "external/dragdrop.scss";
@import "external/charts.scss";	//os-charts

/* style definitions derived from vaadin addons 
*/
@import "addons/designer.scss";			//os-designer
@import "addons/absolutelayout.scss";	//os-absolute-layout

/* variables used in components related to POS/cash register 
*/
@import "common/cash-variables.scss";   //POS

/* style definitions under /layout reference these mixins. 
*  components are not included directly in @mixin <mainStyleName>
*/
@import "components/color-palette.scss";
@import "components/textfield.scss";
@import "components/button.scss";
@import "components/typeface.scss";
@import "components/focus.scss";
@import "components/checkbox.scss";
@import "components/bits.scss";
@import "components/popup.scss";
@import "addons/suggesttext.scss";		//os-suggesttext


/* scss under /layout have to be encased in a @mixin to be used below 
*  @mixin <mainStyleName>
*  else, the prefix .mainStyleName will not be included in the resulting 
*  css file. 
*  also, valo has to be included before adding custom styles.
*/ 
@import "layout/login.scss";	//os-login, os-login-basic, os-login-bgimage
@import "layout/pageframe.scss";		//os-pageframe
@import "layout/header.scss";	//os-heaeder
@import "layout/dialog.scss";    //os-dialog
@import "layout/table.scss";	//os-table
@import "layout/tabsheet.scss"; //os-tabsheet
@import "layout/user.scss";		//os-user, os-user-accordion
@import "layout/responsive.scss";	//os-responsive
@import "layout/sidebar.scss";  //os-sidebar, os-sidebar-table-variant
@import "layout/iconfont.scss"; 	//os-icons
@import "layout/gridview.scss"; 	//os-gridview
@import "layout/oconfigdialog.scss"; 	//os-configdialog
@import "layout/gridutil.scss";		//os-grid-util (displays certain elements within grids)
@import "layout/cash-register.scss"; 	//os-cash-register


@mixin osbp-steel {
	@include valo;
	
	//@include os-base;
	@include os-pageframe;
	@include os-header;
	@include os-login;
	@include os-table;
	@include os-tabsheet;
	@include os-dialog;
	@include os-user;
	@include os-user-accordion;
	//@include os-birt-report;
	@include os-icons;
	//@include os-sidebar;
	@include os-sidebar-table-variant;
	@include os-responsive;
	@include os-gridview;
	@include os-grid-util;	 
	 
	@include os-charts;
	@include os-configdialog;
	
	@include os-suggesttext; /* before cash-register */
	@include os-cash-register;
	
	//bits
	@include os-progress-login;
	@include os-popup-notification;
			
	//external
	@include ex-drag-drop-layout;
	
	//addons
	@include os-absolutelayout;
	@include os-designer;
	
}
 


