3.3.0 running on PrimeFaces 8.0.0
To begin with, you'd need SASS to compile CSS, proceed to SASS Installation if you do not already have SASS available in your command line.
Demo project has an integrated jetty plugin so running the sample is easy as building the css first followed by the mvn jetty:run command.
sass --update src/main/webapp/resources:src/main/webapp/resources --no-source-map mvn jetty:run
Navigate to http://localhost:8080/babylon to view the demos which is exactly same as the live version.
rem units are utilized for scalability so in order to change the size of the overall UI, configure the font-size at the html root. Refer to the SASS Variables section for more information.
html { font-size: $fontSize; }
Babylon utilizes JSF templating APIs and provides a main template.xhtml along with additional topbar, sidebar, rightpanel and footer fragments for the base layout. These xhtml files must be placed under WEB-INF folder and client pages should reference the template.xhtml as their template. Provided empty.xhtml is a sample content page using the main template.xhtml that defines "content" as the main ui:define placeholder. By default template defines 3 placeholders (page title, breadcrumb and actual content) and you many add more as per your requirements.
Sample page below uses the main template from babylon.
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" template="/WEB-INF/template.xhtml"> <ui:define name="title">Test Page</ui:define> <ui:define name="content"> Content goes here </ui:define> </ui:composition>
Other required assets are the css, javascript and images that are located inside resources/babylon-layout folder, simply copy the babylon-layout folder to your %WEB-APP-FOLDER%/resources folder so that final path would be %WEB-APP-FOLDER%/resources/babylon-layout/. Please refer to demo app or maven project of the demo app as the reference.
GuestPreferences is a simple session scoped bean to keep the user customizations of the layout, template xhtml files refer to this bean to dynamically change their behavior such as menu mode or theme. This bean is not necessary to run the babylon and only used for demo purposes. For example template.xhtml includes layout color depending on a user preference using an EL expression.
<h:outputStylesheet name="css/layout-#{guestPreferences.componentTheme}.css" library="babylon-layout" />
In your application, you may also need a similar bean to make the template dynamic so that your users will be able to change their preferred menu or theme.
Babylon provides 32 PrimeFaces theme colors. Setup of a theme simple as including the theme jar in your classpath and defining primefaces.THEME context parameter in web.xml such as "babylon-blue-accent". In "accent" mode a secondary color is used for highlighted element. Full list of available themes are;
A custom theme can be developed by the following steps.
Here are the variables required to create a theme.
$primaryColor: #2196F3 !default; $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; $primaryTextColor: #ffffff !default; //highlight $highlightBg:$primaryColor !default; $highlightTextColor:$primaryTextColor !default; @import '../sass/theme/_theme';
An example sass command to compile the css would be;
sass src/main/webapp/resources/primefaces-babylon-myown/theme.scss:src/main/webapp/resources/primefaces-babylon-myown/theme.css --no-source-map
Watch mode is handy to avoid compiling everytime when a change is made, instead use the following command so that sass generates the file whenever you make a customization. This builds all css files whenever a change is made to any scss file.
sass --watch src/main/webapp/resources:src/main/webapp/resources --no-source-map
Layout customization is similar to theme method.
Here are the variables required to create a layout.
$primaryColor: #2196F3; $primaryTextColor:#ffffff; $logoBgColor:#42A5F5; $topbarBgColor:#2196F3; $topbarIconColor:#ffffff; $topbarIconHoverBgColor:#64b5f6; $lightMenuitemActiveTextColor:#2196F3; $darkMenuitemActiveTextColor:#2196F3; $horizontalMenuitemActiveBgColor:#2196F3; $horizontalMenuitemActiveTextColor:#ffffff; $badgeBgColor:#2196F3; $badgeTextColor:#ffffff; @import '../../sass/variables/_layout'; @import '../../sass/layout/_layout';
In case you'd like to customize common variables such as font-size, the _layout_common.scss under the sass folder is where they are defined.
$fontFamily:'cabin',sans-serif !default; $fontSize:14px !default; $borderRadius:2px !default; $transitionDuration:.2s !default; $mobileBreakpoint:991px !default; $animationDuration:.2s !default; $animationTimingFunction:cubic-bezier(.05,.74,.2,.99) !default; $letterSpacing:normal !default; $tabletBreakpoint:991px !default; $phoneBreakpoint:576px !default;
_layout.scss under sass/variables folder define the shared variables of the layout.
@import './_layout_common.scss'; //main $bodyBgColor:#f2f2f2; $dividerColor:#E0E0E0; $textColor:#495057; $textSecondaryColor:#6c757d; $footerBgColor:#ffffff; $footerBorderColor:#e8e8e8; //breadcrumb $breadcrumbBgColor:#ffffff; $breadcrumbBorder: 1px solid #e8e8e8; //light menu $menuBgColor:#ffffff; $menuBorder: 1px solid #E0E0E0; $menuSeparator:1px solid $dividerColor; $rootMenuitemTextColor:$textSecondaryColor; $menuitemTextColor:$textSecondaryColor; $menuitemIconColor:$textSecondaryColor; $menuitemHoverBgColor:#e0e0e0; //dark menu $darkMenuBgColor:#212121; $darkMenuBorder: 1px solid #212121; $darkMenuSeparator:1px solid #373737; $darkMenuRootMenuitemTextColor:#757575; $darkMenuitemTextColor:#BDBDBD; $darkMenuitemIconColor:#BDBDBD; $darkMenuitemHoverBgColor:#373737; //topbar $topbarMenuBgColor:#ffffff; $topbarMenuBorderColor:#e0e0e0; $topbarBadgeBgColor:#e0284f; $topbarBadgeTextColor:#ffffff; //card $cardBgColor:#ffffff; $cardBorder:1px solid #EEEEEE; //tooltip $tooltipBgColor:#212121; $tooltipTextColor:#ffffff;
Similarly __theme_variables.scss files under sass contains the whole set of variables to generate a PrimeFaces theme.
//shades of gray $shade000:#ffffff !default; //surface $shade100:#f8f9fa !default; //header background $shade200:rgba($primaryColor,.2) !default; //hover background $shade300:#dee2e6 !default; //border, divider $shade400:#ced4da !default; //input border $shade500:#adb5bd !default; //input icon $shade600:#6c757d !default; //text secondary color $shade700:#495057 !default; //text color $shade800:#343a40 !default; //unused $shade900:#212529 !default; //unused //global $fontSize:1rem !default; $fontFamily:'cabin',sans-serif !default; $transitionDuration:.2s !default; $transition:background-color $transitionDuration, color $transitionDuration, border-color $transitionDuration, box-shadow $transitionDuration !default; $animationDuration:.2s !default; $animationTimingFunction:cubic-bezier(.05,.74,.2,.99) !default; $letterSpacing:normal !default; $borderRadius:3px !default; $tabletBreakpoint:991px !default; $phoneBreakpoint:576px !default; $disabledOpacity:.6 !default; $maskBg:rgba(0, 0, 0, 0.4) !default; $inlineSpacing:.5rem !default; $iconSize:1rem !default; $errorColor:#f44336 !default; //action icon $actionIconWidth:2rem !default; $actionIconHeight:2rem !default; $actionIconBg:transparent !default; $actionIconBorder:0 none !default; $actionIconColor:$shade600 !default; $actionIconHoverBg:$shade200 !default; $actionIconHoverBorderColor:transparent !default; $actionIconHoverColor:$shade700 !default; $actionIconBorderRadius:50% !default; //transition $transition: background-color $transitionDuration, color $transitionDuration, border-color $transitionDuration, box-shadow $transitionDuration !default; //focus $focusOutlineColor:$primaryLightColor !default; $focusOutline:0 none !default; $focusOutlineOffset:0 !default; $focusShadow:0 0 0 0.2rem $focusOutlineColor !default; //input field $inputPadding:.5rem .5rem !default; $inputTextFontSize:1rem !default; $inputBg:$shade000 !default; $inputTextColor:$shade700 !default; $inputIconColor:$shade600 !default; $inputBorder:1px solid $shade400 !default; $inputHoverBorderColor:$primaryColor !default; $inputFocusBorderColor:$primaryColor !default; $inputErrorBorderColor:$errorColor !default; $inputPlaceholderTextColor:$shade600 !default; $inputFocusShadow:0 0 0 0.2em $primaryLightColor !default; $inputFilledBg:$shade100 !default; $inputFilledHoverBg:$shade100 !default; $inputFilledFocusBg:$shade100 !default; //groups $inputGroupBorderColor:$shade400 !default; $inputGroupBg:$shade200 !default; $inputGroupTextColor:$shade700 !default; $inputGroupIconColor:$shade600 !default; $inputGroupAddonMinWidth:2.357rem !default; //input lists $inputListMinWidth:12rem !default; $inputListBg:$shade000 !default; $inputListBorder:$inputBorder !default; $inputListPadding:.5rem 0 !default; $inputListItemPadding:.5rem 1rem !default; $inputListItemBg:transparent !default; $inputListItemTextColor:$shade700 !default; $inputListItemHoverBg:$shade200 !default; $inputListItemTextHoverColor:$shade700 !default; $inputListItemHighlightBg:$highlightBg !default; $inputListItemHighlightTextColor:$highlightTextColor !default; $inputListItemBorder:0 none !default; $inputListItemBorderRadius:0 !default; $inputListItemMargin:0 !default; $inputListHeaderPadding:.5rem 1rem !default; $inputListHeaderBg:$shade100 !default; $inputListHeaderTextColor:$shade700 !default; $inputListHeaderBorder:0 none !default; //inputs with panels (password, keyboard) $inputContentPanelPadding:1rem !default; $inputContentPanelBg:$shade000 !default; $inputContentPanelTextColor:$shade700 !default; //inputs with overlays $inputOverlayBorder:0 none !default; $inputOverlayShadow:0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12) !default; //inputs with buttons $inputButtonWidth:2.357rem !default; //button $buttonTextOnlyPadding:.5rem 1rem !default; $buttonWithLeftIconPadding:.5rem 1rem .5rem 2rem !default; $buttonWithRightIconPadding:.5rem 2rem .5rem 1rem !default; $buttonIconOnlyPadding:.5rem !default; $buttonIconOnlyWidth:2.357rem !default; $buttonBg:$primaryColor !default; $buttonBorder:1px solid $primaryColor !default; $buttonTextColor:$primaryTextColor !default; $buttonHoverBg:$primaryDarkColor !default; $buttonHoverBorderColor:$primaryDarkColor !default; $buttonTextHoverColor:$primaryTextColor !default; $buttonActiveBg:$primaryDarkerColor !default; $buttonActiveBorderColor:$primaryDarkerColor !default; $buttonTextActiveColor:$primaryTextColor !default; $buttonFocusOutline:0 none !default; $buttonFocusOutlineOffset:0 !default; $buttonFocusShadow:0 0 0 0.2em $primaryLightColor !default; $raisedButtonShadow:0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12) !default; $roundedButtonBorderRadius:2rem !default; $textButtonHoverBgOpacity:.04 !default; $textButtonActiveBgOpacity:.16 !default; $outlinedButtonBorder:1px solid !default; //button severities $secondaryButtonBg:#7B90B0 !default; $secondaryButtonTextColor:#ffffff !default; $secondaryButtonBorder:1px solid $secondaryButtonBg !default; $secondaryButtonHoverBg:scale-color($secondaryButtonBg, $lightness: -10%) !default; $secondaryButtonTextHoverColor:$secondaryButtonTextColor !default; $secondaryButtonHoverBorderColor:scale-color($secondaryButtonBg, $lightness: -10%) !default; $secondaryButtonActiveBg:scale-color($secondaryButtonBg, $lightness: -20%) !default; $secondaryButtonTextActiveColor:$secondaryButtonTextColor !default; $secondaryButtonActiveBorderColor:scale-color($secondaryButtonBg, $lightness: -20%) !default; $secondaryButtonFocusShadow:0 0 0 0.2rem scale-color($secondaryButtonBg, $lightness: 60%) !default; $infoButtonBg:#25A4D4 !default; $infoButtonTextColor:#ffffff !default; $infoButtonBorder:1px solid $infoButtonBg !default; $infoButtonHoverBg:scale-color($infoButtonBg, $lightness: -10%) !default; $infoButtonTextHoverColor:$infoButtonTextColor !default; $infoButtonHoverBorderColor:scale-color($infoButtonBg, $lightness: -10%) !default; $infoButtonActiveBg:scale-color($infoButtonBg, $lightness: -20%) !default; $infoButtonTextActiveColor:$infoButtonTextColor !default; $infoButtonActiveBorderColor:scale-color($infoButtonBg, $lightness: -20%) !default; $infoButtonFocusShadow:0 0 0 0.2rem scale-color($infoButtonBg, $lightness: 60%) !default; $successButtonBg:#3C9462 !default; $successButtonTextColor:#ffffff !default; $successButtonBorder:1px solid $successButtonBg !default; $successButtonHoverBg:scale-color($successButtonBg, $lightness: -10%) !default; $successButtonTextHoverColor:$successButtonTextColor !default; $successButtonHoverBorderColor:scale-color($successButtonBg, $lightness: -10%) !default; $successButtonActiveBg:scale-color($successButtonBg, $lightness: -20%) !default; $successButtonTextActiveColor:$successButtonTextColor !default; $successButtonActiveBorderColor:scale-color($successButtonBg, $lightness: -20%) !default; $successButtonFocusShadow:0 0 0 0.2rem scale-color($successButtonBg, $lightness: 60%) !default; $warningButtonBg:#DB8519 !default; $warningButtonTextColor:#ffffff !default; $warningButtonBorder:1px solid $warningButtonBg !default; $warningButtonHoverBg:scale-color($warningButtonBg, $lightness: -10%) !default; $warningButtonTextHoverColor:$warningButtonTextColor !default; $warningButtonHoverBorderColor:scale-color($warningButtonBg, $lightness: -10%) !default; $warningButtonActiveBg:scale-color($warningButtonBg, $lightness: -20%) !default; $warningButtonTextActiveColor:$warningButtonTextColor !default; $warningButtonActiveBorderColor:scale-color($warningButtonBg, $lightness: -20%) !default; $warningButtonFocusShadow:0 0 0 0.2rem scale-color($warningButtonBg, $lightness: 60%) !default; $helpButtonBg:#A053A7 !default; $helpButtonTextColor:#ffffff !default; $helpButtonBorder:1px solid $helpButtonBg !default; $helpButtonHoverBg:scale-color($helpButtonBg, $lightness: -10%) !default; $helpButtonTextHoverColor:$helpButtonTextColor !default; $helpButtonHoverBorderColor:scale-color($helpButtonBg, $lightness: -10%) !default; $helpButtonActiveBg:scale-color($helpButtonBg, $lightness: -20%) !default; $helpButtonTextActiveColor:$helpButtonTextColor !default; $helpButtonActiveBorderColor:scale-color($helpButtonBg, $lightness: -20%) !default; $helpButtonFocusShadow:0 0 0 0.2rem scale-color($helpButtonBg, $lightness: 60%) !default; $dangerButtonBg:#E83E22 !default; $dangerButtonTextColor:#ffffff !default; $dangerButtonBorder:1px solid $dangerButtonBg !default; $dangerButtonHoverBg:scale-color($dangerButtonBg, $lightness: -10%) !default; $dangerButtonTextHoverColor:$dangerButtonTextColor !default; $dangerButtonHoverBorderColor:scale-color($dangerButtonBg, $lightness: -10%) !default; $dangerButtonActiveBg:scale-color($dangerButtonBg, $lightness: -20%) !default; $dangerButtonTextActiveColor:$dangerButtonTextColor !default; $dangerButtonActiveBorderColor:scale-color($dangerButtonBg, $lightness: -20%) !default; $dangerButtonFocusShadow:0 0 0 0.2rem scale-color($dangerButtonBg, $lightness: 60%) !default; //checkbox $checkboxBorderWidth:2px !default; $checkboxWidth:1.5rem !default; $checkboxHeight:1.5rem !default; $checkboxActiveBorderColor:$primaryColor !default; $checkboxActiveBg:$primaryColor !default; $checkboxActiveHoverBg:$primaryDarkColor !default; $checkboxTextActiveColor:$primaryTextColor !default; $checkboxFocusShadow:0 0 0 0.2em $primaryLightColor !default; //radiobutton $radiobuttonBorderWidth:2px !default; $radiobuttonWidth:20px !default; $radiobuttonHeight:20px !default; $radiobuttonIconSize:12px !default !default; $radiobuttonActiveBorderColor:$primaryColor !default; $radiobuttonActiveBg:$primaryColor !default; $radiobuttonActiveHoverBg:$primaryDarkColor !default; $radiobuttonTextActiveColor:$primaryTextColor !default; $radiobuttonFocusShadow:0 0 0 0.2em $primaryLightColor !default; //togglebutton $toggleButtonBg:$shade000 !default; $toggleButtonBorder:1px solid $shade400 !default; $toggleButtonTextColor:$shade700 !default; $toggleButtonIconColor:$shade600 !default; $toggleButtonHoverBg:$shade200 !default; $toggleButtonHoverBorderColor:$shade400 !default; $toggleButtonTextHoverColor:$shade700 !default; $toggleButtonHoverIconColor:$shade600 !default; $toggleButtonActiveBg:$primaryColor !default; $toggleButtonActiveBorderColor:$primaryColor !default; $toggleButtonTextActiveColor:$primaryTextColor !default; $toggleButtonActiveIconColor:$primaryTextColor !default; $toggleButtonActiveHoverBg:$primaryDarkColor !default; $toggleButtonActiveHoverBorderColor:$primaryDarkColor !default; $toggleButtonActiveTextHoverColor:$primaryTextColor !default; $toggleButtonActiveHoverIconColor:$primaryTextColor !default; //inplace $inplacePadding:$inputPadding !default; $inplaceHoverBg:$shade200 !default; $inplaceTextHoverColor:$shade700 !default; //rating $ratingCancelIconColor:#e0284f !default; $ratingCancelHoverIconColor:#e0284f !default; $ratingIconWidth:1.25rem !default; $ratingIconHeight:1.25rem !default; $ratingIconFontSize:1.25rem !default; $ratingStarIconColor:$shade700 !default; $ratingStarIconHoverColor:$primaryDarkColor !default; $ratingStarActiveIconColor:$primaryColor !default; //slider $sliderBg:$shade300 !default; $sliderHeight:.286rem !default; $sliderWidth:.286rem !default; $sliderHandleWidth:1.143rem !default; $sliderHandleHeight:1.143rem !default; $sliderHandleBg:$shade000 !default; $sliderHandleBorder:2px solid $primaryColor !default; $sliderHandleBorderRadius:50% !default; $sliderHandleHoverBorderColor:$primaryColor !default; $sliderHandleHoverBg:$primaryColor !default; $sliderRangeBg:$primaryColor !default; //calendar $calendarTitlePadding:1rem !default; $calendarTitleBg:$shade000 !default; $calendarTitleTextColor:$shade700 !default; $calendarTitleBorder:solid $shade300 !default; $calendarTitleBorderWidth:0 0 1px 0 !default; $calendarTableMargin:.5rem 0 !default; $calendarCellPadding:.5rem !default; $calendarCellDateTextColor:$shade700 !default; $calendarCellDateWidth:2.5rem !default; $calendarCellDateHeight:2.5rem !default; $calendarCellDateBorder:0 none !default; $calendarCellDateHoverBg:$shade200 !default; $calendarCellDateHoverBorderColor:transparent !default; $calendarCellDateBorderRadius:50% !default; $calendarCellDateSelectedBg:$highlightBg !default; $calendarCellDateSelectedTextColor:$highlightTextColor !default; $calendarCellDateSelectedBorder:0 none !default; $calendarCellDateTodayBg:transparent !default; $calendarCellDateTodayTextColor:$primaryDarkerColor !default; $calendarCellDateTodayBorder:0 none !default; $calendarTimePickerMargin:.857em 0 !default; $calendarTimePickerLabelPadding:0 !default; $calendarTimePickerInputPadding:.5em 0 !default; $calendarTimePickerInputMargin:0 .714em .714em 40% !default; //keyboard $keyboardButtonPadding:.5rem !default; $keyboardButtonMargin:2px !default; $keyboardButtonBorder:$inputBorder !default; $keyboardButtonBg:$inputBg !default; $keyboardButtonTextColor:$shade700 !default; $keyboardButtonHoverBorderColor:$shade400 !default; $keyboardButtonHoverBg:#ebebef !default; $keyboardButtonTextHoverColor:$shade700 !default; $keyboardButtonActiveBorderColor:$buttonActiveBorderColor !default; $keyboardButtonActiveBg:$buttonActiveBg !default; $keyboardButtonTextActiveColor:$shade000 !default; //chips $chipBg:$primaryColor !default; $chipTextColor:$primaryTextColor !default; $chipBorder:1px solid $primaryColor !default; //switch $inputSwitchOffBg:$shade300 !default; $inputSwitchHandleOffBg:$shade000 !default; $inputSwitchHandleOffBorder:2px solid $shade300 !default; $inputSwitchOnBg:$primaryColor !default; $inputSwitchHandleOnBg:$primaryDarkerColor !default; $inputSwitchHandleOnBorderColor:$primaryDarkerColor !default; $inputSwitchHandleShadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0,0,0,.12) !default; //panel common $panelHeaderBorder:1px solid $shade300 !default; $panelHeaderBg:$shade100 !default; $panelHeaderTextColor:$shade700 !default; $panelHeaderFontWeight:700 !default; $panelHeaderPadding:1rem !default; $panelContentBorder:1px solid $shade300 !default; $panelContentBg:$shade000 !default; $panelContentTextColor:$shade700 !default; $panelContentPadding:1rem !default; $panelFooterBorder:1px solid $shade300 !default; $panelFooterBg:$shade000 !default; $panelFooterTextColor:$shade700 !default; $panelFooterPadding:1rem !default; $panelHeaderHoverBg:$shade200 !default; $panelHeaderHoverBorderColor:$shade300 !default; $panelHeaderTextHoverColor:$shade700 !default; $panelHeaderHoverIconColor:$shade700 !default; //accordion $accordionSpacing:0 !default; $accordionHeaderBorder:$panelHeaderBorder !default; $accordionHeaderBg:$panelHeaderBg !default; $accordionHeaderTextColor:$panelHeaderTextColor !default; $accordionHeaderFontWeight:$panelHeaderFontWeight !default; $accordionHeaderPadding:$panelHeaderPadding !default; $accordionHeaderHoverBg:$shade200 !default; $accordionHeaderHoverBorderColor:$shade300 !default; $accordionHeaderTextHoverColor:$shade700 !default; $accordionHeaderActiveBg:$panelHeaderBg !default; $accordionHeaderActiveBorderColor:$shade300 !default; $accordionHeaderTextActiveColor:$shade700 !default; $accordionHeaderActiveHoverBg:$shade200 !default; $accordionHeaderActiveHoverBorderColor:$shade300 !default; $accordionHeaderActiveTextHoverColor:$shade700 !default; $accordionContentBorder:$panelContentBorder !default; $accordionContentBg:$panelContentBg !default; $accordionContentTextColor:$panelContentTextColor !default; $accordionContentPadding:$panelContentPadding !default; //tabview $tabsHeaderSpacing:.286rem !default; $tabsNavBorderWidth:2px !default; $tabsNavBorder:$tabsNavBorderWidth solid $shade300 !default; $tabsNavBg:$shade000 !default; $tabsHeaderBg:$shade000 !default; $tabsHeaderTextColor:$shade600 !default; $tabsHeaderFontWeight:700 !default; $tabsHeaderPadding:$panelHeaderPadding !default; $tabsHeaderHoverBg:$shade000 !default; $tabsHeaderHoverBorderColor:$shade500 !default; $tabsHeaderTextHoverColor:$shade600 !default; $tabsHeaderActiveBg:$shade000 !default; $tabsHeaderActiveBorderColor:$primaryColor !default; $tabsHeaderTextActiveColor:$primaryColor !default; $tabsContentBorder:0 none !default; $tabsContentBg:$shade000 !default; $tabsContentTextColor:$shade700 !default; $tabsContentPadding:$panelContentPadding !default; //action icon $tabsScrollerButtonBg:$shade000 !default; $tabsScrollerButtonIconColor:$shade600 !default; $tabsScrollerButtonHoverBg:$shade200 !default; $tabsScrollerButtonIconHoverColor:$shade700 !default; //scrollpanel $scrollPanelHandleBg:#dadada !default; $scrollPanelTrackBorder:0 none !default; $scrollPanelTrackBg:#f8f8f8 !default; //paginator $paginatorBg:$shade000 !default; $paginatorBorder:0 none !default; $paginatorIconColor:$shade600 !default; $paginatorPadding:1rem !default; $paginatorElementWidth:2.286em !default; $paginatorElementHeight:2.286em !default; $paginatorElementHoverBg:$shade200 !default; $paginatorElementHoverIconColor:$shade700 !default; $paginatorElementMargin:0 .125em !default; $paginatorElementBorder:1px solid transparent !default; $paginatorElementHoverBorderColor:transparent !default; $paginatorElementBorderRadius:$borderRadius !default; //datatable $datatableHeaderBorderWidth:0 0 1px 0 !default; $datatableHeaderCellPadding:1rem !default; $datatableHeaderCellBg:$shade100 !default; $datatableHeaderCellTextColor:$shade700 !default; $datatableHeaderCellFontWeight:700 !default; $datatableHeaderCellBorder:1px solid $shade200 !default; $datatableHeaderCellBorderWidth:0 0 1px 0 !default; $datatableHeaderCellHoverBg:$shade200 !default; $datatableHeaderCellTextHoverColor:$shade700 !default; $datatableBodyRowBg:$shade000 !default; $datatableBodyRowTextColor:$shade700 !default; $datatableBodyRowBorder:1px solid rgba(0, 0, 0, 0.08) !default; $datatableBodyRowOddBg:#fbfcfc !default; $datatableBodyRowHoverBg:$shade200 !default; $datatableBodyRowTextHoverColor:$shade700 !default; $datatableBodyCellPadding:1rem !default; $datatableBodyCellBorderWidth:0 0 1px 0 !default; $datatableFooterBorderWidth:0 0 1px 0 !default; $datatableFooterCellPadding:1rem !default; $datatableFooterCellBg:$shade100 !default; $datatableFooterCellTextColor:$shade700 !default; $datatableFooterCellFontWeight:700 !default; $datatableFooterCellBorder:1px solid $shade200 !default; $datatableFooterCellBorderWidth:0 0 1px 0 !default; $datatableResizerHelperBg:$primaryColor !default; $datatableScaleSm:0.5 !default; //schedule $scheduleEventBg:$highlightBg !default; $scheduleEventBorder:1px solid $highlightBg !default; $scheduleEventTextColor:$highlightTextColor !default; //tree $treeNodePadding:.143em 0 !default; $treeNodeLabelPadding:.286em !default; //messages $messagesMargin:1rem 0 !default; $messagesPadding:1.5rem !default; $messagesIconFontSize:1.5rem !default; $messagesBorderWidth:0 0 0 6px !default; $messagesFontWeight:600 !default; $infoMessageBg:#B3E5FC !default; $infoMessageBorder:1px solid #03A9F4 !default; $infoMessageTextColor:#01579B !default; $infoMessageIconColor:#01579B !default; $warnMessageBg:#FFECB3 !default; $warnMessageBorder:1px solid #FFC107 !default; $warnMessageTextColor:#7f6003 !default; $warnMessageIconColor:#7f6003 !default; $errorMessageBg:#FFCDD2 !default; $errorMessageBorder:1px solid #EF5350 !default; $errorMessageTextColor:#B71C1C !default; $errorMessageIconColor:#B71C1C !default; $growlIconFontSize:2rem !default; $growlMargin:0 0 1rem 0 !default; $growlPadding:1rem !default; $messageBorderWidth:0 0 0 3px !default; //overlays $overlayContentBorder:0 none !default; $overlayContainerShadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0,0,0,.12) !default; //dialog $dialogHeaderBorder:0 none !default; $dialogHeaderBg:$shade000 !default; $dialogHeaderTextColor:$shade700 !default; $dialogHeaderFontWeight:700 !default; $dialogHeaderFontSize:1.25rem !default; $dialogHeaderPadding:1rem !default; $dialogContentBorder:0 none !default; $dialogContentBg:$shade000 !default; $dialogContentTextColor:$shade700 !default; $dialogContentPadding:2rem !default; $dialogFooterBorder:0 none !default; $dialogFooterBg:$shade000 !default; $dialogFooterTextColor:$shade700 !default; $dialogFooterPadding:1rem !default; $confirmDialogContentPadding:1rem 2rem !default; $confirmDialogIconFontSize:2.5rem !default; //overlay panel $overlayPanelCloseIconBg:$primaryColor !default; $overlayPanelCloseIconColor:$primaryTextColor !default; $overlayPanelCloseIconHoverBg:$primaryDarkColor !default; $overlayPanelCloseIconHoverColor:$primaryTextColor !default; //tooltip $tooltipBg:#252529 !default; $tooltipTextColor:#ffffff !default; //steps $stepsItemTextColor:$shade600 !default; $stepsItemNumberBorder:1px solid $shade200 !default; $stepsItemNumberColor:$shade700 !default; $stepsItemNumberBg:$shade000 !default; $stepsItemNumberFontSize: 1.143rem !default; $stepsItemNumberWidth: 2rem !default; $stepsItemNumberHeight: 2rem !default; $stepsItemNumberBorderRadius: 50% !default; //progressbar $progressBarHeight:1rem !default; $progressBarBorder:0 none !default; $progressBarBg:#efefef !default; $progressBarValueBg:$primaryColor !default; //menu $breadcrumbPadding:1rem !default; $verticalMenuPadding:.25rem 0 !default; $menuBg:$shade000 !default; $menuBorder:1px solid $shade300 !default; $menuitemTextColor:$shade700 !default; $menuitemIconColor:$shade600 !default; $menuitemHoverBg:$shade200 !default; $menuitemTextHoverColor:$shade700 !default; $menuitemHoverIconColor:$shade700 !default; $menuitemPadding:.75rem 1rem !default; $menuitemMargin:0 !default; $menuitemBorderRadius:0 !default; $menuSeparatorMargin:.25rem 0 !default; $submenuHeaderMargin:0 !default; $submenuHeaderPadding:.75rem 1rem !default; $submenuHeaderBg:#ffffff !default; $submenuHeaderBorder:0 none !default; $submenuHeaderTextColor:$shade700 !default; $submenuHeaderFontWeight:700 !default; $submenuHeaderFontSize:1rem !default; $horizontalMenuPadding: .5rem !default; $horizontalMenuBg: $shade100 !default; $overlayMenuShadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12) !default; //upload $fileItemPadding:1rem !default; //badge and tag $badgeBg:$primaryColor !default; $badgeTextColor:$primaryTextColor !default; $badgeMinWidth:1.5rem !default; $badgeHeight:1.5rem !default; $badgeFontWeight:700 !default; $badgeFontSize:.875rem !default; $tagPadding:.25rem .4rem !default;
Menu is a regular JSF component that supports PrimeFaces MenuModel API, allowing both declarative and programmatic approaches.
xmlns:po="http://primefaces.org/babylon" <po:menu> </po:menu>
Menu has 4 layouts modes; "static", "overlay", "slim" and "horizontal". Layout wrapper element in template.xhtml is used to define which mode to use by adding specific classes. Default is static and here is the list of classes for each mode.
Example layout below always uses the horizontal mode.
<div class="layout-wrapper layout-horizontal"> ... </div>
Layout mode can be dynamic using an EL expression as well using an example bean like guestPreferences so that your users can choose the layout they prefer when using your application.
<div class="layout-wrapper #{guestPreferences.menuMode}"> ... </div>
RTL orintetation for the layout is enabled by adding "layout-rtl" to the main layout-wrapper element.
<div class="layout-wrapper layout-rtl"> ... </div>
In addition to layout options, menu can be styled as "light" or "dark", default mode is dark and in order to enable the light mode, add "layout-menu-light" to the "layout-wrapper" div which is the outmost container of the template. Similarly as the layout mode, using a helper bean like GuestPreferences, the choice can be left to the user as in the demo.
<div class="layout-wrapper layout-menu-light"> ... </div>
<div class="layout-wrapper layout-menu-dark"> ... </div>
Root menuitems of the menu are displayed as readonly and expanded by default which are called grouped submenus. In case you need to make them expandable, wrap the menu structure within a submenu. See groupedMenu.xhtml and ungroupedMenu.xhtml for example.
User profile can either be displayed at the topbar or inside the menu.
babylon Layout uses PrimeIcons v4.0 for layout which is included in the resources and no configuration is required.
Input fields come in two styles, default is outlined with borders around the field whereas filled alternative adds a background color to the field. Applying p-input-filled to an ancestor of an input enables the filled style. If you prefer to use filled inputs in the entire application, use a global container such as document body or the application element to apply the style class.
<div class="p-input-filled"> <p:inputText type="text" /> <p:inputText type="text" /> <p:inputText type="text" /> </div>
The best practice when adding your own extensions is using the scss files under the sass/overrides folder. _layout_variables and _theme_variables files allow overriding the default variables whereas _layout_styles and _theme_styles files can be used to include additional styling. This approach allows seamless updates so your changes are not overriden with the maintenance updates from PrimeTek.
Every change is included in CHANGELOG.md file at the root folder of the distribution along with the instructions to update.