////
/// @group root/osbp-tea
////

@import "variables-tea.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
@import "layout/cash-register.scss"; 	//os-cash-register


@mixin osbp-tea {
	@include valo;
	
	@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;
}

 


