<?xml version="1.0" encoding="UTF-8"?>

-<style title="Arizona rp" export_version="2" base_version_id="2010970" user_selectable="1" description="Arizona RP 2022 By Denly">


-<templates>


-<template title="EWRporta_articles.less" version_string="2.1.0.1" version_id="2101" addon_id="" type="public">

<![CDATA[.porta-article-pager { margin-top: -(@xf-elementSpacer); } .porta-article-loader { display: none; text-align: center; } .porta-article-item { margin-bottom: @xf-elementSpacer; .porta-article-header { display: block; overflow: hidden; position: relative; .porta-header-image { background-position: center; background-size: cover; height: @xf-EWRporta_header_height; } .porta-header-medio { background-position: center; background-size: cover; height: @xf-EWRporta_medio_height; } .porta-header-text { position: absolute; bottom: 0; left: 0; right: 0; .xf-EWRporta_header_title; >span { position: absolute; bottom: 0; left: 0; right: 0; padding: 0 @xf-elementSpacer; } } .porta-header-play { position: absolute; top: 0; bottom: 20px; left: 0; right: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; .far { color: @xf-textColorAttention; font-size: 100px; text-shadow: 1px 1px 0 #000000, 1px -1px 0 #000000, -1px 1px 0 #000000, -1px -1px 0 #000000; } } } .porta-article-date { float: left; padding: @xf-paddingLarge 0; margin-left: @xf-EWRporta_dateblock_margin; .porta-date-block { .xf-messageUserBlock; width: 50px; padding: 10px; text-align: center; text-transform: uppercase; white-space: nowrap; b { display: block; font-size: 1.5em; } } } .message-inner { display: block; } .message-body .bbWrapper { display: inline; } .block-header { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } .porta-masonry { margin: 0 ~"calc(-@{xf-sidebarSpacer} / 2)"; .porta-article-item { display: inline-block; width: ~"calc(100% / @xf-EWRporta_masonry_columns)"; .porta-article-container { margin: 0 ~"calc(@xf-sidebarSpacer / 2)"; } } } .porta-article-status { display: none; .porta-article-ellipse { font-size: 20px; position: relative; width: 4em; height: 1em; margin: 10px auto; .loader-ellipse-dot { display: block; width: 1em; height: 1em; border-radius: 0.5em; background: @xf-textColor; position: absolute; animation-duration: 0.5s; animation-timing-function: ease; animation-iteration-count: infinite; } .loader-ellipse-dot:nth-child(1), .loader-ellipse-dot:nth-child(2) { left: 0; } .loader-ellipse-dot:nth-child(3) { left: 1.5em; } .loader-ellipse-dot:nth-child(4) { left: 3em; } @keyframes reveal { from { transform: scale(0.001); } to { transform: scale(1); } } @keyframes slide { to { transform: translateX(1.5em) } } .loader-ellipse-dot:nth-child(1) { animation-name: reveal; } .loader-ellipse-dot:nth-child(2), .loader-ellipse-dot:nth-child(3) { animation-name: slide; } .loader-ellipse-dot:nth-child(4) { animation-name: reveal; animation-direction: reverse; } } } @media (max-width: @xf-responsiveWide) { .porta-masonry { .porta-article-item { width: ~"calc(100% / @xf-EWRporta_masonry_wide)"; } } } @media (max-width: @xf-responsiveMedium) { .porta-masonry { margin: 0 (-@xf-pageEdgeSpacer / 2); .porta-article-item { width: ~"calc(100% / @xf-EWRporta_masonry_medium)"; .porta-article-date { margin-left: -10px; .porta-date-block { width: auto; padding: 10px 5px; transform: rotate(180deg); writing-mode: vertical-rl; b { display: inline; font-size: initial; } } } } } } @media (max-width: @xf-responsiveNarrow) { .porta-masonry { .porta-article-item { display: block; width: 100%; .porta-article-container { margin: 0; } .porta-article-date { display: none; } } } }]]>

</template>


-<template title="MAIL_CONTAINER" version_string="2.1.0" version_id="2010070" addon_id="XF" type="email">

<![CDATA[<!DOCTYPE html> <html lang="{$xf.language.language_code}" dir="{$xf.language.text_direction}" style="font-size: 62.5%;"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <base href="{$xf.options.boardUrl}/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="format-detection" content="telephone=no"> <title>{$subject}</title> </head> <body dir="{$xf.language.text_direction}" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table id="bodyTable" border="0" width="100%" height="100%" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="top" id="bodyTableContainer"> <table border="0" width="600" cellpadding="0" cellspacing="0" class="container" dir="{$xf.language.text_direction}"> <tr> <td class="header" align="center" valign="top"> <a href="{{ link('canonical:index') }}">{$xf.options.boardTitle}</a> </td> </tr> <tr> <td class="content" align="{{ $xf.isRtl ? 'right' : 'left' }}" valign="top"> {$html|raw} </td> </tr> <tr> <td class="footer" align="center" valign="top"> <div>{{ phrase('visit_board_html', {'board_url': link('canonical:index'), 'board_title': $xf.options.boardTitle}) }}</div> <xf:if contentcheck="true"> <div class="footerExtra"><xf:contentcheck>{{ phrase('email_footer_html') }}</xf:contentcheck></div> </xf:if> </td> </tr> </table> </td> </tr> </table> </body> </html> <mail:text> {$text} ----------------------------- {{ phrase('visit_board_text', {'board_title': $xf.options.boardTitle, 'board_url': link('canonical:index')}) }} {{ phrase('email_footer_text') }} </mail:text>]]>

</template>


-<template title="PAGE_CONTAINER" version_string="2.1.9" version_id="2010970" addon_id="XF" type="public">

<![CDATA[<!DOCTYPE html> <xf:set var="$siteName" value="{$xf.options.boardTitle}" /> <xf:set var="$h1"><xf:h1 fallback="{$siteName}" /></xf:set> <xf:set var="$title"><xf:title formatter="%s | %s" fallback="{$xf.options.boardTitle}" /></xf:set> <xf:set var="$description"><xf:description /></xf:set> <xf:set var="$uix_htmlClasses"></xf:set> <xf:if is="property('uix_pageWidthToggle') != 'disabled'"> <xf:comment> UI.X width toggle class</xf:comment> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_page--{{$uix_pageWidth}}</xf:set> </xf:if> <xf:if is="property('uix_navigationType') == 'sidebarNav'"> <xf:comment> UI.X sidebar navigation toggle class</xf:comment> <xf:if is="!$uix_sidebarNavCollapsed"> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} sidebarNav--active</xf:set> </xf:if> </xf:if> <xf:if is="property('uix_collapsibleSidebar')"> <xf:comment> UI.X sidebar toggle class</xf:comment> <xf:if is="$uix_sidebarCollapsed"> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_sidebarCollapsed</xf:set> </xf:if> </xf:if> <xf:if is="{$uix_showWelcomeSection}"> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_hasWelcomeSection</xf:set> </xf:if> <xf:comment>SectionLinks Breakpoints</xf:comment> <xf:set var="$uix_subNavContentStatic" value="0" /> <xf:comment>--------- COMPONENT MARKUP MACROS --------- Markup for components can/should be added here in an XF:set if we want the components to have variably set locations </xf:comment> <xf:comment> --- Sidebar trigger --- </xf:comment> <xf:set var="$uix_sidebarTrigger__content"> <xf:if is="{$sidebar}"> <xf:if is="property('uix_collapsibleSidebar') && {$uix_canCollapseSidebar}"> <a class="uix_sidebarTrigger__component uix_sidebarTrigger {{ (property('uix_sidebarTriggerPosition') == 'sectionLinks') ? 'p-navgroup-link' : 'button'}}" data-xf-init="tooltip" title="{{ phrase('th_sidebar_uix')}}" rel="nofollow"> <xf:fa icon="fa-ellipsis-v" class="mdi mdi-dots-vertical" /> <span class="uix_sidebarTrigger--phrase">{{ phrase('th_sidebar_uix') }}</span> </a> </xf:if> <xf:if is="property('uix_sidebarMobileCanvas')"> <a class="uix_sidebarCanvasTrigger uix_sidebarTrigger__component p-navgroup-link" data-xf-init="tooltip" title="{{ phrase('th_sidebar_uix')}}"> <xf:fa icon="fa-ellipsis-v" class="mdi mdi-dots-vertical" /> <span class="uix_sidebarTrigger--phrase">{{ phrase('th_sidebar_uix') }}</span> </a> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_sidebarTrigger__component" arg-location="" arg-content=""> <xf:if is="({$location} == property('uix_sidebarTriggerPosition')) || ({$location} == 'navigation')"> {$content} </xf:if> </xf:macro> <xf:comment> --- Search bar --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$uix_search__component"> <xf:if is="$xf.visitor.canSearch()"> <div class="uix_searchBar"> <div class="uix_searchBarInner"> <form action="{{ link('search/search') }}" method="post" class="uix_searchForm" data-xf-init="quick-search"> <a class="uix_search--close"> <xf:fa icon="fa-window-close" class="uix_icon uix_icon--close" /> </a> <xf:textbox autocomplete="off" class="js-uix_syncValue uix_searchInput uix_searchDropdown__trigger" data-uixsync="search" name="keywords" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> <a href="{{ link('search') }}" class="uix_search--settings u-ripple" data-xf-key="{{ phrase('shortcut.search_menu')|for_attr }}" aria-label="{{ phrase('search')|for_attr }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search')|for_attr }}"> <xf:fa icon="fa-cog" class="uix_icon uix_icon--settings" /> </a> <span class="<xf:if is="property('uix_searchButton')">uix_search--submit</xf:if> uix_searchIcon"> <xf:fa icon="fa-search" class="uix_icon uix_icon--search" /> </span> <xf:csrf /> </form> </div> <xf:if is="property('uix_searchIconBehavior') != 'dropdown'"> <a class="uix_searchIconTrigger p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search u-ripple" aria-label="{{ phrase('search') }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search') }}"> <i aria-hidden="true"></i> </a> </xf:if> <xf:if is="property('uix_searchIconBehavior') != 'expand'"> <a href="{{ link('search') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search u-ripple js-uix_minimalSearch__target" data-xf-click="menu" aria-label="{{ phrase('search') }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search') }}"> <i aria-hidden="true"></i> </a> </xf:if> <div class="menu menu--structural menu--wide" data-menu="menu" aria-hidden="true"> <form action="{{ link('search/search') }}" method="post" class="menu-content" data-xf-init="quick-search"> <h3 class="menu-header">{{ phrase('search') }}</h3> <!--[XF:search_menu:above_input]--> <div class="menu-row"> <xf:if is="$searchConstraints"> <div class="inputGroup inputGroup--joined"> <xf:textbox name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> <xf:select name="constraints" class="js-quickSearch-constraint" aria-label="{{ phrase('search_within') }}"> <xf:option value="">{{ phrase('everywhere') }}</xf:option> <xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint"> <xf:option value="{$constraint|json}">{$constraintName}</xf:option> </xf:foreach> </xf:select> </div> <xf:else /> <xf:textbox name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> </xf:if> </div> <!--[XF:search_menu:above_title_only]--> <div class="menu-row"> <xf:checkbox standalone="true"><xf:option name="c[title_only]" label="{{ phrase('search_titles_only') }}" /></xf:checkbox> </div> <!--[XF:search_menu:above_member]--> <div class="menu-row"> <div class="inputGroup"> <span class="inputGroup-text" id="ctrl_search_menu_by_member">{{ phrase('by:') }}</span> <input type="text" class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member')|for_attr }}" aria-labelledby="ctrl_search_menu_by_member" /> </div> </div> <div class="menu-footer"> <span class="menu-footer-controls"> <xf:button type="submit" class="button--primary" icon="search" /> <xf:button href="{{ link('search') }}">{{ phrase('advanced_search...') }}</xf:button> </span> </div> <xf:csrf /> </form> </div> <div class="menu menu--structural menu--wide uix_searchDropdown__menu" aria-hidden="true"> <form action="{{ link('search/search') }}" method="post" class="menu-content" data-xf-init="quick-search"> <!--[XF:search_menu:above_input]--> <xf:if is="$searchConstraints"> <div class="menu-row"> <div class="inputGroup"> <input name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" type="hidden" /> <xf:select name="constraints" class="js-quickSearch-constraint" aria-label="{{ phrase('search_within') }}"> <xf:option value="">{{ phrase('everywhere') }}</xf:option> <xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint"> <xf:option value="{$constraint|json}">{$constraintName}</xf:option> </xf:foreach> </xf:select> </div> </div> <xf:else /> <input name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" type="hidden" /> </xf:if> <!--[XF:search_menu:above_title_only]--> <div class="menu-row"> <xf:checkbox standalone="true"><xf:option name="c[title_only]" label="{{ phrase('search_titles_only') }}" /></xf:checkbox> </div> <!--[XF:search_menu:above_member]--> <div class="menu-row"> <div class="inputGroup"> <span class="inputGroup-text">{{ phrase('by:') }}</span> <input class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member') }}" /> </div> </div> <div class="menu-footer"> <span class="menu-footer-controls"> <xf:button type="submit" class="button--primary" icon="search" /> <xf:button href="{{ link('search') }}" rel="nofollow">{{ phrase('th_advanced_uix...') }}</xf:button> </span> </div> <xf:csrf /> </form> </div> </div> </xf:if> </xf:set> </xf:if> <xf:macro name="uix_search__component" arg-content="!" arg-location="!"> <xf:if is="(property('uix_searchPosition') == {$location}) || ({$location} == 'navigation')"> {$content} </xf:if> </xf:macro> <xf:comment> --- whats new --- </xf:comment> <xf:if is="!property('uix_removeWhatsNewButtons')"> <xf:set var="$uix_whatsNew__component"> <a href="{{ link('whats-new') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew" title="{{ phrase('whats_new')|for_attr }}"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span> </a> </xf:set> </xf:if> <xf:macro name="uix_whatsNew__component" arg-content="!" arg-location="!"> <xf:if is="({$xf.visitor.user_id} && property('uix_userTabsPosition') == {$location}) || ({$location} == 'navigation')"> {$content} </xf:if> </xf:macro> <xf:comment> --- login tabs --- </xf:comment> <xf:set var="$uix_loginTabs__component"> <xf:if is="{$template} != 'login'"> <xf:if is="property('uix_loginStyle') == 'dropdown'"> <a href="{{ link('login') }}" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--logIn" data-xf-click="menu"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('login') }}"></div> <xf:elseif is="property('uix_loginStyle') == 'modal'" /> <a href="{{ link('login') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--logIn" data-xf-click="overlay" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <xf:elseif is="property('uix_loginStyle') == 'link'" /> <a href="{{ link('login') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--logIn" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <xf:elseif is="property('uix_loginStyle') == 'slidingPanel'" /> <a href="{{ link('login') }}" id="uix_loginPanel--trigger" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--logIn" rel="nofollow" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> </xf:if> </xf:if> <xf:if is="{$template} != 'register_form'"> <xf:if is="property('uix_loginStyle') != 'link'"> <a href="{{ link('register') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--register" data-xf-click="overlay" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('register') }}</span> </a> <xf:else /> <a href="{{ link('register') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--register" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('register') }}</span> </a> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_loginTabs__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_loginTriggerPosition') == {$location} || ({$location} == 'navigation')"> <xf:if is="{$location} == 'tablinks'"> </xf:if> {$content} </xf:if> </xf:macro> <xf:comment> --- user tabs --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$uix_userTabs__component"> <xf:if is="$xf.visitor.user_state == 'rejected' OR $xf.visitor.user_state == 'disabled'"> <a href="{{ link('account') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--user"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> <span class="p-navgroup-linkText">{$xf.visitor.username}</span> </a> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="p-navgroup-link"> <span class="p-navgroup-linkText">{{ phrase('log_out') }}</span> </a> <xf:else /> <a href="{{ link('account') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--user" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.visitor_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" aria-expanded="false" aria-haspopup="true"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> <span class="p-navgroup-linkText">{$xf.visitor.username}</span> </a> <div class="menu menu--structural menu--wide menu--account" data-menu="menu" aria-hidden="true" data-href="{{ link('account/visitor-menu') }}" data-load-target=".js-visitorMenuBody"> <div class="menu-content js-visitorMenuBody"> <div class="menu-row"> {{ phrase('loading...') }} </div> </div> </div> <a href="{{ link('conversations') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--conversations js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.conversations_unread|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.conversations_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" aria-label="{{ phrase('inbox')|for_attr }}" aria-expanded="false" aria-haspopup="true"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('nav_inbox') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('conversations/popup') }}" data-nocache="true" data-load-target=".js-convMenuBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('conversations') }}</h3> <div class="js-convMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--split"> <span class="menu-footer-main"> <a href="{{ link('conversations') }}">{{ phrase('show_all...') }}</a> </span> <xf:if is="$xf.visitor.canStartConversation()"> <span class="menu-footer-opposite"> <a href="{{ link('conversations/add') }}">{{ phrase('start_new_conversation') }}</a> </span> </xf:if> </div> </div> </div> <a href="{{ link('account/alerts') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--alerts js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.alerts_unread|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.alerts_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" aria-label="{{ phrase('alerts')|for_attr }}" aria-expanded="false" aria-haspopup="true"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('nav_alerts') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('account/alerts-popup') }}" data-nocache="true" data-load-target=".js-alertsMenuBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('alerts') }}</h3> <div class="js-alertsMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--split"> <span class="menu-footer-main"> <a href="{{ link('account/alerts') }}">{{ phrase('show_all...') }}</a> </span> <span class="menu-footer-opposite"> <a href="{{ link('account/preferences') }}">{{ phrase('preferences') }}</a> </span> </div> </div> </div> </xf:if> </xf:set> </xf:if> <xf:macro name="uix_userTabs__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_userTabsPosition') == {$location} || ({$location} == 'navigation')"> <xf:if is="{$location} == 'tablinks'"> </xf:if> {$content} </xf:if> </xf:macro> <xf:set var="$uix_socialMediaContent"> <xf:include template="uix_socialMedia" /> </xf:set> <xf:macro name="uix_socialMedia__component" arg-content="" arg-location=""> <xf:if is="(property('uix_socialMediaPosition') == {$location}) || ({$location} == 'copyright')"> {$content} </xf:if> </xf:macro> <xf:comment> --- Visitor tabs --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="" arg-searchContent="!" arg-location="!" arg-whatsNewContent="!" arg-visitorContent="!" arg-loginTabsContent="!"> <xf:if contentcheck="true"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="p-navgroup p-account {{ $xf.visitor.user_id ? 'p-navgroup--member' : 'p-navgroup--guest' }}"> <xf:contentcheck> <xf:if is="$xf.visitor.user_id"> <xf:macro name="uix_userTabs__component" arg-content="{$visitorContent}" arg-location="{$location}" /> <xf:else /> <xf:macro name="uix_loginTabs__component" arg-content="{$loginTabsContent}" arg-location="{$location}" /> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-navgroup p-discovery{{ !$xf.visitor.canSearch() ? ' p-discovery--noSearch' : '' }}"> <xf:contentcheck> <xf:macro name="uix_whatsNew__component" arg-content="{$whatsNewContent}" arg-location="{$location}" /> <xf:macro name="uix_search__component" arg-content="{$searchContent}" arg-location="{$location}" /> </xf:contentcheck> </div> </xf:if> <xf:macro name="uix_socialMedia__component" arg-content="{$socialMediaContent}" arg-location="{$location}" /> </xf:contentcheck> </xf:if> </xf:macro> </xf:if> <xf:comment> --- Titlebar --- </xf:comment> <xf:set var="$uix_titlebar__component"> <xf:if is="!{$uix_hidePageTitle} || ( {$pageAction} && !property('uix_pageActionBreadcrumb') && (!property('uix_removePageAction') || {{ !in_array({$template}, ['forum_list', 'forum_new_posts', 'thtopics_forum_newest_posts', 'thtrending_trending_view', 'thtopics_forum_latest_threads', 'thtopics_topic_list']) }} ) )"> <xf:if is="$headerHtml is not empty"> <div class="p-body-header"> <div class="pageContent"> {$headerHtml|raw} </div> </div> <xf:elseif contentcheck="true" /> <div class="p-body-header"> <div class="pageContent"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="uix_headerInner"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="p-title {{ $noH1 ? 'p-title--noH1' : '' }}"> <xf:contentcheck> <xf:if is="!$noH1"> <h1 class="p-title-value">{$h1}</h1> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if is="$description is not empty"> <div class="p-description">{$description}</div> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="uix_headerInner--opposite"> <xf:contentcheck> <xf:if is="!property('uix_pageActionBreadcrumb') && (!property('uix_removePageAction') || ({$template} != 'forum_list') )"> <xf:if contentcheck="true"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </xf:if> </xf:if> <xf:macro name="uix_sidebarTrigger__component" arg-content="{$uix_sidebarTrigger__content}" arg-location="titlebar" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_titlebar__component" arg-location="!" arg-content="!"> <xf:if is="property('uix_titlebarLocation') === {$location}"> {$content} </xf:if> </xf:macro> <xf:comment> --- Sidebar --- </xf:comment> <xf:set var="$uix_sidebar__component"> <xf:if is="$sidebar"> <div uix_component="MainSidebar" class="p-body-sidebar"> <div data-ocm-class="offCanvasMenu-backdrop"></div> <div class="block-container"> <h3 class="block-minorHeader">Меню быстрого доступа</h3> <div class="block-body block-row"> <style> hr { border: none; background-color: @xf-paletteColor1; height: 0.5px; } .quick-access .button { padding: 1px 0; width: 100%; height: 28px; border: 1px solid #4d5460; } .button, a.button { display: inline-block; border: 1px solid transparent; -webkit-transition: background-color .2s ease; transition: background-color .2s ease; font-size: 15px; font-weight: 400; border-radius: 8px; padding-top: 0; padding-right: 15px; padding-bottom: 0; padding-left: 15px; text-align: center; outline: none; line-height: 35px; height: 35px; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; box-sizing: content-box; -webkit-appearance: none; border: none; white-space: nowrap; border-radius: 4px; color: #c83637; background: transparent; border-color: rgba(20,20,20,0); } </style> <ol class="listPlain quick-access"> <li><a href="http://forum.arizona-rp.com/index.php?threads/rules/" class="button rippleButton"><span class="button-text">Правила проекта</span></a></li> <hr> <li><a href="http://forum.arizona-rp.com/index.php?threads/forum-rules/" class="button rippleButton"><span class="button-text">Правила форума</span></a></li> <hr> <li><a href="http://forum.arizona-rp.com/forums/525/" class="button rippleButton"><span class="button-text">Жалобы Phoenix</span></a></li> <hr> <li><a href="http://forum.arizona-rp.com/forums/523/" class="button rippleButton"><span class="button-text">Жалобы Tucson</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/521/" class="button rippleButton"><span class="button-text">Жалобы Scottdale</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/519/" class="button rippleButton"><span class="button-text">Жалобы Chandler</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/540/" class="button rippleButton"><span class="button-text">Жалобы Brainburg</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/682/" class="button rippleButton"><span class="button-text">Жалобы Saint Rose</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/754/" class="button rippleButton"><span class="button-text">Жалобы Mesa</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/838/" class="button rippleButton"><span class="button-text">Жалобы Red-Rock</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/955/" class="button rippleButton"><span class="button-text">Жалобы Yuma</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1054/" class="button rippleButton"><span class="button-text">Жалобы Surprise</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1133/" class="button rippleButton"><span class="button-text">Жалобы Prescott</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1233/" class="button rippleButton"><span class="button-text">Жалобы Glendale</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1291/" class="button rippleButton"><span class="button-text">Жалобы Kingman</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1398/" class="button rippleButton"><span class="button-text">Жалобы Winslow</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1470/" class="button rippleButton"><span class="button-text">Жалобы Payson</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/forums/1586/" class="button rippleButton"><span class="button-text">Жалобы Gilbert</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/categories/1688/" class="button rippleButton"><span class="button-text">Жалобы Show-Low</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/categories/1780/" class="button rippleButton"><span class="button-text">Жалобы Casa-Grande</span></a></li> <hr> <li><a href="https://forum.arizona-rp.com/categories/1910/" class="button rippleButton"><span class="button-text">Жалобы Page</span></a></li> </ol> </div> </div> <div class="uix_sidebarInner {{ (property('uix_stickySidebar') == 'top') ? ' uix_stickyBodyElement' : '' }}"> <div class="uix_sidebar--scroller"> <xf:ad position="container_sidebar_above" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="sidebar" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:foreach loop="$sidebar" value="$sidebarHtml"> {$sidebarHtml} </xf:foreach> <xf:ad position="container_sidebar_below" /> </div> </div> </div> </xf:if> </xf:set> <xf:macro name="uix_sidebar__component" arg-location="!" arg-content="!"> <xf:if is="property('uix_sidebarLocation') === {$location}"> {$content} </xf:if> </xf:macro> <xf:comment> --- Logo --- </xf:comment> <xf:set var="$uix_logo__component"> <div class="p-header-logo p-header-logo--image"> <a class="uix_logo" href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}"> <xf:if is="property('publicLogoUrl') || property('publicLogoUrl2x')"> <img src="{{ base_url(property('publicLogoUrl')) }}" alt="{$xf.options.boardTitle}" {{ property('publicLogoUrl2x') ? 'srcset="' . base_url(property('publicLogoUrl2x')) . ' 2x"' : '' }} /> <xf:else /> <div class="uix_logo--text"><xf:if is="{{ property('uix_logoIcon') }}"><i class="{{ property('uix_logoIcon') }} uix_logoIcon"></i></xf:if>{{ property('uix_logoText') }}</div> </xf:if> </a> <xf:if is="property('uix_logoSmall')"> <a class="uix_logoSmall" href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}"> <img src="{{ base_url(property('uix_logoSmall')) }}" alt="{$xf.options.boardTitle}" /> </a> </xf:if> </div> </xf:set> <xf:macro name="uix_logo__component" arg-content="!"> {$content} </xf:macro> <xf:comment> --- staff bar --- </xf:comment> <xf:set var="$uix_staffbar__component"> <xf:if contentcheck="true"> <div class="p-staffBar <xf:if is="property('uix_stickyStaffBar')">uix_stickyBar</xf:if>"> <div class="pageContent"> <xf:contentcheck> <xf:macro name="uix_socialMedia__component" arg-content="{$uix_socialMediaContent}" arg-location="staffBarLeft" /> <xf:if contentcheck="true"> <xf:comment> --- add primary side staff bar content here ---</xf:comment> <xf:set var="$uix_alwaysStaffBar" value="1" /> <div class="p-staffBar-inner hScroller" data-xf-init="h-scroller"> <div class="hScroller-scroll"> <xf:contentcheck> <xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total"> <a href="{{ link('approval-queue') }}" class="p-staffBar-link badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}"> {{ phrase('approval_queue') }} </a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total"> <a href="{{ link('reports') }}" class="p-staffBar-link badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}" data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <xf:if contentcheck="true"> <a class="p-staffBar-link menuTrigger" data-xf-key="alt+m" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator') }}</a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('moderator_tools') }}</h4> <xf:contentcheck> <!--[XF:mod_tools_menu:top]--> <xf:if is="$xf.visitor.is_moderator"> <a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId"> <a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? 'Last report update: ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <!--[XF:mod_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </xf:if> <xf:if is="$xf.visitor.is_admin"> <a href="{{ base_url('admin.php') }}" class="p-staffBar-link" target="_blank">{{ phrase('admin') }}</a> </xf:if> <xf:if contentcheck="true"> <a href="{{ base_url('admin.php') }}" target="_blank" class="p-staffBar-link menuTrigger uix_adminTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true"> <xf:if is="$xf.visitor.is_admin"> {{ phrase('admin') }} <xf:else /> {{ phrase('moderator') }} </xf:if> </a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('moderator_tools') }}</h4> <xf:contentcheck> <!--[XF:mod_tools_menu:top]--> <xf:if is="$xf.visitor.is_admin"> <a href="{{ base_url('admin.php') }}" target="_blank" class="menu-linkRow">{{ phrase('admin') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator"> <a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId"> <a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? 'Last report update: ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total"> <a href="{{ link('approval-queue') }}" class="menu-linkRow badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}"> {{ phrase('approval_queue') }} </a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total"> <a href="{{ link('reports') }}" class="menu-linkRow badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}" data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update') . date_time($xf.session.reportCounts.lastBuilt) : '' }}"> {{ phrase('reports') }} </a> </xf:if> <!--[XF:mod_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:if is="property('uix_staffBarBreakpoint') != '100%'"> <xf:set var="$uix_responsiveStaffBar" value="1" /> <xf:else /> <xf:set var="$uix_alwaysStaffBar" value="1" /> </xf:if> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="staffBar" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:set> <xf:if is="!{$uix_alwaysStaffBar} && {$uix_responsiveStaffBar}"> <xf:set var="$uix_htmlClasses">{$uix_htmlClasses} uix_responsiveStaffBar</xf:set> </xf:if> <xf:macro name="uix_staffbar__component" arg-content="!"> {$content} </xf:macro> <xf:comment> --- section links --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$subNavHtml"> <xf:if contentcheck="true"> <div class="p-sectionLinks"> <div class="pageContent"> <xf:contentcheck> <xf:if is="property('uix_viewportWidthRemoveSubNav') != '100%'"> <xf:if is="$selectedNavChildren is not empty"> <xf:set var="$uix_subNavContentStatic" value="1" /> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_hasSectionLinks</xf:set> <div class="p-sectionLinks-inner hScroller" data-xf-init="h-scroller"> <div class="hScroller-scroll"> <ul class="p-sectionLinks-list"> <xf:foreach loop="$selectedNavChildren" key="$navId" value="$navEntry" i="$i"> <li> <xf:macro name="nav_entry" arg-navId="{$navId}" arg-nav="{$navEntry}" arg-shortcut="alt+{$i}" /> </li> </xf:foreach> </ul> </div> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:contentcheck> <xf:if contentcheck="true"> <xf:set var="$uix_subNavContentStatic" value="1" /> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="tablinks" /> </xf:contentcheck> </xf:if> <xf:macro name="uix_sidebarTrigger__component" arg-content="{$uix_sidebarTrigger__content}" arg-location="sectionLinks" /> </xf:contentcheck> </div> </xf:if> </xf:if> </xf:contentcheck> </div> </div> <xf:elseif is="{$selectedNavEntry}" /> <div class="p-sectionLinks p-sectionLinks--empty"></div> </xf:if> </xf:set> </xf:if> <xf:comment> --- UIX sidebar navigation --- </xf:comment> <xf:set var="$uix_sidebarNav__component"> <div class="uix_sidebarNav"> <div class="uix_sidebarNav__inner <xf:if is="property('uix_stickySidebar') != 'disabled'"> uix_stickyBodyElement</xf:if>"> <div class="uix_sidebar--scroller"> <xf:if contentcheck="true"> <ul class="uix_sidebarNavList js-offCanvasNavSource"> <xf:contentcheck> <xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}"> <li class="uix_sidebarNavList__listItem"> <xf:macro name="nav_entry" arg-sidebarNav="1" arg-navId="{$navSection}" arg-nav="{$navEntry}" arg-selected="{{ $navSection == $pageSection }}" arg-shortcut="{$i}"/> </li> </xf:foreach> </xf:contentcheck> </ul> </xf:if> <xf:if is="$xf.visitor.user_id"> <ul class="uix_sidebarNavList"> <li><div class="p-navEl u-ripple {{$uix_myAccountLinks == 'profile' ? 'is-selected' : ''}}"><div class="p-navEl__inner"><a data-nav-id="profile" href="{{ link('members', $xf.visitor) }}" class="p-navEl-link">{{ phrase('th_profile_uix') }}</a></div></div></li> <li><div class="p-navEl u-ripple {{$uix_myAccountLinks == 'alerts' ? 'is-selected' : ''}}"><div class="p-navEl__inner"><a data-nav-id="alerts" href="{{ link('account/alerts') }}" class="p-navEl-link">{{ phrase('alerts')}}</a></div></div></li> <li><div class="p-navEl u-ripple {{$uix_myAccountLinks == 'settings' ? 'is-selected' : ''}}"><div class="p-navEl__inner"><a data-nav-id="settings" href="{{ link('account/preferences') }}" class="p-navEl-link">{{ phrase('settings')}}</a></div></div></li> </ul> </xf:if> <xf:if contentcheck="true"> <div class="uix_sidebarNav__inner__widgets"> <xf:contentcheck> {$uix_sidebarNavWidgets|raw} </xf:contentcheck> </div> </xf:if> </div> </div> </div> </xf:set> <xf:macro name="uix_sidebarNav__component" arg-content="!"> {$content} </xf:macro> <xf:comment> --- UIX main tab component --- </xf:comment> <xf:set var="$uix_mainTabsOffset"> [ { "breakpoint": "0", "offset": "0" } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar}"> ,{ "breakpoint": "{{ property('uix_staffBarBreakpoint')|escape('json') }}", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> <xf:if is="{$uix_alwaysStaffBar}"> ,{ "breakpoint": "0", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> <xf:if is="{{property('publicNavSticky')}} != 'none'"> ,{ "breakpoint": "0", "offset": "{{property('uix_stickyNavHeight')|escape('json')}}" } <xf:if is="{{property('publicNavSticky')}} == 'all' && {$uix_subNavContentStatic}" /> ,{ "breakpoint": "{{ property('uix_viewportWidthRemoveSubNav')|escape('json') }}", "offset": "{{(property('uix_stickySectionLinkHeight'))|escape('json')}}" } </xf:if> ] </xf:set> <xf:set var="$uix_mainTabComponent"> <xf:if contentcheck="true"> <div class="block uix_mainTabBar <xf:if is="{{ property('uix_mainTabsSticky')}}">uix_stickyBar</xf:if>" data-top-offset-breakpoints="{$uix_mainTabsOffset|for_attr}"> <div class="block-tabHeader tabs hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <xf:contentcheck> <xf:if is="{$uix_mainTabSets}"> <xf:set var="$uix_hasMainTabs" value="1" /> <xf:macro template="uix_mainTabSets" name="{$uix_mainTabSets}" arg-activeTab="{$uix_mainTabActive}" /> </xf:if> </xf:contentcheck> </span> </div> </div> </xf:if> </xf:set> <xf:macro name="uix_mainTabComponent" arg-content="!" arg-location="!"> <xf:if is="property('uix_tabBarLocation') === {$location} && property('uix_enableMainTabs')"> {{$content}} </xf:if> </xf:macro> <xf:comment> --- Canvases --- </xf:comment> <xf:macro name="uix_canvasTab" arg-icon="!" arg-location="!" arg-canvas="!" arg-type="!"> <xf:if is="{$location} == {$canvas}"> <div class="uix_canvasTab uix_canvasTab__{{$type}}" data-target="uix_canvasPanel__{{$type}}"> <xf:fa icon="fa-{$icon}" class="uix_icon uix_icon--{$icon}" /> </div> </xf:if> </xf:macro> <xf:macro name="uix_canvasTabs" arg-location="!"> <div class="uix_canvas__tabs"> <xf:macro name="uix_canvasTab" arg-icon="list" arg-type="navigation" arg-location="{{property('uix_canvas_location_navigation')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="grid" arg-type="sidebar" arg-location="{{property('uix_canvas_location_sidebar')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="user" arg-type="account" arg-location="{{property('uix_canvas_location_visitorTabs')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="email" arg-type="conversations" arg-location="{{property('uix_canvas_location_visitorTabs')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="alert" arg-type="alerts" arg-location="{{property('uix_canvas_location_visitorTabs')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="star" arg-type="custom" arg-location="{{property('uix_canvas_location_custom')}}" arg-canvas="{$location}"/> </div> </xf:macro> <xf:comment> <xf:set var="$uix_whatsNew__component"> <a href="{{ link('whats-new') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew" aria-label="{{ phrase('whats_new')|for_attr }}" title="{{ phrase('whats_new') }}"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span> </a> </xf:set> <xf:macro name="uix_whatsNew__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_userTabsPosition') == {$location}"> {$content} </xf:if> </xf:macro> </xf:comment> <xf:comment> --- breadcrumb --- </xf:comment> <xf:if is="!{$uix_hideBreadcrumb}"> <xf:set var="$uix_breadcrumbCrumbContent"> <xf:set var="$position" value="{{ 0 }}" /> <xf:set var="$rootBreadcrumb" value="{$navTree.{$xf.options.rootBreadcrumb}}" /> <xf:if is="$rootBreadcrumb AND $rootBreadcrumb.href != $xf.uri"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$rootBreadcrumb.href}" arg-value="{$rootBreadcrumb.title}" /> </xf:if> <xf:if is="$selectedNavEntry && $selectedNavEntry.href && $selectedNavEntry.href != $xf.uri && $selectedNavEntry.href != $rootBreadcrumb.href"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$selectedNavEntry.href}" arg-value="{$selectedNavEntry.title}" /> </xf:if> <xf:foreach loop="$breadcrumbs" value="$breadcrumb" if="$breadcrumb.href != $xf.uri"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$breadcrumb.href}" arg-value="{$breadcrumb.value}" /> </xf:foreach> </xf:set> </xf:if> <xf:set var="$breadcrumbCount">{{ count($breadcrumbs)|default(0) }}</xf:set> <xf:set var="$navEntryCount">{{ $selectedNavEntry == null ? 0 : 1 }}</xf:set> <xf:if is="{$uix_breadcrumbCrumbContent} && ({{ ($navEntryCount|escape + $breadcrumbCount|escape) != 1 }} || !property('uix_hideSingleCrumb'))"> <xf:set var="$uix_breadcrumbHasCrumbs" value="1" /> </xf:if> <xf:macro name="breadcrumbs" arg-breadcrumbHasCrumbs="!" arg-crumbContent="!" arg-variant=""> <xf:if contentcheck="true"> <div class="breadcrumb block {{ $variant ? 'p-breadcrumb--' . $variant : '' }}"> <div class="pageContent"> <xf:contentcheck> <xf:if is="{$breadcrumbHasCrumbs}"> <xf:if contentcheck="true"> <ul class="p-breadcrumbs {{ $variant ? 'p-breadcrumbs--' . $variant : '' }}" itemscope itemtype="https://schema.org/BreadcrumbList"> <xf:contentcheck> {{ $crumbContent }} </xf:contentcheck> </ul> </xf:if> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:macro> <xf:macro name="crumb" arg-href="!" arg-value="!" arg-position="{{ 0 }}"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a href="{$href}" itemprop="item"> <xf:if is="{$href} == {$xf.homePageUrl} && property('uix_homeCrumbIcon')"> <xf:fa icon="fa-home" class="uix_icon uix_icon--home" /> <span style="display: none;" itemprop="name">{$value}</span> <xf:else /> <span itemprop="name">{$value}</span> </xf:if> </a> <xf:if is="$position"><meta itemprop="position" content="{$position}" /></xf:if> </li> </xf:macro> <xf:comment> --- Top breadcrumb ---</xf:comment> <xf:set var="$uix_topBreadcrumb__component"> <xf:ad position="container_breadcrumb_top_above" /> <xf:macro name="breadcrumbs" arg-crumbContent="{$uix_breadcrumbCrumbContent}" arg-breadcrumbHasCrumbs="{$uix_breadcrumbHasCrumbs}" /> <xf:ad position="container_breadcrumb_top_below" /> </xf:set> <xf:macro name="uix_topBreadcrumb__component" arg-location="" arg-content="!"> <xf:if is="property('uix_topBreadcrumbLocation') === {$location}"> {$content} </xf:if> </xf:macro> <xf:comment> --- bottom breadcrumb --- </xf:comment> <xf:set var="$uix_bottomBreadcrumb__component"> <xf:if is="!property('uix_removeBottomBreadcrumb')"> <xf:ad position="container_breadcrumb_bottom_above" /> <xf:macro name="breadcrumbs" arg-crumbContent="{$uix_breadcrumbCrumbContent}" arg-breadcrumbHasCrumbs="{$uix_breadcrumbHasCrumbs}" arg-variant="bottom" /> <xf:ad position="container_breadcrumb_bottom_below" /> </xf:if> </xf:set> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_bottomBreadcrumbLocation') == {$location}"> {$content} </xf:if> </xf:macro> <xf:comment>------ NOTICES ---------</xf:comment> <xf:set var="$uix_notices"> <xf:if is="!{$uix_hideNotices}"> <xf:if is="$notices.block"> <xf:macro template="notice_macros" name="notice_list" arg-type="block" arg-notices="{$notices.block}" /> </xf:if> <xf:if is="$notices.scrolling"> <xf:macro template="notice_macros" name="notice_list" arg-type="scrolling" arg-notices="{$notices.scrolling}" /> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_notices" arg-location="!" arg-content="!"> <xf:if is="{$location} == property('uix_noticeLocation')"> {{$content}} </xf:if> </xf:macro> <xf:comment>------ FOOTER ---------</xf:comment> <xf:set var="$uix_footer"> <footer class="p-footer" id="footer"> <xf:if is="!{$uix_hideExtendedFooter} && property('uix_enableExtendedFooter')"> <xf:include template="uix_extendedFooter" /> </xf:if> <div class="p-footer-inner"> <div class="pageContent"> <div class="p-footer-row"> <xf:if contentcheck="true"> <div class="p-footer-row-main"> <ul class="p-footer-linkList p-footer-choosers"> <xf:contentcheck> <xf:if is="(property('uix_pageWidthToggle') != 'disabled') && $uix_canTogglePageWidth"> <li><a id="uix_widthToggle--trigger" data-xf-init="tooltip" title="{{ phrase('th_toggle_width_uix') }}" rel="nofollow"><xf:fa icon="fa-compress-alt" class="uix_icon uix_icon--collapse" /></a></li> </xf:if> <xf:if is="$xf.visitor.canChangeStyle() && !{{ property('uix_hideStyleChoose') }}"> <li><a href="{{ link('misc/style') }}" data-xf-click="overlay" data-xf-init="tooltip" title="{{ phrase('style_chooser') }}" rel="nofollow">{$xf.style.title}</a></li> </xf:if> <xf:if is="$xf.visitor.canChangeLanguage()"> <li><a href="{{ link('misc/language') }}" data-xf-click="overlay" data-xf-init="tooltip" title="{{ phrase('language_chooser') }}" rel="nofollow"><i class="fa fa-globe" aria-hidden="true"></i> {$xf.language.title}</a></li> </xf:if> </xf:contentcheck> </ul> </div> </xf:if> </div> <div class="p-footer-row-opposite"> <ul class="p-footer-linkList"> <xf:if is="$xf.visitor.canUseContactForm()"> <xf:if is="$xf.contactUrl"> <li><a href="{$xf.contactUrl}" data-xf-click="{{ ($xf.options.contactUrl.overlay OR $xf.options.contactUrl.type == 'default') ? 'overlay' : '' }}">{{ phrase('contact_us') }}</a></li> </xf:if> </xf:if> <xf:if is="$xf.tosUrl"> <li><a href="{$xf.tosUrl}">{{ phrase('terms_and_rules') }}</a></li> </xf:if> <xf:if is="$xf.privacyPolicyUrl"> <li><a href="{$xf.privacyPolicyUrl}">{{ phrase('privacy_policy') }}</a></li> </xf:if> <xf:if is="$xf.helpPageCount"> <li><a href="{{ link('help') }}">{{ phrase('help') }}</a></li> </xf:if> <xf:if is="$xf.homePageUrl"> <li><a href="{$xf.homePageUrl}">{{ phrase('home') }}</a></li> </xf:if> <li><a href="#top" title="{{ phrase('top') }}" data-xf-click="scroll-to"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></li> <li><a href="{{ link('forums/index.rss', '-') }}" target="_blank" class="p-footer-rssLink" title="{{ phrase('rss')|for_attr }}"><span aria-hidden="true"><i class="fa fa-rss"></i><span class="u-srOnly">{{ phrase('rss') }}</span></span></a></li> </ul> </div> </div> </div> <div class="p-footer-copyrightRow"> <div class="pageContent"> <div class="uix_copyrightBlock"> <xf:if contentcheck="true"> <div class="p-footer-copyright"> <xf:contentcheck> <xf:copyright /> <xf:callback class="ThemeHouse\Core\Branding" method="renderStyleBranding" /><xf:set var="$thBrandingDisplayed" value="1" /> {{ phrase('extra_copyright') }} </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-footer-debug"> <xf:contentcheck> <xf:macro template="debug_macros" name="debug" arg-controller="{$controller}" arg-action="{$actionMethod}" arg-template="{$template}" /> </xf:contentcheck> </div> </xf:if> </div> <xf:comment> <xf:macro name="uix_socialMedia" arg-location="copyright" template="uix_socialMedia" /> </xf:comment> <xf:macro name="uix_socialMedia__component" arg-content="{$uix_socialMediaContent}" arg-location="copyright" /> </div> </div> </footer> </xf:set> <xf:macro name="uix_footer" arg-insideContent="!" arg-location="!" arg-content="!"> <xf:if is="($insideContent && {$location} == 'insideContent') || ($location == 'bottom' && !$insideContent)"> {{$content}} </xf:if> </xf:macro> <xf:comment>------ END COMPONENT MARKUP MACROS ---------</xf:comment> <xf:set var="$thUixFontSize" value="{{ 62.5 * (14 + $xf.visitor.Option.thuix_font_size * 2) / 14 }}" /> <html id="XF" lang="{$xf.language.language_code}" dir="{$xf.language.text_direction}" style="font-size: {$thUixFontSize}%;" data-app="public" data-template="{$template}" data-container-key="{$containerKey}" data-content-key="{$contentKey}" data-logged-in="{{ $xf.visitor.user_id ? 'true' : 'false' }}" data-cookie-prefix="{$xf.cookie.prefix}" data-csrf="{{ csrf_token()|escape('js') }}" class="has-no-js {{ $template ? 'template-' . $template : '' }} {$uix_htmlClasses} {$uix_additionalHtmlClasses}" {{ $xf.runJobs ? ' data-run-jobs=""' : '' }}> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <xf:comment> -- moved to top to use in macros <xf:set var="$siteName" value="{$xf.options.boardTitle}" /> <xf:set var="$h1"><xf:h1 fallback="{$siteName}" /></xf:set> <xf:set var="$title"><xf:title formatter="%s | %s" fallback="{$xf.options.boardTitle}" /></xf:set> <xf:set var="$description"><xf:description /></xf:set> </xf:comment> <title>{$title}</title> <xf:foreach loop="$head" value="$headTag"> {$headTag} </xf:foreach> <xf:if is="!$head.meta_site_name && $siteName is not empty"> <xf:macro template="metadata_macros" name="site_name" arg-siteName="{$siteName}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_type"> <xf:macro template="metadata_macros" name="type" arg-type="website" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_title"> <xf:macro template="metadata_macros" name="title" arg-title="{{ page_title() ?: $siteName }}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_description && $description is not empty && $pageDescriptionMeta"> <xf:macro template="metadata_macros" name="description" arg-description="{$description}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_share_url"> <xf:macro template="metadata_macros" name="share_url" arg-shareUrl="{$xf.fullUri}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_image_url && property('publicMetadataLogoUrl')"> <xf:macro template="metadata_macros" name="image_url" arg-imageUrl="{{ base_url(property('publicMetadataLogoUrl'), true) }}" arg-output="{{ true }}" /> </xf:if> <xf:if is="property('metaThemeColor')"> <meta name="theme-color" content="{{ parse_less_color(property('metaThemeColor')) }}" /> <meta name="msapplication-TileColor" content="{{ property('metaThemeColor') }}"> </xf:if> <xf:macro template="helper_js_global" name="head" arg-app="public" /> <xf:if is="property('publicFaviconUrl')"> <link rel="icon" type="image/png" href="{{ base_url(property('publicFaviconUrl'), true) }}" sizes="32x32" /> </xf:if> <xf:if is="property('publicMetadataLogoUrl')"> <link rel="apple-touch-icon" href="{{ base_url(property('publicMetadataLogoUrl'), true) }}" /> </xf:if> <xf:include template="google_analytics" /> <xf:set var="$uix_stickyStaffBarHeight" value="0" /> <xf:if is="property('uix_stickyStaffBar') && ({$uix_responsiveStaffBar} || {$uix_alwaysStaffBar})"> <xf:set var="$uix_stickyStaffBarHeight" value="{{property('uix_stickyStaffBarHeight')}}" /> </xf:if> </head> <body data-template="{$template}"> <xf:include template="page_style" /> <div id="jumpToTop"></div> <xf:comment> -- Not currently supporting Sidebar navigation when page style is not covered --- <xf:if is="property('uix_navigationType') == 'sidebarNav' && property('uix_pageStyle') != 'covered'"> <xf:macro name="uix_sidebarNav__component" arg-content="{$uix_sidebarNav__component}" /> </xf:if> </xf:comment> <div class="uix_pageWrapper--fixed"> <div class="p-pageWrapper" id="top"> <div class="uix_headerContainer"> <div class="uix_headerContainer--stickyFix"></div> <xf:macro name="uix_staffbar__component" arg-content="{$uix_staffbar__component}" /> <xf:set var="$uix_headerContent"> <xf:if contentcheck="true"> <div class="p-header-content"> <xf:contentcheck> <xf:if is="property('uix_viewportShowLogoBlock') != '0'"> <xf:macro name="uix_logo__component" arg-content="{$uix_logo__component}" /> </xf:if> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="header" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:set> <xf:macro name="uix_logoBlock" arg-content=""> <xf:if contentcheck="true"> <header class="p-header p-header--hasExtraContent" id="header"> <div class="p-header-inner"> {$content} <xf:contentcheck> <xf:ad position="container_header" /> </xf:contentcheck> </div> </header> <xf:else /> <header class="p-header" id="header"> <div class="p-header-inner"> {$content} </div> </header> </xf:if> </xf:macro> <xf:if is="{{ !property('uix_navAboveHeader') }}"> <xf:macro name="uix_logoBlock" arg-content="{$uix_headerContent}" /> </xf:if> <xf:set var="$navHtml"> <nav class="p-nav"> <div class="p-nav-inner"> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$uix_badgeCounter" value="{{$xf.visitor.conversations_unread + $xf.visitor.alerts_unread}}" /> <xf:if is="{{ property('uix_visitorTabsMobile') == 'canvas' }}"> <xf:set var="$uix_visitorTabCanvas" value="1" /> <xf:else /> <xf:set var="$uix_visitorTabCanvas" value="0" /> </xf:if> <a class="p-nav-menuTrigger badgeContainer{{ ($uix_visitorTabCanvas && ($xf.visitor.alerts_unread || $xf.visitor.conversations_unread)) ? ' badgeContainer--highlighted' : '' }}" data-badge="{$uix_badgeCounter|number}" data-xf-click="off-canvas" data-menu=".js-headerOffCanvasMenu" role="button" tabindex="0"> <i aria-hidden="true"></i> <span class="p-nav-menuText">{{ phrase('menu') }}</span> </a> <xf:if is="property('uix_navigationType') == 'sidebarNav' && property('uix_pageStyle') == 'covered'"> <a class="p-nav-menuTrigger uix_sidebarNav--trigger" id="uix_sidebarNav--trigger" rel="nofollow"> <i aria-hidden="true"></i> <span class="p-nav-menuText">{{ phrase('menu') }}</span> </a> </xf:if> </xf:if> <xf:macro name="uix_logo__component" arg-content="{$uix_logo__component}" /> <xf:if is="!{$uix_hideNavigation}"> <xf:if is="property('uix_navigationType') != 'sidebarNav' || property('uix_pageStyle') != 'covered'"> <div class="p-nav-scroller hScroller" data-xf-init="h-scroller" data-auto-scroll=".p-navEl.is-selected"> <div class="hScroller-scroll"> <ul class="p-nav-list js-offCanvasNavSource"> <xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}"> <li> <xf:macro name="nav_entry" arg-navId="{$navSection}" arg-nav="{$navEntry}" arg-selected="{{ $navSection == $pageSection }}" arg-shortcut="{$i}" /> </li> </xf:foreach> </ul> </div> </div> </xf:if> <xf:if is="property('uix_activeNavTitle')"> <div class="uix_activeNavTitle"> <span> <xf:if is="{$uix_mobileActiveNav}"> {{ $uix_mobileActiveNav }} <xf:elseif is="{$selectedNavEntry.href}" /> {$selectedNavEntry.title} <xf:else /> </xf:if> </span> </div> </xf:if> </xf:if> <xf:macro name="uix_search__component" arg-location="navigationLeft" arg-content="{$uix_search__component}" /> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="navigation" /> <xf:macro name="uix_sidebarTrigger__component" arg-content="{$uix_sidebarTrigger__content}" arg-location="navigation" /> </xf:contentcheck> </div> </xf:if> </div> <xf:comment> <xf:macro template="uix_megaMenu" name="uix_megaMenu" /> </xf:comment> </nav> </xf:set> <xf:set var="$uix_navOffset"> [ { "breakpoint": "0", "offset": "0" } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar} && {{ property('uix_stickyStaffBar') }}"> ,{ "breakpoint": "{{ property('uix_staffBarBreakpoint')|escape('json') }}", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> <xf:if is="{$uix_alwaysStaffBar} && {{ property('uix_stickyStaffBar') }}"> ,{ "breakpoint": "0", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> ] </xf:set> <xf:if is="property('publicNavSticky') == 'primary'"> <div class="p-navSticky p-navSticky--primary <xf:if is="property('publicNavSticky') !== 'none'">uix_stickyBar</xf:if>" data-top-offset-breakpoints="{$uix_navOffset|for_attr}"> {$navHtml|raw} </div> {$subNavHtml|raw} <xf:elseif is="property('publicNavSticky') == 'all'" /> <div class="p-navSticky p-navSticky--all <xf:if is="property('publicNavSticky') !== 'none'">uix_stickyBar</xf:if>" data-top-offset-breakpoints="{$uix_navOffset|for_attr}"> {$navHtml|raw} {$subNavHtml|raw} </div> <xf:else /> {$navHtml|raw} {$subNavHtml|raw} </xf:if> <xf:if is="{{ property('uix_navAboveHeader') }}"> <xf:macro name="uix_logoBlock" arg-content="{$uix_headerContent}" /> </xf:if> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="header" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="header" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="header" arg-content="{$uix_mainTabComponent}" /> <xf:macro name="uix_titlebar__component" arg-location="header" arg-content="{$uix_titlebar__component}" /> {{$uix_headerExtra|raw }} </div> <xf:comment> --- UI.X off canvas start ---</xf:comment> <div class="offCanvasMenu offCanvasMenu--nav js-headerOffCanvasMenu" data-menu="menu" aria-hidden="true" data-ocm-builder="navigation"> <div class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div class="offCanvasMenu-content"> <xf:include template="uix_canvasTabs" /> <xf:include template="uix_canvasPanels" /> <xf:macro name="canvasNavPanel"> <div class="offCanvasMenu-header"> {{ phrase('menu') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close')|for_attr }}"></a> </div> <xf:if is="$xf.visitor.user_id"> <div class="p-offCanvasAccountLink"> <a href="{{ link('account') }}" class="offCanvasMenu-link"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> {$xf.visitor.username} </a> <hr class="offCanvasMenu-separator" /> </div> </xf:if> <div class="js-offCanvasNavTarget"></div> <xf:if is="$xf.visitor.user_id"> <div class="offCanvasMenu-linkHolder u-ripple {{$uix_myAccountLinks == 'profile' ? 'is-selected' : ''}}"><div class="p-navEl__inner"><a data-nav-id="profile" href="{{ link('members', $xf.visitor) }}" class="offCanvasMenu-link">{{ phrase('th_profile_uix') }}</a></div></div> <div class="offCanvasMenu-linkHolder u-ripple {{$uix_myAccountLinks == 'alerts' ? 'is-selected' : ''}}"><div class="p-navEl__inner"><a data-nav-id="alerts" href="{{ link('account/alerts') }}" class="offCanvasMenu-link">{{ phrase('alerts')}}</a></div></div> <div class="offCanvasMenu-linkHolder u-ripple {{$uix_myAccountLinks == 'settings' ? 'is-selected' : ''}}"><div class="p-navEl__inner"><a data-nav-id="settings" href="{{ link('account/preferences') }}" class="offCanvasMenu-link">{{ phrase('settings')}}</a></div></div> </xf:if> <xf:if contentcheck="true"> <div class="uix_sidebarNav__inner__widgets"> <xf:contentcheck> {$uix_sidebarNavWidgets|raw} </xf:contentcheck> </div> </xf:if> </xf:macro> </div> </div> <xf:comment> <div class="offCanvasMenu offCanvasMenu--nav js-headerOffCanvasMenu" data-menu="menu" aria-hidden="true" data-ocm-builder="navigation"> <div class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div class="offCanvasMenu-content"> <div class="offCanvasMenu-header"> {{ phrase('menu') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close')|for_attr }}"></a> </div> <xf:if is="$xf.visitor.user_id"> <div class="p-offCanvasAccountLink"> <div class="offCanvasMenu-linkHolder"> <a href="{{ link('account') }}" class="offCanvasMenu-link"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> {$xf.visitor.username} </a> </div> <hr class="offCanvasMenu-separator" /> </div> <xf:else /> <div class="p-offCanvasRegisterLink"> <div class="offCanvasMenu-linkHolder"> <a href="{{ link('login') }}" class="offCanvasMenu-link" data-xf-click="overlay" data-menu-close="true"> {{ phrase('log_in') }} </a> </div> <hr class="offCanvasMenu-separator" /> <xf:if is="$xf.options.registrationSetup.enabled"> <div class="offCanvasMenu-linkHolder"> <a href="{{ link('register') }}" class="offCanvasMenu-link" data-xf-click="overlay" data-menu-close="true"> {{ phrase('register') }} </a> </div> <hr class="offCanvasMenu-separator" /> </xf:if> </div> </xf:if> <div class="js-offCanvasNavTarget"></div> </div> </div> </xf:comment> <xf:macro name="uix_titlebar__component" arg-location="belowHeader" arg-content="{$uix_titlebar__component}" /> <div class="p-body"> <xf:if is="property('uix_navigationType') == 'sidebarNav' && property('uix_pageStyle') == 'covered'"> <xf:macro name="uix_sidebarNav__component" arg-content="{$uix_sidebarNav__component}" /> </xf:if> <div class="p-body-inner {{ $removePageWrapper ? 'p-body-inner-none' : ''}}"> <xf:if is="!is_addon_active('ThemeHouse/UIX') && $xf.visitor.is_admin"> <div class="blockMessage blockMessage--error blockMessage--errorUixAddon"> <h2 style="margin: 0 0 .5em 0">UI.X Error</h2> <p> It appears that you do not have the UI.X Add-on installed. Please install this add-on to ensure your style works as expected. You can download the UI.X add-on <a href="https://www.Ваш домен.ру/xenforo/2/addons/uix-addon">here</a>. </p> <xf:button href="https://www.Ваш домен.ру/help/documentation/uix2" class="button--primary"> <xf:fa icon="fa-exclamation-triangle" class="uix_icon uix_icon--warning" /> View Documentation </xf:button> </div> </xf:if> <!--XF:EXTRA_OUTPUT--> <xf:macro name="uix_notices" arg-location="aboveMainContainer" arg-content="{$uix_notices}" /> <xf:macro name="uix_titlebar__component" arg-location="aboveMainContainer" arg-content="{$uix_titlebar__component}" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="aboveMainContainer" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="aboveMainContainer" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="aboveMainContainer" arg-content="{$uix_mainTabComponent}" /> <xf:macro template="browser_warning_macros" name="javascript" /> <xf:macro template="browser_warning_macros" name="browser" /> <div uix_component="MainContainer" class="uix_contentWrapper"> <xf:macro name="uix_notices" arg-location="mainContainerTop" arg-content="{$uix_notices}" /> <xf:ad position="container_content_above" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="mainContainerTop" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="mainContainerTop" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_titlebar__component" arg-location="mainContainerTop" arg-content="{$uix_titlebar__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="mainContainerTop" arg-content="{$uix_mainTabComponent}" /> <div class="p-body-main {{ $sidebar ? 'p-body-main--withSidebar' : '' }} {{ $sideNav ? 'p-body-main--withSideNav' : '' }}"> <xf:if is="$sideNav"> <div class="p-body-sideNav"> <div class="p-body-sideNavTrigger"> <xf:button class="button--link" data-xf-click="off-canvas" data-menu="#js-SideNavOcm"> {{ $sideNavTitle ?: phrase('navigation') }} </xf:button> </div> <div class="p-body-sideNavInner {{ (property('uix_stickySidebar') == 'top') ? ' uix_stickyBodyElement' : '' }}" data-ocm-class="offCanvasMenu offCanvasMenu--blocks" id="js-SideNavOcm" data-ocm-builder="sideNav"> <div class="uix_sidebar--scroller"> <div data-ocm-class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div data-ocm-class="offCanvasMenu-content"> <div class="p-body-sideNavContent"> <xf:ad position="container_sidenav_above" /> <xf:foreach loop="$sideNav" value="$sideNavHtml"> {$sideNavHtml} </xf:foreach> <xf:ad position="container_sidenav_below" /> </div> </div> </div> </div> </div> </xf:if> <xf:macro name="uix_sidebar__component" arg-content="{$uix_sidebar__component}" arg-location="left" /> <div uix_component="MainContent" class="p-body-content"> <!-- ABOVE MAIN CONTENT --> <xf:macro name="uix_notices" arg-location="aboveMainContent" arg-content="{$uix_notices}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="aboveMainContent" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="aboveMainContent" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_titlebar__component" arg-location="aboveMainContent" arg-content="{$uix_titlebar__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="aboveMainContent" arg-content="{$uix_mainTabComponent}" /> <div class="p-body-pageContent"> <xf:macro name="uix_notices" arg-location="mainContentTop" arg-content="{$uix_notices}" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="mainContentTop" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="mainContentTop" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_titlebar__component" arg-location="mainContentTop" arg-content="{$uix_titlebar__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="mainContentTop" arg-content="{$uix_mainTabComponent}" /> {$content|raw} <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="mainContentBottom" /> </div> <!-- BELOW MAIN CONTENT --> <xf:ad position="container_content_below" /> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="belowMainContent" /> </div> <xf:macro name="uix_sidebar__component" arg-content="{$uix_sidebar__component}" arg-location="right" /> </div> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="mainContainerBottom" /> </div> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="belowMainContainer" /> <xf:macro name="uix_footer" arg-location="insideContent" arg-content="{$uix_footer}" arg-insideContent="{{ property('uix_footerInsideContent')}}" /> </div> </div> <xf:macro name="uix_footer" arg-location="bottom" arg-content="{$uix_footer}" arg-insideContent="{{ property('uix_footerInsideContent')}}" /> <xf:if contentcheck="true"> <div class="uix_fabBar uix_fabBar--active"> <xf:contentcheck> <xf:if is="property('scrollJumpButtons')"> <div class="u-scrollButtons js-scrollButtons" data-trigger-type="{{ property('scrollJumpButtons') }}"> <xf:button href="#top" class="button--scroll ripple-JsOnly" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-up" /><span class="u-srOnly">{{ phrase('top') }}</span></xf:button> <xf:if is="property('scrollJumpButtons') != 'up'"> <xf:button href="#footer" class="button--scroll ripple-JsOnly" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-down" /><span class="u-srOnly">{{ phrase('bottom') }}</span></xf:button> </xf:if> </div> </xf:if> <xf:if is="property('uix_fab') != 'never'"> <xf:if contentcheck="true"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </xf:if> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if is="(property('uix_fab') != 'never') && !property('uix_fabScroll')"> <xf:if contentcheck="true"> <div class="uix_fabBar uix_fabBar--mirror"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </div> </xf:if> </xf:if> <xf:if is="property('uix_visitorTabsMobile') == 'tabbar'"> <xf:macro name="uix_tabBar" template="uix_tabBar" /> </xf:if> </div> </div> <div class="u-bottomFixer js-bottomFixTarget"> <xf:if is="$notices.floating"> <xf:macro template="notice_macros" name="notice_list" arg-type="floating" arg-notices="{$notices.floating}" /> </xf:if> <xf:if is="$notices.bottom_fixer"> <xf:macro template="notice_macros" name="notice_list" arg-type="bottom_fixer" arg-notices="{$notices.bottom_fixer}" /> </xf:if> </div> <xf:include template="uix_config" /> <xf:macro template="helper_js_global" name="body" arg-app="public" arg-jsState="{$jsState}" /> <xf:if is="count($xf.reactionsActive) > 1"> <script type="text/template" id="xfReactTooltipTemplate"> <div class="tooltip-content-inner"> <div class="reactTooltip"> <xf:foreach loop="$xf.reactionsActive" key="$reactionId" value="$reaction"> <xf:reaction id="{$reactionId}" tooltip="true" /> </xf:foreach> </div> </div> </script> </xf:if> <xf:if is="property('uix_loginStyle') == 'slidingPanel'"> <div class="uix__loginForm uix__loginForm--login"> <div class="uix__loginForm--panel"> <xf:include template="login"> <xf:set var="$uix_loginPreventAutoFocus" value="1" /> </xf:include> </div> <div class="uix__loginForm--mask"></div> </div> </xf:if> {$ldJsonHtml|raw} </body> </html> <xf:macro name="nav_entry" arg-sidebarNav="" arg-navId="!" arg-nav="!" arg-selected="{{ false }}" arg-shortcut=""> <div class="p-navEl u-ripple {{ $selected ? 'is-selected' : '' }}" {{ $nav.children ? 'data-has-children="true"' : '' }}> <xf:if is="$sidebarNav"> <div class="p-navEl__inner"> </xf:if> <xf:if is="$nav.href"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link {{ $nav.children ? 'p-navEl-link--splitMenu' : '' }}" arg-shortcut="{{ $nav.children ? false : $shortcut }}" /> <xf:if is="$nav.children"> <a data-xf-key="{$shortcut}" data-xf-click="menu" data-menu-pos-ref="< .p-navEl" class="p-navEl-splitTrigger" role="button" tabindex="0" aria-label="{{ phrase('toggle_expanded')|for_attr }}" aria-expanded="false" aria-haspopup="true"> </a> </xf:if> <xf:elseif is="$nav.children" /> <a data-xf-key="{$shortcut}" class="p-navEl-linkHolder" data-menu-pos-ref="< .p-navEl" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link p-navEl-link--menuTrigger" /> </a> <xf:else /> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link" arg-shortcut="{$shortcut}" /> </xf:if> <xf:if is="$nav.children"> <xf:if is="!{$sidebarNav}"> <div class="menu menu--structural" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" /> </xf:foreach> </div> </div> </xf:if> </xf:if> <xf:if is="{$sidebarNav} && $nav.children && property('uix_tablinksInSideNav')"> <a class="uix_sidebarNav--trigger <xf:if is="!property('uix_sideNavCollapsed') && $selected">is-expanded</xf:if>" rel="nofollow"><xf:fa icon="fa-chevron-down" class="uix_icon uix_icon--chevron-down" /></a> </xf:if> <xf:if is="$sidebarNav"> </div> </xf:if> <xf:if is="property('uix_tablinksInSideNav')"> <xf:if is="{$sidebarNav}"> <div <xf:if is="$nav.children">data-menu="false"</xf:if> class="uix_sidebarNav__subNav <xf:if is="!property('uix_sideNavCollapsed') && $selected">subNav--expand</xf:if>"> <div class="uix_sidebarNav__subNavInner"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" /> </xf:foreach> </div> </div> </xf:if> </xf:if> </div> </xf:macro> <xf:macro name="nav_link" arg-navId="!" arg-nav="!" arg-class="" arg-titleHtml="" arg-shortcut="{{ false }}"> <xf:set var="$tag" value="{{ $nav.href ? 'a' : 'span' }}" /> <{$tag} {{ $nav.href ? 'href="' . $nav.href . '"' : '' }} class="{$class} {$nav.attributes.class}" {{ attributes($nav.attributes, ['class']) }} {{ $shortcut !== false ? 'data-xf-key="' . $shortcut . '"' : '' }} data-nav-id="{$navId}"><xf:if is="$nav.icon"><xf:fa icon="{$nav.icon}" /> </xf:if><span>{{ $titleHtml ? $titleHtml|raw : $nav.title }}</span><xf:if is="$nav.counter"> <span class="badge badge--highlighted">{$nav.counter|number}</span></xf:if></{$tag}> </xf:macro> <xf:macro name="nav_menu_entry" arg-navId="!" arg-nav="!" arg-depth="0"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="menu-linkRow u-indentDepth{$depth} js-offCanvasCopy" /> <xf:if is="$nav.children"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" arg-depth="{{ $depth + 1 }}" /> </xf:foreach> <xf:if is="$depth == 0"> <hr class="menu-separator" /> </xf:if> </xf:if> </xf:macro>]]>

</template>


-<template title="account_alerts" version_string="2.0.10" version_id="2001070" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('alerts') }}</xf:title> <xf:page option="uix_myAccountLinks" value="alerts" /> <xf:wrap template="account_wrapper" /> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:if is="$alerts is not empty"> <ol class="listPlain"> <xf:foreach loop="$alerts" value="$alert"> <li data-alert-id="{$alert.alert_id}" class="block-row block-row--separated{{ $alert.isUnviewed() ? ' block-row--highlighted' : ($alert.isRecentlyViewed() ? '' : ' block-row--alt') }}"> <xf:macro template="alert_macros" name="row" arg-alert="{$alert}" /> </li> </xf:foreach> </ol> <xf:elseif is="$page <= 1" /> <div class="block-row">{{ phrase('you_do_not_have_any_recent_alerts') }}</div> <xf:else /> <div class="block-row">{{ phrase('no_alerts_can_be_shown') }}</div> </xf:if> </div> </div> <xf:pagenav link="account/alerts" page="{$page}" perpage="{$perPage}" total="{$totalAlerts}" wrapperclass="block-outer block-outer--after" /> </div>]]>

</template>


-<template title="account_preferences" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('preferences') }}</xf:title> <xf:page option="uix_myAccountLinks" value="settings" /> <xf:wrap template="account_wrapper" /> <xf:form action="{{ link('account/preferences') }}" ajax="true" class="block" data-force-flash-message="true"> <div class="block-container"> <div class="block-body"> <xf:if is="$xf.visitor.canChangeStyle()"> <xf:selectrow name="user[style_id]" value="{$xf.visitor.style_id}" label="{{ phrase('style') }}"> <xf:option value="0">{{ phrase('use_default_style:') }} {$defaultStyle.title}</xf:option> <xf:optgroup label="{{ phrase('styles:') }}"> <xf:foreach loop="$styles" value="$style"> <xf:option value="{$style.style_id}">{{ repeat('--', $style.depth) }} {$style.title}{{ !$style.user_selectable ? ' *' : '' }}</xf:option> </xf:foreach> </xf:optgroup> </xf:selectrow> <xf:else /> <xf:hiddenval name="user[style_id]">{$xf.visitor.style_id}</xf:hiddenval> </xf:if> <xf:if is="$xf.visitor.canChangeLanguage()"> <xf:selectrow name="user[language_id]" value="{$xf.visitor.language_id}" label="{{ phrase('language') }}"> <xf:foreach loop="$languageTree.getFlattened(0)" value="$treeEntry"> <xf:option value="{$treeEntry.record.language_id}">{{ repeat('--', $treeEntry.depth) }} {$treeEntry.record.title}</xf:option> </xf:foreach> </xf:selectrow> <xf:else /> <xf:hiddenval name="user[language_id]">{{ $xf.visitor.language_id ? $xf.visitor.language_id : $xf.options.defaultLanguageId }}</xf:hiddenval> </xf:if> <xf:selectrow name="user[timezone]" value="{$xf.visitor.timezone}" label="{{ phrase('time_zone') }}"> <xf:options source="$timeZones" /> </xf:selectrow> <xf:macro template="helper_account" name="email_options_row" arg-showConversationOption="{{ true }}" /> <xf:checkboxrow label="{{ phrase('content_options') }}"> <xf:option value="watch_no_email" name="option[creation_watch_state]" checked="{{ $xf.visitor.Option.creation_watch_state ? true : false }}" label="{{ phrase('automatically_watch_content_you_create...') }}"> <xf:checkbox> <xf:option value="watch_email" name="option[creation_watch_state]" checked="{{ $xf.visitor.Option.creation_watch_state == 'watch_email' }}" label="{{ phrase('and_receive_email_notifications') }}" /> </xf:checkbox> </xf:option> <xf:option value="watch_no_email" name="option[interaction_watch_state]" checked="{{ $xf.visitor.Option.interaction_watch_state ? true : false }}" label="{{ phrase('automatically_watch_content_you_interact_with...') }}"> <xf:checkbox> <xf:option value="watch_email" name="option[interaction_watch_state]" checked="{{ $xf.visitor.Option.interaction_watch_state == 'watch_email' }}" label="{{ phrase('and_receive_email_notifications') }}" /> </xf:checkbox> </xf:option> <xf:option name="option[content_show_signature]" checked="{$xf.visitor.Option.content_show_signature}" label="{{ phrase('show_peoples_signatures_with_their_messages') }}" /> </xf:checkboxrow> <xf:macro template="helper_account" name="activity_privacy_row" /> <xf:macro template="custom_fields_macros" name="custom_fields_edit" arg-type="users" arg-group="preferences" arg-set="{$xf.visitor.Profile.custom_fields}" /> <xf:if is="$xf.options.enableNotices && (count($xf.session.dismissedNotices) > 0)"> <hr class="formRowSep" /> <xf:checkboxrow> <xf:option name="restore_notices" label="{{ phrase('restore_dismissed_notices') }}" hint="{{ phrase('restore_dismissed_notices_hint') }}" /> </xf:checkboxrow> </xf:if> <xf:if is="$xf.visitor.canUsePushNotifications()"> <xf:formrow label="{{ phrase('push_notifications') }}" rowtype="button" explain="{{ phrase('enable_push_explain') }}"> <xf:button class="is-disabled" data-xf-init="push-toggle"> {{ phrase('push_checking_device_capabilities...') }} </xf:button> </xf:formrow> <xf:checkboxrow label=""> <xf:option name="option[push_on_conversation]" checked="{$xf.visitor.Option.push_on_conversation}" label="{{ phrase('receive_push_notification_when_new_conversation_message_is_received') }}" /> </xf:checkboxrow> <xf:js> jQuery.extend(true, XF.config, { skipServiceWorkerRegistration: true, skipPushNotificationCta: true }); jQuery.extend(XF.phrases, { push_enable_label: "{{ phrase('push_enable_label')|escape('js') }}", push_disable_label: "{{ phrase('push_disable_label')|escape('js') }}", push_not_supported_label: "{{ phrase('push_not_supported_label')|escape('js') }}", push_blocked_label: "{{ phrase('push_blocked_label')|escape('js') }}" }); </xf:js> <xf:else /> <xf:hiddenval name="option[push_on_conversation]">{$xf.visitor.Option.push_on_conversation}</xf:hiddenval> </xf:if> </div> <xf:if is="$alertOptOuts is not empty"> <xf:css src="notification_opt_out.less" /> <h2 class="block-formSectionHeader"><span class="block-formSectionHeader-aligner">{{ phrase('receive_notification_when_someone...') }}</span></h2> <div class="block-body"> <xf:set var="$canPush" value="{{ $xf.visitor.canUsePushNotifications() }}" /> <xf:foreach loop="$alertOptOuts" key="$contentType" value="$options"> <xf:foreach loop="$options" key="$action" value="$label"> <xf:formrow label="{$label}" data-content-type="{$contentType}" data-action="{$action}"> <ul class="notificationChoices"> <li class="notificationChoices-choice notificationChoices-choice--alert"> <xf:checkbox standalone="true"> <xf:option name="alert[{$contentType}_{$action}]" data-xf-init="{{ $canPush ? 'disabler' : '' }}" data-container="< .notificationChoices | .notificationChoices-choice--push" checked="{{ $xf.visitor.Option.doesReceiveAlert($contentType, $action) }}" label="{{ phrase('alert') }}" /> </xf:checkbox> </li> <xf:if is="$canPush"> <li class="notificationChoices-choice notificationChoices-choice--push"> <xf:checkbox standalone="true"> <xf:option name="push[{$contentType}_{$action}]" checked="{{ $xf.visitor.Option.doesReceivePush($contentType, $action) }}" label="{{ phrase('push') }}" /> </xf:checkbox> <xf:hiddenval name="push_shown[{$contentType}_{$action}]">1</xf:hiddenval> </li> </xf:if> </ul> </xf:formrow> </xf:foreach> <hr class="formRowSep" /> </xf:foreach> </div> </xf:if> <xf:submitrow icon="save" sticky="true" /> </div> </xf:form>]]>

</template>


-<template title="account_visitor_menu" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[<xf:if contentcheck="true"> <h4 class="menu-tabHeader tabs" data-xf-init="tabs" role="tablist"> <span class="hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <a href="{{ link('account') }}" class="tabs-tab is-active" role="tab" tabindex="0" aria-controls="{{ unique_id('accountMenu') }}">{{ phrase('your_account') }}</a> <xf:contentcheck> <xf:if is="$xf.visitor.canViewBookmarks()"> <a href="{{ link('account/bookmarks') }}" class="tabs-tab" role="tab" tabindex="0" aria-controls="{{ unique_id('accountMenuBookmarks') }}">{{ phrase('bookmarks') }}</a> </xf:if> <!--[XF:account_tabs:bottom]--> </xf:contentcheck> </span> </span> </h4> <xf:set var="$hasTabs" value="{{ true }}" /> </xf:if> <xf:set var="$accountHtml"> <div class="menu-row menu-row--alt"> <xf:macro name="visitor_panel_row" /> </div> <xf:macro name="visitor_panel_row"> <div class="contentRow contentRow--alignMiddle"> <div class="contentRow-figure"> <span class="avatarWrapper"> <xf:avatar user="{$xf.visitor}" size="s" href="" notooltip="true" /> <xf:if is="$xf.visitor.canUploadAvatar()"> <a class="avatarWrapper-update" href="{{ link('account/avatar') }}" data-xf-click="overlay"><span>{{ phrase('edit') }}</span></a> </xf:if> </span> </div> <div class="contentRow-main"> <h3 class="contentRow-header"><xf:username user="$xf.visitor" rich="true" notooltip="true" /></h3> <div class="contentRow-lesser"> <xf:usertitle user="$xf.visitor" /> </div> </div> </div> <div class="contentRow-minor"> <!--[XF:stats_pairs:above_messages]--> <dl class="pairs pairs--justified fauxBlockLink"> <xf:if is="property('uix_visitorPanelIcons')"> <xf:fa icon="fa-comments" class=" uix_icon uix_icon--messages" /> <xf:else /> <dt>{{ phrase('messages') }}</dt> </xf:if> <dd> <a href="{{ link('search/member', null, {'user_id': $xf.visitor.user_id}) }}" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.message_count|number} </a> </dd> </dl> <!--[XF:stats_pairs:above_reactions]--> <dl class="pairs pairs--justified fauxBlockLink"> <xf:if is="property('uix_visitorPanelIcons')"> <xf:fa icon="fa-thumbs-up" class=" uix_icon uix_icon--like" /> <xf:else /> <dt>{{ phrase('reaction_score') }}</dt> </xf:if> <dd> <a href="{{ link('account/reactions') }}" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.reaction_score|number} </a> </dd> </dl> <!--[XF:stats_pairs:above_points]--> <xf:if is="$xf.options.enableTrophies"> <dl class="pairs pairs--justified fauxBlockLink"> <xf:if is="property('uix_visitorPanelIcons')"> <xf:fa icon="fa-trophy" class=" uix_icon uix_icon--trophy" /> <xf:else /> <dt>{{ phrase('trophy_points') }}</dt> </xf:if> <dd> <a href="{{ link('members/trophies', $xf.visitor) }}" data-xf-click="overlay" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.trophy_points|number} </a> </dd> </dl> </xf:if> </div> </xf:macro> <!--[XF:menu_separator:below_visitor_panel]--> <hr class="menu-separator menu-separator--hard" /> <ul class="listPlain listColumns listColumns--narrow listColumns--together"> <!--[XF:content_links:top]--> <xf:if is="$xf.options.enableNewsFeed"> <li><a href="{{ link('whats-new/news-feed') }}" class="menu-linkRow">{{ phrase('news_feed') }}</a></li> </xf:if> <li><a href="{{ link('search/member', null, {'user_id': $xf.visitor.user_id}) }}" class="menu-linkRow">{{ phrase('your_content') }}</a></li> <li><a href="{{ link('account/reactions') }}" class="menu-linkRow">{{ phrase('reactions_received') }}</a></li> <!--[XF:content_links:bottom]--> </ul> <!--[XF:menu_separator:below_content_links]--> <hr class="menu-separator" /> <ul class="listPlain listColumns listColumns--narrow listColumns--together"> <!--[XF:account_links:top]--> <li><a href="{{ link('account/account-details') }}" class="menu-linkRow">{{ phrase('account_details') }}</a></li> <li><a href="{{ link('account/security') }}" class="menu-linkRow">{{ phrase('password_and_security') }}</a></li> <li><a href="{{ link('account/privacy') }}" class="menu-linkRow">{{ phrase('privacy') }}</a></li> <li><a href="{{ link('account/preferences') }}" class="menu-linkRow">{{ phrase('preferences') }}</a></li> <xf:if is="$xf.visitor.canEditSignature()"> <li><a href="{{ link('account/signature') }}" class="menu-linkRow">{{ phrase('signature') }}</a></li> </xf:if> <xf:if is="$xf.app.userUpgradeCount"> <li><a href="{{ link('account/upgrades') }}" class="menu-linkRow">{{ phrase('account_upgrades') }}</a></li> </xf:if> <xf:if is="$xf.app.connectedAccountCount"> <li><a href="{{ link('account/connected-accounts') }}" class="menu-linkRow">{{ phrase('connected_accounts') }}</a></li> </xf:if> <li><a href="{{ link('account/following') }}" class="menu-linkRow">{{ phrase('following') }}</a></li> <li><a href="{{ link('account/ignored') }}" class="menu-linkRow">{{ phrase('ignoring') }}</a></li> <!--[XF:account_links:bottom]--> </ul> <!--[XF:menu_separator:below_account_links]--> <hr class="menu-separator" /> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="menu-linkRow">{{ phrase('log_out') }}</a> <xf:if is="$xf.visitor.canPostOnProfile()"> <xf:form action="{{ link('members/post', $xf.visitor) }}" ajax="true" data-redirect="off" data-reset-complete="true" data-no-auto-focus="true" class="menu-footer"> <span class="u-srOnly" id="ctrl_message">{{ phrase('update_your_status:') }}</span> <xf:textarea name="message" rows="1" autosize="true" maxlength="{$xf.options.profilePostMaxLength}" placeholder="{{ phrase('update_your_status...') }}" data-xf-init="focus-trigger user-mentioner emoji-completer" data-display="< :next" aria-labelledby="ctrl_message" /> <div class="u-hidden u-hidden--transition u-inputSpacer"> <xf:button type="submit" class="button--primary" icon="reply">{{ phrase('post_verb') }}</xf:button> </div> </xf:form> </xf:if> </xf:set> <xf:if is="$hasTabs"> <ul class="tabPanes"> <li class="is-active" role="tabpanel" id="{{ unique_id('accountMenu') }}"> {$accountHtml|raw} </li> <xf:if is="$xf.visitor.canViewBookmarks()"> <li role="tabpanel" id="{{ unique_id('accountMenuBookmarks') }}" data-href="{{ link('account/bookmarks-popup') }}" data-load-target=".js-bookmarksMenuBody"> <div class="js-bookmarksMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--close"> <a href="{{ link('account/bookmarks') }}" class="js-bookmarkShowAllLink">{{ phrase('show_all...') }}</a> </div> </li> </xf:if> <!--[XF:account_tab_panes:bottom]--> </ul> <xf:else /> {$accountHtml|raw} </xf:if>]]>

</template>


-<template title="account_wrapper" version_string="2.1.0 Beta 5" version_id="2010035" addon_id="XF" type="public">

<![CDATA[<xf:sidenav> <div class="block"> <div class="block-container"> <h3 class="block-header">{{ phrase('your_account') }}</h3> <div class="block-body"> <!--[XF:profile_links:top]--> <a class="blockLink" href="{{ link('members', $xf.visitor) }}">{{ phrase('your_profile') }}</a> <a class="blockLink {{ $pageSelected == 'alerts' ? 'is-selected' : '' }}" href="{{ link('account/alerts') }}"> {{ phrase('alerts') }} </a> <a class="blockLink {{ $pageSelected == 'reactions' ? 'is-selected' : '' }}" href="{{ link('account/reactions') }}"> {{ phrase('reactions_received') }} </a> <xf:if is="$xf.visitor.canViewBookmarks()"> <a class="blockLink {{ $pageSelected == 'bookmarks' ? 'is-selected' : '' }}" href="{{ link('account/bookmarks') }}"> {{ phrase('bookmarks') }} </a> </xf:if> <!--[XF:profile_links:bottom]--> </div> <h3 class="block-minorHeader">{{ phrase('settings') }}</h3> <div class="block-body"> <!--[XF:settings_links:top]--> <a class="blockLink {{ $pageSelected == 'account_details' ? 'is-selected' : '' }}" href="{{ link('account/account-details') }}"> {{ phrase('account_details') }} </a> <a class="blockLink {{ $pageSelected == 'security' ? 'is-selected' : '' }}" href="{{ link('account/security') }}"> {{ phrase('password_and_security') }} </a> <a class="blockLink {{ $pageSelected == 'privacy' ? 'is-selected' : '' }}" href="{{ link('account/privacy') }}"> {{ phrase('privacy') }} </a> <a class="blockLink {{ $pageSelected == 'preferences' ? 'is-selected' : '' }}" href="{{ link('account/preferences') }}"> {{ phrase('preferences') }} </a> <xf:if is="$xf.visitor.canEditSignature()"> <a class="blockLink {{ $pageSelected == 'signature' ? 'is-selected' : '' }}" href="{{ link('account/signature') }}"> {{ phrase('signature') }} </a> </xf:if> <xf:if is="$xf.app.userUpgradeCount"> <a class="blockLink {{ $pageSelected == 'upgrades' ? 'is-selected' : '' }}" href="{{ link('account/upgrades') }}"> {{ phrase('account_upgrades') }} </a> </xf:if> <xf:if is="$xf.app.connectedAccountCount"> <a class="blockLink {{ $pageSelected == 'connected_account' ? 'is-selected' : '' }}" href="{{ link('account/connected-accounts') }}"> {{ phrase('connected_accounts') }} </a> </xf:if> <a class="blockLink {{ $pageSelected == 'following' ? 'is-selected' : '' }}" href="{{ link('account/following') }}"> {{ phrase('following') }} </a> <a class="blockLink {{ $pageSelected == 'ignored' ? 'is-selected' : '' }}" href="{{ link('account/ignored') }}"> {{ phrase('ignoring') }} </a> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="blockLink">{{ phrase('log_out') }}</a> <!--[XF:settings_links:bottom]--> </div> </div> </div> </xf:sidenav> <xf:page option="sideNavTitle">{{ phrase('your_account') }}</xf:page> <xf:breadcrumb href="{{ link('account') }}">{{ phrase('your_account') }}</xf:breadcrumb> {$innerContent|raw}]]>

</template>


-<template title="app.less" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[@_nav-elTransitionSpeed: @xf-animationSpeed; @_navAccount-hPadding: @xf-paddingLarge; @uix_sidebarNavBreakpoint: {{ property('pageWidthMax') + 1 + ( 2 * (property('uix_sidebarNavWidth') + property('elementSpacer')) ) }}px; .m-pageWidth(@min-width: @xf-pageEdgeSpacer) { // max-width: @xf-pageWidthMax; // padding: 0 @xf-pageEdgeSpacer; // margin: 0 auto; } .m-pageInset(@defaultPadding: @xf-pageEdgeSpacer) { /* padding-left: @defaultPadding; padding-right: @defaultPadding; // iPhone X/Xr/Xs support @supports(padding: max(0px)) { & { padding-left: ~"max(@{defaultPadding}, env(safe-area-inset-left))"; padding-right: ~"max(@{defaultPadding}, env(safe-area-inset-right))"; } } */ } .u-anchorTarget { .m-stickyHeaderConfig(@xf-publicNavSticky); height: (@_stickyHeader-height + @_stickyHeader-offset); margin-top: -(@_stickyHeader-height + @_stickyHeader-offset); } .uix_pageWidth--wrapped { width: 100%; <xf:if is="property('uix_pageStyle') == 'wrapped'"> .m-pageWidth(); </xf:if> } .p-pageWrapper { position: relative; display: flex; flex-direction: column; min-height: 100vh; // .xf-pageBackground(); .is-modalOverlayOpen & { & when (unit(xf-default(@xf-overlayMaskBlur, 0)) > 0) { filter: blur(@xf-overlayMaskBlur); } } flex-grow: 1; <xf:if is="property('uix_pageStyle') == 'wrapped'"> .xf-uix_pageWrapper(); @media (min-width: {{ property('responsiveEdgeSpacerRemoval') + 1 }}px) { margin-top: @xf-pageEdgeSpacer; margin-bottom: @xf-pageEdgeSpacer; padding: @xf-pageEdgeSpacer; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { border: none; box-shadow: none; } </xf:if> } .uix_headerContainer { .xf-uix_headerWrapper(); } // RESPONSIVE HEADER .p-offCanvasAccountLink { display: none; .avatar {margin-right: 24px;} } @media (max-width: @xf-responsiveNarrow) { .p-offCanvasAccountLink { display: block; } } @media (max-width: 359px) { .p-offCanvasRegisterLink { display: block; } } @media (max-width: @xf-pageWidthMax) { #uix_widthToggle--trigger {display: none;} } #uix_widthToggle--trigger:hover {cursor: pointer;} .uix_page--fixed #uix_widthToggle--trigger .uix_icon:before { .m-faBase(); .m-faContent(@fa-var-expand-alt); <xf:macro name="content" template="uix_icons.less" arg-icon="expand" /> } {{ include('app_staffbar.less') }} <xf:if is="{{ property('uix_viewportShowLogoBlock') }} != '100%'"> {{ include('app_header.less') }} </xf:if> {{ include('app_stickynav.less') }} {{ include('app_nav.less') }} {{ include('app_sectionlinks.less') }} {{ include('app_body.less') }} {{ include('app_breadcrumbs.less') }} {{ include('app_title.less') }} {{ include('app_footer.less') }} {{ include('app_inlinemod.less') }} {{ include('app_ignored.less') }} {{ include('app_username_styles.less') }} {{ include('app_user_banners.less') }} {{ include('uix.less') }}]]>

</template>


-<template title="app_body.less" version_string="2.1.9" version_id="2010970" addon_id="XF" type="public">

<![CDATA[// ######################################### MAIN BODY ################################# .p-body { display: flex; align-items: stretch; flex-grow: 1; min-height: 1px; // IE11 workaround - related to #139187 position: relative; } .p-body-inner { width: 100%; <xf:if is="property('uix_pageStyle') != 'wrapped'"> .m-pageWidth(); .m-pageInset(); <xf:else /> @media (min-width: {{ property('responsiveEdgeSpacerRemoval') + 1 }}px ) { flex-grow: 1; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .m-pageWidth(); .m-pageInset(); } </xf:if> transition: ease-in-out max-width .3s, ease-in-out left .3s, ease-in-out width .3s; display: flex; flex-direction: column; .m-clearFix(); position: relative; left: 0; padding-left: 0; padding-right: 0; padding-bottom: @xf-elementSpacer; .uix_page--fluid & { transition: @uix_moveIn max-width .3s, @uix_moveIn left .3s, @uix_moveIn width .3s; } &.p-body-inner-none { max-width: 100%; width: 100%; margin: 0; padding: 0; } /* > * { margin-bottom: 20px; &:last-child {margin-bottom: 0;} } */ .p-body-header { margin-bottom: @xf-elementSpacer; } } .uix_contentWrapper { // margin-bottom: @xf-elementSpacer; flex-grow: 1; <xf:if is="property('uix_contentWrapper') == 1"> padding: @xf-pageEdgeSpacer; .xf-uix_contentWrapperStyle(); @media (max-width: @xf-responsiveEdgeSpacerRemoval) { padding: {{ property('pageEdgeSpacer') / 2 }}px; margin-left: -{{ property('pageEdgeSpacer') / 2 }}px; margin-right: -{{ property('pageEdgeSpacer') / 2 }}px; border: none; box-shadow: none; } </xf:if> } .p-body-main { // display: table; table-layout: fixed; display: flex; flex-wrap: wrap; justify-content: space-between; width: 100%; max-width: 100%; margin-bottom: auto; min-height: 1px; // IE11 workaround - related to #139187 } .p-body-content { // display: table-cell; vertical-align: top; @media ( min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { <xf:if is="{{ property('uix_sidebarLocation') == 'right' }}"> transition: ease-in width .2s, ease-in max-width .2s; .uix_sidebarCollapsed & { transition: ease-in width .2s .2s, ease-in max-width .2s .2s; } <xf:else /> transition: @uix_moveOut width .2s, ease-in max-width .2s; .uix_sidebarCollapsed & { transition: ease-in width .2s .2s, ease-in max-width .2s .2s; } </xf:if> } flex-grow: 1; max-width: 100%; width: 100%; .p-body-main--withSidebar &, .p-body-main--withSideNav & { // don't let the ad overflow the sidebar area -- this can happen due to how the Adsense JS works ins.adsbygoogle { // -10px gives a little buffer or helps account for no scrollbar being considered max-width: ~"calc(100vw - 10px - @{xf-pageEdgeSpacer} - @{xf-pageEdgeSpacer} - @{xf-sidebarWidth} - @{xf-sidebarSpacer})"; @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { // window wider than the max width, so limit to the display area without the sidebar max-width: ~"calc(@{xf-pageWidthMax} - @{xf-pageEdgeSpacer} - @{xf-pageEdgeSpacer} - @{xf-sidebarWidth} - @{xf-sidebarSpacer})"; } @media (max-width: @xf-uix_sidebarBreakpoint) { // sidebar/sidenav have been moved/hidden max-width: 100vw; } } } .p-body-main--withSideNav & { @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); max-width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); display: inline-block; } } .p-body-main--withSidebar & { @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); max-width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); display: inline-block; } } @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { .p-body-main--withSidebar.p-body-main--withSideNav & { width: calc(~"100% - {{ (property('sidebarWidth') + property('elementSpacer')) * 2 }}px"); max-width: calc(~"100% - {{ (property('sidebarWidth') + property('elementSpacer')) * 2 }}px"); display: inline-block; } } } .p-body-pageContent { > .tabs--standalone:first-child { margin-bottom: (@xf-elementSpacer) / 2; } } .p-body-pageContent { <xf:if is="property('uix_contentWrapper') == 2"> .xf-uix_contentWrapperStyle(); padding: @xf-pageEdgeSpacer; @media (max-width: @xf-responsiveEdgeSpacerRemoval) { padding: {{ property('pageEdgeSpacer') / 2 }}px; margin-left: -{{ property('pageEdgeSpacer') / 2 }}px; margin-right: -{{ property('pageEdgeSpacer') / 2 }}px; border: none; box-shadow: none; } </xf:if> } .p-body-sideNav { display: table-cell; vertical-align: top; width: @xf-sidebarWidth; float: left; } .p-body-sideNavTrigger { display: none; } .p-body-sidebar { // display: table-cell; display: inline-block; vertical-align: top; width: @xf-sidebarWidth; .contentRow-figure .avatar--m { // make these avatars a bit smaller in the sidebar so the content has more space .m-avatarSize(@avatar-m * 2 / 3); } } .block[data-widget-id], .p-body-sideNav, .p-body-sidebar, .uix_extendedFooterRow, .columnContainer-sidebar { .block-container { .xf-uix_sidebarWidgetWrapper(); } .block-minorHeader, .block-header { display: flex; align-items: center; padding: @xf-uix_widgetPadding; .xf-uix_sidebarWidgetHeading(); } .block-minorHeader:before, .block-header:before { <xf:if is="{{ property('uix_iconFontFamily') == 'fontawesome' }}"> .m-faBase(); </xf:if> font-size: @xf-uix_iconSize !important; padding-right: @xf-paddingMedium; color: ; } .block-footer { padding: @xf-uix_widgetPadding; .xf-uix_sidebarWidgetFooter(); } .block-row { padding: @xf-uix_widgetPadding; .xf-uix_sidebarBlockRow(); } } // ---- Widget icons ----- .p-body-sidebar .block .block-minorHeader:before, .p-body-sideNavContent .block .block-minorHeader:before, .p-body-pageContent .block .block-minorHeader:before, .p-body-sidebar .block .block-header:before, .p-body-sideNavContent .block .block-header:before, .p-body-pageContent .block .block-header:before { <xf:if is="{{ property('uix_iconFontFamily') == 'fontawesome' }}"> .m-faBase(); </xf:if> } .block[data-widget-definition], .block[data-widget-key], .p-body-sideNav, .p-body-sidebar { <xf:if is="{{ property('uix_defaultSidebarIcon') }}"> .block-minorHeader:before, .block-header:before, { .m-faContent(@fa-var-file-alt); <xf:macro template="uix_icons.less" name="content" arg-icon="article" /> } </xf:if> } .block[data-widget-definition="th_userNavigation"] .block-minorHeader:before { .m-faContent(@fa-var-user); <xf:macro template="uix_icons.less" name="content" arg-icon="user" /> } .block[data-widget-definition="members_online"] .block-minorHeader:before { .m-faContent(@fa-var-users); <xf:macro template="uix_icons.less" name="content" arg-icon="user-multiple" /> } .block[data-widget-definition="board_totals"] .block-minorHeader:before, .block[data-widget-definition="online_statistics"] .block-minorHeader:before, .block[data-widget-definition="forum_statistics"] .block-minorHeader:before { .m-faContent(@fa-var-chart-bar); <xf:macro template="uix_icons.less" name="content" arg-icon="statistics" /> } .block[data-widget-definition="share_page"] .block-minorHeader:before { .m-faContent(@fa-var-share); <xf:macro template="uix_icons.less" name="content" arg-icon="share" /> } .block[data-widget-definition="most_messages"] .block-minorHeader:before { .m-faContent(@fa-var-comments); <xf:macro template="uix_icons.less" name="content" arg-icon="messages" /> } .block[data-widget-definition="find_member"] .block-minorHeader:before { .m-faContent(@fa-var-search); <xf:macro template="uix_icons.less" name="content" arg-icon="search-member" /> } .block[data-widget-definition="new_threads"] .block-minorHeader:before, .block[data-widget-definition="new_profile_posts"] .block-minorHeader:before, .block[data-widget-definition="new_posts"] .block-minorHeader:before{ .m-faContent(@fa-var-comment); <xf:macro template="uix_icons.less" name="content" arg-icon="post" /> } .block[data-widget-definition="birthdays"] .block-minorHeader:before{ .m-faContent(@fa-var-birthday-cake); <xf:macro template="uix_icons.less" name="content" arg-icon="birthday" /> } .block[data-widget-definition="th_navigation"] .block-minorHeader:before{ .m-faContent(@fa-var-list); <xf:macro template="uix_icons.less" name="content" arg-icon="list" /> } body .block[data-widget-key="thuix_footer_facebookWidget"] .block-minorHeader:before { .m-faBase('Brands'); .m-faContent(@fa-var-facebook); <xf:macro template="uix_icons.less" name="content" arg-icon="facebook" /> } body .block[data-widget-definition="thuix_footer_twitterWidget"] .block-minorHeader:before{ .m-faBase('Brands'); .m-faContent(@fa-var-twitter); <xf:macro template="uix_icons.less" name="content" arg-icon="twitter" /> } form[data-xf-init*="poll-block"] .block-minorHeader:before { .m-faContent(@fa-var-poll); <xf:macro template="uix_icons.less" name="content" arg-icon="poll" /> } // xpress WP widget support .p-body-sidebar .block-xpress { .block-minorHeader:before { .m-faContent(@fa-var-file-alt); <xf:macro template="uix_icons.less" name="content" arg-icon="article" /> } &.widget_media_gallery .block-minorHeader:before, &.widget_media_audio .block-minorHeader:before { .m-faContent(@fa-var-image); <xf:macro template="uix_icons.less" name="content" arg-icon="media" /> } &.widget_calendar .block-minorHeader:before { .m-faContent(@fa-var-calendar); <xf:macro template="uix_icons.less" name="content" arg-icon="\f0ed" /> } &.widget_recent_comments .block-minorHeader:before { .m-faContent(@fa-var-comments); <xf:macro template="uix_icons.less" name="content" arg-icon="comment-multiple" />} &.widget_search .block-minorHeader:before { .m-faContent(@fa-var-search); <xf:macro template="uix_icons.less" name="content" arg-icon="search" />} } <xf:if is="!property('uix_sidebarIcons')"> .p-body-sidebar .block .block-minorHeader:before, .p-body-sideNavContent .block .block-minorHeader:before, .p-body-pageContent .block .block-minorHeader:before, .p-body-sidebar .block .block-header:before, .p-body-sideNavContent .block .block-header:before, .p-body-pageContent .block .block-header:before {display: none !important;} </xf:if> <xf:if is="!property('uix_footerIcons')"> .uix_extendedFooterRow .block .block-minorHeader:before {display: none !important;} </xf:if> .uix_extendedFooterRow .block-minorHeader:before { .m-faBase(); font-size: @xf-uix_iconSize !important; padding-right: @xf-paddingMedium; } <xf:if is="property('uix_visitorPanelIcons')"> .block[data-widget-definition="visitor_panel"] .pairs { dt:after {display: none;} } </xf:if> .p-body-content, .p-body-sideNav, .p-body-sideNavContent, .uix_sidebarInner { > :first-child { margin-top: 0; } > :last-child { margin-bottom: 0; } } @media (max-width: @xf-uix_sidebarBreakpoint ) { /* .p-body-main, .p-body-content { display: block; } */ .p-body-content {flex-grow: 1; width: 100%;} .p-body-sideNav { display: block; width: 100%; } .p-body-sideNavTrigger { margin-bottom: ((@xf-elementSpacer) / 2); text-align: center; .button:before { .m-faBase(); font-size: 120%; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; .m-faContent(@fa-var-bars, .86em); <xf:macro template="uix_icons.less" name="content" arg-icon="menu" /> } .has-js & { display: block; } } .has-js .p-body-sideNavInner:not(.offCanvasMenu) { display: none; .m-transitionFadeDown(); } .has-no-js .p-body-sideNavInner { margin-bottom: @xf-elementSpacer; } .p-body-sidebar { width: 100%; float: none; order: 1; flex-grow: 1; display: block; margin-top: @xf-elementSpacer; .uix_sidebarInner { display: flex; flex-wrap: wrap; align-items: stretch; flex-grow: 1; margin: 0 -((@xf-pageEdgeSpacer) / 2); } .uix_sidebarInner .uix_sidebar--scroller > * { margin: 0 ((@xf-pageEdgeSpacer) / 2) @xf-elementSpacer; min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; .block-container { margin-left: 0; margin-right: 0; } &:last-child { margin-bottom: @xf-elementSpacer; } } .uix_sidebarInner.offCanvasMenu-content .uix_sidebar--scroller > * { flex: auto; min-width: 0; } // add an invisible block to ensure that the last row has the correct widths &:after { display: block; content: ''; height: 0; margin: 0 ((@xf-pageEdgeSpacer) / 2); min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; } .block-container { display: flex; flex-direction: column; height: 100%; .block-footer { margin-top: auto; } } } .p-body-main--withSideNav, .p-body-main--withSidebar { .p-body-content { padding: 0; } } } .uix_sidebarCollapsed .uix_sidebarInner { overflow: hidden; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .p-body-sideNavContent { // this is likely to contain blocks that overflow the container so account for that margin: 0 -@xf-pageEdgeSpacer; padding: 0 @xf-pageEdgeSpacer; .offCanvasMenu & { margin: 0; padding: 0; } } .p-body-sidebar { display: block; margin-left: 0; margin-right: 0; .uix_sidebarInner > * { // margin-left: 0; // margin-right: 0; min-width: 0; } } }]]>

</template>


-<template title="app_breadcrumbs.less" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[.uix_headerContainer { .breadcrumb { <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> .pageContent { <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> } } } .breadcrumb { @media (min-width: @xf-responsiveNarrow) { .xf-uix_breadcrumbWrapper(); } &.p-breadcrumb--bottom { .xf-uix_breadcrumbWrapperBottom(); } .pageContent { display: flex; align-items: center; > *:not(:last-child) {margin-right: @xf-paddingMedium;} } .uix_breadcrumb--opposite { margin-left: auto; display: inline-flex; align-items: center; > *:not(:last-child) {margin-right: 5px;} } } .uix_headerContainer .breadcrumb .pageContent { <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> } .p-breadcrumbs { .m-listPlain(); .m-clearFix(); // margin-bottom: 5px; // line-height: 1.5; display: flex; align-items: center; flex-grow: 1; @media (min-width: @xf-responsiveNarrow) { .xf-uix_breadcrumbStyle(); } i {font-size: @xf-uix_iconSize;} &.p-breadcrumbs--bottom { // margin-top: @xf-elementSpacer; margin-bottom: 0; } > li { float: left; margin-right: .5em; font-size: @xf-fontSizeSmall; display: flex; align-items: center; font-size: inherit; a { display: inline-block; vertical-align: bottom; max-width: 300px; .m-overflowEllipsis(); .xf-uix_breadcrumbItem(); } &:after, &:before { .m-faBase(); // font-size: 90%; // color: @xf-textColorMuted; } &:after { .m-faContent(@fa-var-angle-right, .36em, ltr); .m-faContent(@fa-var-angle-left, .36em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-right" /> font-size: @xf-uix_iconSize; margin-left: .5em; } &:first-child { padding-left: 0; } &:last-child { margin-right: 0; &:after {display: none;} a { font-weight: @xf-fontWeightHeavy; .xf-uix_breadcrumbItem__active(); } } } } @media (max-width: @xf-responsiveMedium) { .p-breadcrumbs > li a { max-width: 200px; } } @media (max-width: @xf-responsiveNarrow) { .p-breadcrumbs { > li { font-size: @xf-fontSizeSmallest; display: none; padding-left: 0; a { display: inline-flex; align-items: center; } &:last-child { // display: block; display: flex; } a { max-width: 90vw; color: inherit !important; &:hover {text-decoration: none;} } &:after { display: none; } a:before { .m-faBase(); .m-faContent(@fa-var-chevron-left, .72em, ltr); .m-faContent(@fa-var-chevron-right, .72em, rtl); // margin-right: .5em; <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-left" /> font-size: @xf-uix_iconSizeLarge !important; color: inherit; } } } }]]>

</template>


-<template title="app_footer.less" version_string="2.1.0 Beta 2" version_id="2010032" addon_id="XF" type="public">

<![CDATA[// ######################################### FOOTER ################################# <xf:comment> may have been removed at xf2 beta .p-footer-debug-list { // color: xf-default(@xf-publicFooterLink--color, inherit); .pairs--debug { display: inline; padding-right: 4px; > dt, > dd { display: inline; color: inherit; a {padding: 0;} } } } </xf:comment> .p-footer { display: flex; flex-direction: column; .xf-publicFooter(); // a {.xf-publicFooterLink();} } .p-footer-inner { order: @xf-uix_footerMenuOrder; <xf:if is="property('uix_pageStyle') != 'covered' && !property('uix_forceCoverFooterMenu')"> .m-pageWidth(); .m-pageInset(); </xf:if> padding-top: @xf-paddingMedium; padding-bottom: @xf-paddingMedium; .xf-uix_footerMenu(); .pageContent { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; <xf:if is="property('uix_pageStyle') == 'covered' || property('uix_forceCoverFooterMenu')"> .m-pageWidth(); .m-pageInset(); <xf:if is="(property('uix_pageStyle') != 'wrapped')"> padding:0; </xf:if> </xf:if> } a { .xf-publicFooterLink(); } } .p-footer-copyrightRow { order: @xf-uix_copyrightOrder; <xf:if is="property('uix_pageStyle') != 'covered' && !property('uix_forceCoverCopyright')"> .m-pageWidth(); .m-pageInset(); </xf:if> .xf-uix_footerCopyrightRow(); .pageContent { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; <xf:if is="property('uix_pageStyle') == 'covered' || property('uix_forceCoverCopyright')"> .m-pageWidth(); .m-pageInset(); <xf:if is="(property('uix_pageStyle') != 'wrapped')"> padding:0; </xf:if> </xf:if> } .p-footer-debug-list li a { color: inherit; &:hover {color: inherit; text-decoration: underline;} } } /* commented out in beta 1 (Ian) .p-footer-row { .m-clearFix(); margin-bottom: -@xf-paddingLarge; } .p-footer-row-main { float: left; margin-bottom: @xf-paddingLarge; } .p-footer-row-opposite { float: right; margin-bottom: @xf-paddingLarge; } */ .p-footer-linkList { .m-listPlain(); // .m-clearFix(); display: inline-flex; flex-wrap: wrap; align-items: center; > li { /* commented out in beta 1 (Ian) float: left; margin-right: .5em; margin: @xf-paddingMedium; */ &:last-child { margin-right: 0; } a { padding: 6px; border-radius: @xf-borderRadiusSmall; display: inline-block; &:hover { .xf-uix_footerLinkHover(); text-decoration: none; // background-color: fade(@xf-publicFooterLink--color, 10%); } } } &.p-footer-choosers { margin: -6px; a { margin: 6px; .xf-uix_footerChooser(); &:hover {.xf-uix_footerChooserHover();} // i {display: none;} } } } .p-footer-rssLink { > span { position: relative; top: -1px; display: inline-block; width: 1.44em; height: 1.44em; line-height: 1.44em; text-align: center; font-size: .8em; background-color: #FFA500; border-radius: 2px; } .fa-rss { color: white; } } /* .p-footer-copyright { margin-top: @xf-elementSpacer; text-align: center; font-size: @xf-fontSizeSmallest; } .p-footer-debug { margin-top: @xf-paddingLarge; text-align: right; font-size: @xf-fontSizeSmallest; } */ @media (max-width: @xf-responsiveMedium) { .p-footer-row-main, .p-footer-row-opposite { float: none; } .p-footer-copyright { text-align: left; padding: 0 4px; // aligns with other links } }]]>

</template>


-<template title="app_header.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// MAIN HEADER ROW .p-header { .xf-publicHeader(); <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> .p-header-logo img {max-width: @xf-uix_logoWidth;} a { color: inherit; } .p-header-logo img {width: 100%;} } .p-header-inner { .m-pageInset(); <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> position: relative; } .p-header-content { // padding: @xf-paddingMedium 0; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; max-width: 100%; <xf:if is="property('uix_viewportCenterLogo') == '100%'"> justify-content: center; flex-direction: column; .p-nav-opposite {margin-top: @xf-paddingLarge; margin-left: 0;} .p-header-logo {margin-right: 0;} </xf:if> @media (max-width: @xf-uix_viewportCenterLogo) { justify-content: center; flex-direction: column; .p-nav-opposite {margin-top: @xf-paddingLarge; margin-left: 0;} .p-header-logo {margin-right: 0;} } } .p-header-logo { vertical-align: middle; // margin-right: auto; a { color: inherit; text-decoration: none; } &.p-header-logo--text { font-size: @xf-fontSizeLargest; } &.p-header-logo--image { img { // vertical-align: bottom; // max-width: 100%; // max-height: 200px; } } .uix_logoIcon {.xf-uix_logoIconStyle();} } @media (max-width: @xf-responsiveNarrow) { .p-header-logo { // max-width: 100px; &.p-header-logo--text { font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; .m-overflowEllipsis(); } } .p-navgroup-link { .p-navGroup--member & { margin-left: 5px; &:first-of-type { margin-left: 0; } } } }]]>

</template>


-<template title="app_ignored.less" version_string="2.0.0 Beta 3" version_id="2000033" addon_id="XF" type="public">

<![CDATA[// ################## IGNORED USERS / CONTENT ########################## .is-ignored { display: none !important; } .showIgnoredLink { &.is-hidden { display: none !important; } } .block-outer .showIgnoredLink, .showIgnoredLink.showIgnoredLink--subtle { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; &:hover { color: @xf-textColorDimmed; } }]]>

</template>


-<template title="app_inlinemod.less" version_string="2.1.0 Beta 3" version_id="2010033" addon_id="XF" type="public">

<![CDATA[// #################################### INLINE MOD BUTTON ################ .inlineModButton { display: inline-block; position: relative; i:before { display: inline-block; .m-faBase(); .m-faContent(@fa-var-check-square, .88em); vertical-align: -1px; font-size: 1.2em; margin: -.2em 0; line-height: 1; } &.inlineModButton--noIcon i { display: none; } &.is-mod-active { color: @xf-textColorAttention; .inlineModButton-count { display: inline; } } &:not(.inlineModButton--withLabel) { .inlineModButton-label { .m-visuallyHidden(); } } } .inlineModButton-count { display: none; position: absolute; top: -3px; left: -6px; .xf-contentHighlightBase(); border: @xf-borderSize solid @xf-borderColorAccentContent; border-radius: @xf-borderRadiusSmall; padding: 1px 2px; font-size: 9px; line-height: 1; .inlineModButton--noIcon & { position: static; font-size: 80%; padding-top: 0; padding-bottom: 0; } } // #################################### INLINE MOD BAR ################ .inlineModBar { .xf-inlineModBar(); .m-transitionFadeDown(); .m-clearFix(); .input, .button { padding-top: @xf-paddingSmall; padding-bottom: @xf-paddingSmall; height: auto; line-height: inherit; } &.is-active:first-of-type { .m-dropShadow(0, 0, 8px, 3px, 0.3); } } .inlineModBar-inner { .m-pageWidth(); .m-pageInset(); display: flex; align-items: center; } .inlineModBar-controls { .m-listPlain(); margin-right: auto; display: flex; align-items: center; flex-wrap: wrap; min-height: 35px; max-width: 100%; > li { float: left; display: inline-block; margin-right: 1em; &:last-child { margin-right: 0; } } } .inlineModBar-close { float: right; margin-left: 1em; order: 2; } .inlineModBar-title { font-weight: @xf-fontWeightHeavy; } .button.inlineModBar-goButton { font-size: @xf-fontSizeNormal; line-height: 1.5; // matches select min-width: 0; } .inlineModBarCover { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; cursor: pointer; }]]>

</template>


-<template title="app_nav.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// navEl / Navigation Elements for header navigation .m-navElHPadding(@padding) { .p-navEl-link { padding: 0 @padding; &.p-navEl-link--splitMenu { padding-right: ((@padding) / 4); } &.p-navEl-link--menuTrigger { padding-right: ((@padding) / 3); // equal to splitTrigger padding-right &:after { padding-left: ((@padding) / 4 + (@padding) / 3); // equal to splitMenu padding-right + splitTrigger padding-left } } } .p-navEl .p-navEl-splitTrigger { padding: 0 ((@padding) / 3); font-size: @xf-uix_iconSize; // margin-right: @xf-paddingMedium; } } .p-navEl { .m-clearFix(); display: inline-flex; align-items: center; } .p-navEl-linkHolder { float: left; } .p-navEl-link { float: left; // .m-transition(opacity, background; @_nav-elTransitionSpeed); text-decoration: none; max-height: 100%; &.p-navEl-link--menuTrigger { cursor: pointer; &:after { .m-menuGadget(); // .58em opacity: .5; .m-transition(opacity; @_nav-elTransitionSpeed); } &:hover:after { opacity: 1; } } } .p-navEl-splitTrigger { float: left; opacity: .5; cursor: pointer; text-decoration: none; .m-transition(all; @_nav-elTransitionSpeed); &:after { .m-menuGadget(); // .58em line-height: 1; } &:hover { opacity: 1; text-decoration: none; } } // HEADER NAV ROW .p-nav { .xf-publicNav(); <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> transition: ease-in .15s all; a:not(.button) { color: inherit; } .p-navSticky.is-sticky & { .p-nav-list .p-navEl.is-selected, .p-account { border-radius: 0; } } } .p-nav-inner { <xf:if is="property('uix_pageStyle') == 'covered'"> .m-pageWidth(); .m-pageInset(0px); </xf:if> position: relative; <xf:if is="property('uix_navigationBarHeight')"> height: @xf-uix_navigationBarHeight; </xf:if> .p-header-logo { display: inline-flex; align-items: center; margin-right: @xf-paddingLarge; &.p-header-logo--image img { max-height: calc(@xf-uix_navigationBarHeight - (@xf-uix_navLogoVertSpacing * 2)); .is-sticky & { max-height: calc(@xf-uix_stickyNavHeight - (@xf-uix_navLogoVertSpacing * 2)); } } } .m-clearFix(); display: flex; align-items: center; } .p-nav .uix_activeNavTitle { .xf-uix_activeNavTitleStyle(); display: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @media (max-width: @xf-publicNavCollapseWidth) and (min-width: @xf-responsiveNarrow) { display: inline-block; } } .p-nav .p-nav-menuTrigger { display: none; vertical-align: middle; align-self: center; // margin-left: max(0px, @xf-pageEdgeSpacer - 6px); margin-right: 5px; padding: 0 8px; &:hover { text-decoration: none; cursor: pointer; } i:after { .m-faBase(); font-size: @xf-fontSizeLargest; .m-faContent(@fa-var-bars, .86em); <xf:macro template="uix_icons.less" name="content" arg-icon="menu" /> vertical-align: bottom; font-size: @xf-uix_iconSizeLarge; } .p-nav-menuText { display: none; } } <xf:if is="property('uix_logoSmall')"> .uix_logoSmall { <xf:if is="property('uix_brandmarkImage__breakpoint') != '100%'"> display: none; </xf:if> // max-width: 100px; align-self: center; img { display: block; max-height: @header-navHeight; } } <xf:if is="property('uix_brandmarkImage__breakpoint') == '100%'"> .p-header-logo.p-header-logo--image .uix_logo {display: none;} </xf:if> @media (max-width: {{ property('uix_brandmarkImage__breakpoint') - 1 }}px) { .uix_logoSmall {display: inline-block;} .p-header-logo.p-header-logo--image .uix_logo {display: none;} } </xf:if> .uix_logo--text { display: flex; align-items: center; .xf-uix_logoText__style(); } <xf:if is="property('uix_logoTextBreakpoint')"> @media (max-width: @xf-uix_logoTextBreakpoint) { .uix_logo--text {font-size: @xf-uix_responsiveLogoFontSize;} } </xf:if> .p-nav-scroller { margin-right: auto; max-width: 100%; .hScroller-scroll:not(.is-calculated) { // IE11 seems to want to flash a vertical scrollbar without this here overflow: hidden; } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-publicNav--background-color, transparent), xf-default(@xf-publicNav--color, ~""), xf-intensify(@xf-publicNav--color, 10%) ); } } .p-nav-list { .m-listPlain(); .m-clearFix(); display: flex; align-items: center; font-size: 0; // this applies padding that will be contained within the scroller. // it needs font-size 0 to not create extra space though /* &:before, &:after { display: inline-block; width: @xf-pageEdgeSpacer; content: ''; } */ > li { display: inline-block; vertical-align: bottom; font-size: @xf-fontSizeNormal; &:first-child { margin-left: 0; } } .badgeContainer:after {margin-left: 4px;} .m-navElHPadding(@xf-publicNavPaddingH); .p-navEl { .xf-publicNavTab(); .m-transition(all; @_nav-elTransitionSpeed); &.is-selected { .xf-publicNavSelected(); .p-navEl-link { <xf:if is="{{ property('uix_viewportWidthRemoveSubNav') }} != '100%'"> @media (min-width: {{ property('uix_viewportWidthRemoveSubNav') + 1 }}px ) { padding-right: @xf-publicNavPaddingH; // since the split trigger is hidden } </xf:if> &:hover { background: none; text-decoration: none; color: inherit; } } .p-navEl-splitTrigger { <xf:if is="{{ property('uix_viewportWidthRemoveSubNav') }} != '100%'"> @media (min-width: {{ property('uix_viewportWidthRemoveSubNav') + 1 }}px ) { display: none; } </xf:if> } } &:not(.is-selected):not(.is-menuOpen) { &:hover, // .p-navEl-link:hover, // .p-navEl-splitTrigger:hover { .xf-publicNavTabHover(); } .p-navEl-link:hover, .p-navEl-splitTrigger:hover { text-decoration: none; color: inherit; } } &.is-menuOpen { .xf-publicNavTabMenuOpen(); border-top-left-radius: xf-default(@xf-publicNavSelected--border-top-left-radius, 0); border-top-right-radius: xf-default(@xf-publicNavSelected--border-top-right-radius, 0); // .m-dropShadow(0, 5px, 10px, 0, .35); a { // text-decoration: none; // opacity: 1; } } } .p-navEl-link, .p-navEl-splitTrigger { padding-top: @xf-publicNavPaddingV; padding-bottom: @xf-publicNavPaddingV; display: inline-flex; align-items: center; &:hover {background: none !important;} } } .p-navSticky--primary.is-sticky { .p-nav-list { .p-navEl-link.p-navEl-link--splitMenu { padding-right: ((@xf-publicNavPaddingH) / 4); } .p-navEl.is-selected .p-navEl-splitTrigger { display: inline; position: relative; &:before { content: ''; position: absolute; left: 0; top: 5px; bottom: 5px; width: 0; border-left: @xf-borderSize solid fade(xf-default(@xf-publicNavSelected--color, transparent), 35%); } } } } @media (max-width: @xf-publicNavCollapseWidth) { .has-js { .p-nav-inner { // min-height: 45px; } .p-nav .p-nav-menuTrigger { display: inline-flex; } .p-sectionLinks .p-sectionLinks--group { display: none; } .p-nav-scroller { display: none; } } } // ACCOUNT/VISITOR/SEARCH SECTION .p-nav-opposite { margin-left: auto; // margin-right: @xf-pageEdgeSpacer; text-align: right; flex-shrink: 0; display: inline-flex; align-items: center; } .p-navgroup { float: left; .m-clearFix(); // background: @xf-publicHeaderAdjustColor; border-top-left-radius: @xf-borderRadiusMedium; border-top-right-radius: @xf-borderRadiusMedium; display: inline-flex; &.p-discovery { // margin-left: .5em; &.p-discovery--noSearch { margin-left: 0; } i {line-height: 1;} } .p-navgroup-linkText {padding-left: @xf-paddingSmall;} } <xf:if is="property('uix_removeVisitorTabsText')"> @media (max-width: @xf-uix_viewportRemoveVisitorTabsText) { .p-navgroup.p-navgroup--member .p-navgroup-linkText, .p-discovery .p-navgroup-linkText {display: none;} .p-navgroup.p-navgroup--member .p-navgroup-link i, .p-navgroup.p-discovery .p-navgroup-link i { &:after, &:before { font-size: @xf-uix_iconSizeLarge; } } } </xf:if> <xf:if is="property('uix_removeRegisterText')"> @media (max-width: @xf-uix_viewportRemoveRegisterText) { .p-navgroup--guest .p-navgroup-linkText {display: none;} .p-navgroup.p-navgroup--guest .p-navgroup-link i { &:after, &:before { font-size: @xf-uix_iconSizeLarge; } } } </xf:if> <xf:if is="property('uix_condenseVisitorTabs')"> @media (max-width: @xf-uix_viewportCondenseVisitorTabs) { .p-account.p-navgroup--member { .p-navgroup-link--conversations {display: none;} .p-navgroup-link--alerts {display: none;} } } </xf:if> .p-navgroup-link { float: left; padding: (@xf-publicNavPaddingV / 2); // border-left: 1px solid @xf-publicHeaderAdjustColor; display: inline-flex; align-items: center; <xf:if is="property('uix_removeVisitorTabsText')"> @media (max-width: @xf-uix_viewportRemoveVisitorTabsText) { padding: @xf-paddingSmall; } </xf:if> &:first-of-type { border-top-left-radius: @xf-borderRadiusMedium; border-left: none; } &:last-of-type { border-top-right-radius: @xf-borderRadiusMedium; } &:hover { text-decoration: none; // background: xf-intensify(@xf-publicHeaderAdjustColor, 5%); } &.p-navgroup-link--user { .m-overflowEllipsis(); max-width: 150px; .avatar { // .m-avatarSize((@xf-fontSizeNormal) * (@xf-lineHeightDefault)); .m-avatarSize(@xf-uix_iconSizeLarge); margin: 1px 0; @media (min-width: @xf-uix_removeVisitorTabsText) { .m-avatarSize(@xf-uix_iconSize); font-size: 11px; } } } &.badgeContainer { // opacity: .6; position: relative; &:after { position: absolute; // left: (@_navAccount-hPadding - 6px); // top: (@xf-publicNavPaddingV - 2px); right: 2px; top: 3px; padding: 1px 3px; margin: 0; font-size: 10px; line-height: 11px; } &:hover, &.badgeContainer--highlighted { // opacity: 1; } } &.is-menuOpen { .xf-publicNavTabMenuOpen(); // .m-dropShadow(0, 5px, 10px, 0, .35); opacity: 1; } /* &.p-navgroup-link--iconic { i:after { .m-faBase(); display: inline-block; min-width: 1.2em; text-align: center; } } */ &.p-navgroup-link--conversations { i:after { .m-faBase(); display: inline-block; min-width: 1em; .m-faContent(@fa-var-envelope, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="email" /> } } &.p-navgroup-link--alerts { i:after { .m-faBase(); display: inline-block; min-width: 1em; .m-faContent(@fa-var-bell, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="alert" /> } } &.p-navgroup-link--bookmarks i:after { .m-faContent(@fa-var-bookmark, .75em); } &.p-navgroup-link--whatsnew i:after { .m-faBase(); .m-faContent(@fa-var-bolt, .5em); <xf:macro template="uix_icons.less" name="content" arg-icon="comment-alert" /> font-size: @xf-uix_iconSizeLarge; width: auto; } &.p-navgroup-link--search i:after { .m-faBase(); .m-faContent(@fa-var-search, .93em); <xf:macro template="uix_icons.less" name="content" arg-icon="search" /> font-size: @xf-uix_iconSizeLarge !important; } &.p-navgroup-link--logIn { i:after { .m-faBase(); display: inline-block; min-width: 1em; .m-faContent(@fa-var-key); <xf:macro template="uix_icons.less" name="content" arg-icon="login" /> } } &.p-navgroup-link--register { i:after { .m-faBase(); display: inline-block; min-width: 1em; .m-faContent(@fa-var-clipboard); <xf:macro template="uix_icons.less" name="content" arg-icon="register" /> } } } .p-navgroup-link--whatsnew { display: none; .p-navgroup-link:first-of-type& + .p-navgroup-link { border-top-left-radius: @xf-borderRadiusMedium; border-left: none; } } <xf:if is="property('uix_visitorTabsMobile') != 'initial'"> @media (max-width: @xf-responsiveNarrow) { .p-navgroup.p-account { .p-navgroup-link--user {display: none;} .p-navgroup-link--conversations {display: none;} .p-navgroup-link--alerts {display: none;} } <xf:if is="property('uix_visitorTabsMobile') == 'tabbar'"> .p-navgroup.p-discovery { .p-navgroup-link--whatsnew {display: none;} } </xf:if> } </xf:if> @media (max-width: @xf-responsiveWide) { /* .p-navgroup-link { &.p-navgroup-link--iconic .p-navgroup-linkText, &.p-navgroup-link--textual i { display: none; } &.p-navgroup-link--textual { .m-overflowEllipsis(); max-width: 110px; } &.p-navgroup-link--iconic i:after { text-align: center; } } */ } @media (max-width: @xf-publicNavCollapseWidth) { .p-navgroup-link--whatsnew { display: inline-flex; .p-navgroup-link:first-of-type& + .p-navgroup-link { // border-top-left-radius: 0; // border-left: 1px solid @xf-publicHeaderAdjustColor; } } .has-js { .p-nav-opposite { align-self: center; // margin-right: max(0px, @xf-pageEdgeSpacer - 6px); .p-navgroup { background: none; } .p-navgroup-link { border: none; border-radius: @xf-borderRadiusMedium; &.is-menuOpen { .m-borderBottomRadius(0); } &.badgeContainer { opacity: 1; } } } } } /* @media (max-width: 359px) { .p-navgroup-link&.p-navgroup-link--user { display: none; } } @media (max-width: 374px) { .p-navgroup-link.p-navgroup-link--register { display: none; } } */ .p-navgroup .p-navgroup-link i { &:after, &:before { @media (min-width: @xf-uix_viewportRemoveRegisterText) { font-size: @xf-uix_iconSize; // padding-right: @xf-paddingMedium; } } } <xf:if is="property('uix_rightAlignNavigation')"> @media (min-width: @xf-publicNavCollapseWidth) { .p-nav-inner .p-nav-opposite, .p-sectionLinks .p-nav-opposite {margin-left: 0;} .p-nav-inner .p-nav-scroller, .p-sectionLinks .p-sectionLinks-inner {margin-right: 0; margin-left: auto;} } </xf:if>]]>

</template>


-<template title="app_sectionlinks.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// SUB SECTION LINKS .p-sectionLinks { .xf-publicSubNav(); <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> transition: ease-in .15s all; .p-sectionLinks--group { display: flex; align-items: center; <xf:if is="property('uix_rightAlignNavigation')"> &:first-child { margin-left: auto; } </xf:if> } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-publicSubNav--background-color, transparent), xf-default(@xf-publicSubNav--color, ~""), xf-default(@xf-publicSubNavElHover--color, ~"") ); } .p-nav-opposite a:not(.button) { color: inherit; &:hover { .xf-publicSubNavElHover(); } } &.p-sectionLinks--empty { height: 10px; display: none; } .pageContent { display: flex; align-items: center; position: relative; justify-content: space-between; <xf:if is="property('publicNavSticky')"> min-height: @xf-uix_stickySectionLinkHeight; height: @xf-uix_stickySectionLinkHeight; </xf:if> <xf:if is="property('uix_pageStyle') == 'covered'"> .m-pageWidth(); </xf:if> } .p-navgroup .p-navgroup-link i:after, .p-navSearch-trigger i:after {font-size: @xf-uix_iconFont;} .p-navgroup-link.p-navgroup-link--user .avatar { font-size: @xf-uix_iconSizeLarge; .m-avatarSize(@xf-uix_iconSize); } .p-navSearch-trigger, .p-navgroup .p-navgroup-link {padding: @xf-paddingSmall;} } .p-sectionLinks-inner { // .m-clearFix(); // .m-pageWidth(); @defaultPadding: max(0px, @xf-pageEdgeSpacer - @xf-publicSubNavPaddingH); .m-pageInset(@defaultPadding); margin-right: auto; } .p-sectionLinks-list { .m-listPlain(); font-size: 0; a { color: inherit; } > li { display: inline-block; } .m-navElHPadding(@xf-publicSubNavPaddingH); .p-navEl { font-size: @xf-publicSubNav--font-size; // padding-top: @xf-paddingMedium; // padding-bottom: @xf-paddingMedium; &:hover { .xf-publicSubNavElHover(); a { text-decoration: @xf-publicSubNavElHover--text-decoration; } } <xf:comment> &.is-menuOpen { .xf-publicSubNavElMenuOpen(); .m-borderBottomRadius(0); .m-dropShadow(0, 5px, 10px, 0, .35); } </xf:comment> } .p-navEl-link, .p-navEl-splitTrigger { padding-top: @xf-publicSubNavPaddingV; padding-bottom: @xf-publicSubNavPaddingV; } } <xf:if is="(property('uix_searchPosition') != 'tablinks') && (property('uix_loginTriggerPosition ') != 'tablinks') && (property('uix_userTabsPosition ') != 'tablinks')"> @media (max-width: @xf-publicNavCollapseWidth) { .has-js .p-sectionLinks-inner { display: none; } } </xf:if>]]>

</template>


-<template title="app_staffbar.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// ######################################### STAFF BAR ################################# .p-staffBar { .xf-publicStaffBar(); <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); .m-pageInset(); </xf:if> .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-publicStaffBar--background-color, transparent), xf-default(@xf-publicStaffBar--color, ~""), xf-intensify(@xf-publicStaffBar--color, 10%) ); } .pageContent { display: flex; align-items: center; // justify-content: space-between; position: relative; <xf:if is="property('uix_pageStyle') == 'covered'"> .m-pageWidth(); .m-pageInset(); </xf:if> <xf:if is="property('uix_stickyStaffBar')"> min-height: @xf-uix_stickyStaffBarHeight; </xf:if> .p-nav-opposite a:not(.button) { color: inherit; &:hover {.xf-uix_staffBarTabHover();} } a { .xf-uix_staffBarTab(); &:hover {.xf-uix_staffBarTabHover();} } } } .p-staffBar-inner { .m-clearFix(); // padding-top: @xf-paddingMedium; //padding-bottom: @xf-paddingMedium; } .p-staffBar-link { display: inline-block; vertical-align: top; color: inherit; padding: 4px @xf-paddingMedium; margin-right: .35em; .xf-uix_staffBarTab(); &:last-child { margin-right: 0; } &:hover { text-decoration: none; // background: xf-diminish(@xf-publicStaffBar--background-color, 6%); border-radius: @xf-borderRadiusSmall; .xf-uix_staffBarTabHover(); } }]]>

</template>


-<template title="app_stickynav.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// STICKY NAV SETUP <xf:if is="property('publicNavSticky')"> .uix_headerContainer .p-navSticky { z-index: @zIndex-1; &.is-sticky { z-index: @zIndex-4; // .m-dropShadow(0, 2px, 5px, 0px, .26); position: fixed !important; top: 0; bottom: auto !important; left: 0; right: 0; margin-left: auto; margin-right: auto; <xf:if is="property('uix_pageStyle') == 'wrapped'"> @uix_pageSpacerTotal: @xf-pageEdgeSpacer * 2; @uix_adjustedWrappedPageWidth: @xf-pageWidthMax - @uix_pageSpacerTotal; width: 100vw !important; @media (min-width: @xf-responsiveEdgeSpacerRemoval) { width: ~'calc(100vw - @{uix_pageSpacerTotal}) !important'; } @media (min-width: @uix_adjustedWrappedPageWidth) { width: @uix_adjustedWrappedPageWidth !important; } </xf:if> > * {box-shadow: @xf-uix_elevation1; border-radius: 0 !important;} .p-nav {.xf-uix_stickyNavigationStyle();} .p-sectionLinks {.xf-uix_sectionLinksStickyStyle();} <xf:if is="property('uix_pageStyle') != 'covered'"> // .m-pageWidth(); padding: 0 !important; </xf:if> <xf:if is="property('uix_pageStyle') == 'fluid'"> > * { max-width: 100%; } </xf:if> .p-nav-inner { height: @xf-uix_stickyNavHeight; .p-navEl, .p-navEl-link {max-height: @xf-uix_stickyNavHeight;} } <xf:if is="property('publicNavSticky')"> .p-sectionLinks { border-bottom: 0; .pageContent { height: @xf-uix_stickySectionLinkHeight; } } </xf:if> } } </xf:if> <xf:if is="property('uix_stickyStaffBar')"> .uix_headerContainer .uix_mainTabBar.is-sticky { position: fixed !important; bottom: auto !important; left: 0; right: 0; <xf:if is="property('uix_searchPosition') == 'navigationLeft'"> z-index: 300; </xf:if> @media (max-width: @xf-uix_search_maxResponsiveWidth ) {z-index: 500;} margin: 0 auto; border-radius: 0 !important; .tabs-tab {height: @xf-uix_mainTabsHeight;} box-shadow: @xf-uix_elevation1; <xf:if is="property('uix_pageStyle') == 'wrapped'"> width: @xf-pageWidthMax - (@xf-pageEdgeSpacer * 2) !important; </xf:if> } </xf:if> <xf:if is="property('uix_stickyStaffBar')"> .p-staffBar.is-sticky { position: fixed !important; bottom: auto !important; top: 0 !important; left: 0; right: 0; z-index: 500; margin: 0 auto; border-radius: 0 !important; .xf-uix_stickyStaffbarStyle(); height: @xf-uix_stickyStaffBarHeight; <xf:if is="property('publicNavSticky') == 'none'"> box-shadow: @xf-uix_elevation1; </xf:if> <xf:if is="property('uix_pageStyle') == 'wrapped'"> width: @xf-pageWidthMax - (@xf-pageEdgeSpacer * 2) !important; </xf:if> } </xf:if> @supports (position: sticky) or (position: -webkit-sticky) { .p-navSticky { // position: -webkit-sticky; // position: sticky; top: 0; &.is-sticky-broken, &.is-sticky-disabled { position: static; top: auto; } } }]]>

</template>


-<template title="app_title.less" version_string="2.1.0 Beta 1" version_id="2010031" addon_id="XF" type="public">

<![CDATA[.uix_headerContainer { .p-body-header { <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> .pageContent { <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> } } } .p-pageWrapper > .p-body-header .pageContent { .m-pageWidth(); min-height: 36px; } .p-body-header { .xf-uix_titlebar(); .pageContent { display: flex; align-items: center; // max-width: 100%; .p-title-pageAction {margin-top: 0;} @media(max-width: @xf-responsiveMedium) { flex-wrap: wrap; /* -- commented out as fix for mobile page action button -- .uix_headerInner--opposite { flex-grow: 1; width: 100%; } */ } } .contentRow {flex-grow: 1;} .uix_headerInner { margin: 5px; margin-left: 0; // margin-right: auto; -- commented out as fix for mobile page action button -- flex-grow: 1; } .uix_headerInner--opposite { display: inline-flex; align-items: center; flex-wrap: wrap; justify-content: center; margin-left: auto; margin-right: 0; } .uix_headerInner + .uix_headerInner--opposite { margin: 5px auto; } .p-title { display: flex; flex-wrap: wrap; align-items: center; max-width: 100%; &.p-title--noH1 { flex-direction: row-reverse; } .p-title-pageAction { margin: 5px 0; } } .p-title-value { padding: 0; margin: 0 0 3px 0; font-size: @xf-fontSizeLargest; font-weight: @xf-fontWeightNormal; margin-right: auto; min-width: 0; .xf-uix_pageTitle(); .has-no-flexbox & { float: left; } } .p-title-pageAction { margin-left: @xf-paddingLarge; @media(max-width: @xf-responsiveNarrow) { margin-left: 0; margin-top: @xf-paddingLarge; } .has-no-flexbox & { float: right; } } .p-description { margin: 0; padding: 0; font-size: inherit; color: inherit; } } .p-title-pageAction .button + .button {margin-left: @xf-paddingMedium;} @media (max-width: @xf-responsiveNarrow) { .p-title-value { font-size: @xf-fontSizeLarger; } }]]>

</template>


-<template title="app_user_banners.less" version_string="2.0.4" version_id="2000470" addon_id="XF" type="public">

<![CDATA[.m-userBannerVariation(@color; @bg; @border: false) { color: @color; background: @bg; border-color: xf-intensify(@bg, 10%); border-radius: @xf-borderRadiusMedium; & when (iscolor(@border)) { border-color: @border; } } .userBanner { font-size: 75%; font-size: 11px; font-weight: @xf-fontWeightNormal; font-style: normal; padding: 1px @xf-paddingMedium; padding: 1px 3px; border: 1px solid transparent; border-radius: @xf-borderRadiusSmall; text-align: center; display: inline-block; strong { font-weight: inherit; } // variations &.userBanner--hidden { background: none; border: none; box-shadow: none; } &.userBanner--staff, &.userBanner--primary { .m-userBannerVariation(@xf-linkColor, @xf-contentHighlightBg, @xf-borderColorHighlight); .m-userBannerVariation(#fff, @xf-uix_primaryColor, @xf-uix_primaryColor); } &.userBanner--accent { .m-userBannerVariation(#fff, @xf-uix_secondaryColor, @xf-uix_secondaryColor); } &.userBanner--red { .m-userBannerVariation(white, #d80000); } &.userBanner--green { .m-userBannerVariation(white, green); } &.userBanner--olive { .m-userBannerVariation(white, olive); } &.userBanner--lightGreen { .m-userBannerVariation(black, #ccf9c8, #bee8ba); } &.userBanner--blue { .m-userBannerVariation(white, #0008e3); } &.userBanner--royalBlue { .m-userBannerVariation(white, royalblue); } &.userBanner--skyBlue { .m-userBannerVariation(white, #7cc3e0); } &.userBanner--gray { .m-userBannerVariation(white, gray); } &.userBanner--silver { .m-userBannerVariation(black, silver); } &.userBanner--yellow { .m-userBannerVariation(black, #ffff91, #e6e687); } &.userBanner--orange { .m-userBannerVariation(black, #ffcb00); } }]]>

</template>


-<template title="approval_queue.less" version_string="2.1.0 Beta 5" version_id="2010035" addon_id="XF" type="public">

<![CDATA[.approvalQueue { .block-container.approvalQueue-item--approve { .message, .message-cell--user, .message-cell--extra { background: @xf-inlineModHighlightColor; } .message .message-userArrow:after { border-right-color: @xf-inlineModHighlightColor; } } .block-container.approvalQueue-item--delete { .message-cell--user, .message-cell--main { opacity: 0.25; } } .block-container.approvalQueue-item--spam { border-color: red; .message-cell--user, .message-cell--main { opacity: 0.25; } } }]]>

</template>


-<template title="bb_code.less" version_string="2.1.6" version_id="2010570" addon_id="XF" type="public">

<![CDATA[@_bbCodeBlock-spacing: .75em; @_bbCodeBlock-paddingV: @xf-paddingMedium; @_bbCodeBlock-paddingH: @xf-paddingLarge; @_bbCodeBlock-expandTriggerHeight: (@xf-bbCodeBlockExpandHeight) / 2; .bbCodeBlock { margin: @_bbCodeBlock-spacing 0; .xf-bbCodeBlock(); &.bbCodeBlock--quote { .bbCodeBlock-content { font-size: @xf-fontSizeSmall; } } } .bbCodeBlock-title { padding: @_bbCodeBlock-paddingV @_bbCodeBlock-paddingH; .xf-bbCodeBlockTitle(); .m-clearFix(); } a.bbCodeBlock-sourceJump { color: inherit; text-decoration: none; &:hover { text-decoration: underline; } &:after { .m-faBase(); .m-faContent(@fa-var-arrow-circle-up, 1em); display: inline-block; margin-left: 5px; } } .bbCodeBlock-content { position: relative; padding: @_bbCodeBlock-paddingV @_bbCodeBlock-paddingH; .m-clearFix(); } .bbCodeBlock--code .bbCodeBlock-content {background-color: @xf-contentBg; color: @xf-textColor;} .bbCodeBlock-expandLink { display: none; position: absolute; top: (@xf-bbCodeBlockExpandHeight) + (@_bbCodeBlock-paddingV * 2) - (@_bbCodeBlock-expandTriggerHeight); left: 0; right: 0; height: @_bbCodeBlock-expandTriggerHeight; cursor: pointer; z-index: @zIndex-1; .m-gradient( fade(@xf-bbCodeBlock--background-color, 0%), xf-default(@xf-bbCodeBlock--background-color, transparent), transparent, 0%, 60% ); a { position: absolute; bottom: @_bbCodeBlock-paddingV; left: 0; right: 0; text-align: center; font-size: @xf-fontSizeSmall; color: @xf-textColorAttention; text-decoration: none; } } .bbCodeBlock--screenLimited { .bbCodeBlock-content { max-height: 300px; max-height: 70vh; overflow: auto; -webkit-overflow-scrolling: touch; } } .bbCodeBlock--expandable { overflow: hidden; .m-transition(-xf-height, height, padding, margin, border;); .bbCodeBlock-content { overflow: hidden; .bbCodeBlock:not(.bbCodeBlock--expandable) .bbCodeBlock-content { overflow: visible; } .bbCodeBlock.bbCodeBlock--screenLimited .bbCodeBlock-content { overflow: auto; } } .bbCodeBlock-expandContent { max-height: @xf-bbCodeBlockExpandHeight; overflow: hidden; } &.is-expandable { .bbCodeBlock-expandLink { display: block; } } &.is-expanded { .bbCodeBlock-expandContent { max-height: none; } .bbCodeBlock-expandLink { display: none; } } } .bbCodeBlock--unfurl { .xf-contentHighlightBase(); padding: @_bbCodeBlock-paddingV; width: 650px; max-width: 100%; border-left: @xf-borderSizeMinorFeature solid @xf-borderColorFeature; overflow: hidden; .contentRow-header { font-size: @xf-fontSizeNormal; font-weight: normal; .m-overflowEllipsis(); } .contentRow-snippet { font-size: @xf-fontSizeSmaller; font-style: normal; } .contentRow-minor { font-size: @xf-fontSizeSmaller; } &.is-pending { opacity: 0.5; &.is-recrawl { opacity: 1; } } &.is-simple { .contentRow-figure { display: none; } } .bbCodeBlockUnfurl-icon { width: 12px; vertical-align: -2px; } } .bbCodeCode { margin: 0; padding: 0; .has-hiddenscroll & { // solely to workaround this Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=914844 // TODO: remove when fixed padding-bottom: @xf-paddingLarge; } font-family: @xf-fontFamilyCode; font-size: @xf-fontSizeSmall; line-height: @xf-lineHeightDefault; -ltr-rtl-text-align: left; direction: ltr; white-space: pre; position: relative; .m-tabSize(); code { font-family: inherit; } .prism-token { &.prism-comment, &.prism-prolog, &.prism-doctype, &.prism-cdata { color: #a50; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#a50, 40%); </xf:if> } &.prism-constant { color: #05a; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#05a, 40%); </xf:if> } &.prism-tag { color: #170; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#170, 40%); </xf:if> } &.prism-boolean { color: #219; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#219, 40%); </xf:if> } &.prism-symbol, &.prism-atrule, &.prism-keyword { color: #708; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#708, 40%); </xf:if> } &.prism-selector, &.prism-function { color: #05a; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#05a, 40%); </xf:if> } &.prism-deleted { color: #d44; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#d44, 40%); </xf:if> } &.prism-inserted { color: #292; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#292, 40%); </xf:if> } &.prism-string, &.prism-attr-value { color: #a11; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#a11, 40%); </xf:if> } &.prism-number { color: #164; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#164, 40%); </xf:if> } &.prism-attr-name, &.prism-char, &.prism-builtin { color: #00c; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#00c, 40%); </xf:if> } &.prism-regex, &.prism-important, &.prism-variable, &.prism-package { color: #05a; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#05a, 40%); </xf:if> } &.prism-class-name, &.prism-important, &.prism-bold { color: #00f; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#00f, 40%); </xf:if> } &.prism-bold { font-weight: bold; } &.prism-italic, &.prism-constant { color: #05a; <xf:if is="{{ property('styleType') == 'dark'}}"> color: lighten(#05a, 40%); </xf:if> font-style: italic; } &.prism-entity { cursor: help; } } } .bbCodeInline { margin: 0; .xf-bbCodeInlineCode(); font-family: @xf-fontFamilyCode; line-height: @xf-lineHeightDefault; box-decoration-break: clone; -webkit-box-decoration-break: clone; } .bbCodeSpoiler { margin: @_bbCodeBlock-spacing 0; } .bbCodeSpoiler-button { .has-no-js & { display: none; } } .bbCodeSpoiler-content { .m-hiddenEl(true); .has-no-js & { display: block !important; } > .bbCodeBlock--spoiler { margin: .2em 0 0; } } .bbCodeInlineSpoiler { background-color: rgba(0, 0, 0, 0); color: rgba(0, 0, 0, 0); text-shadow: @xf-textColorMuted 0 0 14px; cursor: pointer; a, span { color: inherit !important;; .has-js & { pointer-events: none; } } .smilie { filter: blur(8px) grayscale(90%); } &:hover { text-shadow: @xf-textColorMuted 0 0 10px; } }]]>

</template>


-<template title="category_view" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[<xf:title>{$category.title}</xf:title> <xf:description>{$category.description|raw}</xf:description> <xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:categories', $category) }}" /> <xf:macro template="category_macros" name="category_page_options" arg-category="{$category}" /> <xf:breadcrumb source="$category.getBreadcrumbs(false)" /> <xf:if is="$nodeTree"> <div class="block uix_nodeList block"> <div class="block-outer"><xf:trim> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$xf.visitor.user_id && $hasForumDescendents"> <xf:button href="{{ link('categories/mark-read', $category, {'date': $xf.time}) }}" class="button--link" overlay="true"> {{ phrase('mark_read') }} </xf:button> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:trim></div> <div class="block-container"> <div class="block-body"> <xf:macro template="forum_list" name="node_list" arg-children="{$nodeTree}" arg-extras="{$nodeExtras}" arg-depth="2" /> </div> </div> </div> <xf:else /> <div class="blockMessage">{{ phrase('there_is_nothing_to_display') }}</div> </xf:if> <xf:widgetpos id="category_view_sidebar" context-category="{$category}" position="sidebar" /> ]]>

</template>


-<template title="code_editor.less" version_string="2.1.0" version_id="2010070" addon_id="XF" type="public">

<![CDATA[/* XF-RTL:disable */ .codeEditor { // standard editor with fixed-width font and 55% screen height, used when the code editor is the primary // editable element on screen &.CodeMirror { height: 55vh; direction: ltr; .xf-input(); font-family: @xf-fontFamilyCode; padding: 0; -ltr-rtl-border-color: @xf-borderColorHeavy @xf-borderColorLight @xf-borderColorLight @xf-borderColorHeavy; //color: @xf-inputTextColor; //background: @xf-inputBgColor; //border: @xf-borderSize solid; //border-radius: @xf-borderRadiusMedium; .m-inputZoomFix(); &.CodeMirror-focused { .xf-inputFocus(); } &.CodeMirror-simplescroll { .CodeMirror-sizer { // Bit hacky but solves issue with the simplescroll bars overlapping the content padding-right: 30px !important; } } } // short editor, taking only 30% of the vertical height &.codeEditor--short { height: 30vh; } // show an editor that shrinks to a very small height for very little content &.codeEditor--autoSize { height: auto; .CodeMirror-lines { min-height: (@xf-fontSizeNormal * @xf-lineHeightDefault * 2) + 8px; // 2 lines, 4px padding from .CodeMirror-lines } } // like --autoSize, but shrinks to a single line when empty &.codeEditor--oneLine { min-height: auto; } // use proportional font - use this when syntax highlighting is useful, but not imperative, like HTML-enabled descriptions &.codeEditor--proportional { font-family: @xf-fontFamilyUi; } } [disabled] + .codeEditor, [disabled] + .codeEditor.CodeMirror-focused { .xf-inputDisabled(); } [readonly] + .codeEditor, [readonly] + .codeEditor.CodeMirror-focused { background: mix(xf-default(@xf-input--background-color, @xf-contentBg), xf-default(@xf-inputDisabled--background-color, @xf-paletteNeutral1)); } /* BASICS */ .CodeMirror { height: 300px; } /* PADDING */ .CodeMirror-lines { padding: 4px 0; /* Vertical padding around content */ } .CodeMirror pre { padding: 0 4px; /* Horizontal padding of content */ } .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; /* The little square between H and V scrollbars */ } /* GUTTER */ .CodeMirror-gutters { border-right: 1px solid #ddd; background-color: #f7f7f7; white-space: nowrap; } .CodeMirror-linenumbers {} .CodeMirror-linenumber { padding: 0 3px 0 5px; min-width: 20px; text-align: right; color: #999; white-space: nowrap; } .CodeMirror-guttermarker { color: black; } .CodeMirror-guttermarker-subtle { color: #999; } /* CURSOR */ .CodeMirror-cursor { border-left: 1px solid black; border-right: none; width: 0; } /* Shown when moving in bi-directional text */ .CodeMirror div.CodeMirror-secondarycursor { border-left: 1px solid silver; } .cm-fat-cursor .CodeMirror-cursor { width: auto; border: 0 !important; background: #7e7; } .cm-fat-cursor div.CodeMirror-cursors { z-index: 1; } .cm-animate-fat-cursor { width: auto; border: 0; -webkit-animation: blink 1.06s steps(1) infinite; -moz-animation: blink 1.06s steps(1) infinite; animation: blink 1.06s steps(1) infinite; background-color: #7e7; } @-moz-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } @-webkit-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } @keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } /* Can style cursor different in overwrite (non-insert) mode */ .CodeMirror-overwrite .CodeMirror-cursor {} .cm-tab { display: inline-block; text-decoration: inherit; } .CodeMirror-rulers { position: absolute; left: 0; right: 0; top: -50px; bottom: -20px; overflow: hidden; } .CodeMirror-ruler { border-left: 1px solid #ccc; top: 0; bottom: 0; position: absolute; } /* DEFAULT THEME */ .cm-s-default .cm-header {color: blue;} .cm-s-default .cm-quote {color: #090;} .cm-negative {color: #d44;} .cm-positive {color: #292;} .cm-header, .cm-strong {font-weight: bold;} .cm-em {font-style: italic;} .cm-link {text-decoration: underline;} .cm-strikethrough {text-decoration: line-through;} .cm-s-default .cm-keyword {color: #708;} .cm-s-default .cm-atom {color: #219;} .cm-s-default .cm-number {color: #164;} .cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {} .cm-s-default .cm-variable-2 {color: #05a;} .cm-s-default .cm-variable-3 {color: #085;} .cm-s-default .cm-comment {color: #a50;} .cm-s-default .cm-string {color: #a11;} .cm-s-default .cm-string-2 {color: #f50;} .cm-s-default .cm-meta {color: #555;} .cm-s-default .cm-qualifier {color: #555;} .cm-s-default .cm-builtin {color: #30a;} .cm-s-default .cm-bracket {color: #997;} .cm-s-default .cm-tag {color: #170;} .cm-s-default .cm-attribute {color: #00c;} .cm-s-default .cm-hr {color: #999;} .cm-s-default .cm-link {color: #00c;} .cm-s-default .cm-error {color: #f00;} .cm-invalidchar {color: #f00;} .CodeMirror-composing { border-bottom: 2px solid; } /* Default styles for common addons */ div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } .CodeMirror-activeline-background {background: #e8f2ff;} // Extra stuff for DARK styles, taking values from CodeMirror's DARCULA theme .cm-s-default { & when (@xf-styleType = dark) { &.CodeMirror { .CodeMirror-cursor { border-left: 1px solid #dddddd; } .CodeMirror-activeline-background { background: #3A3A3A; } .CodeMirror-selected { background: #085a9c; } .CodeMirror-gutters { background: rgb(72, 72, 72); border-right: 1px solid grey; color: #606366 } .CodeMirror-matchingbracket { background-color: #3b514d; color: yellow !important; } } span.cm-keyword { font-weight: bold; color: #CC7832; } span.cm-atom { font-weight: bold; color: #CC7832; } span.cm-number { color: #6897BB; } span.cm-def { color: #FFC66D; } span.cm-variable { color: #A9B7C6; } span.cm-property { color: #A9B7C6; } span.cm-operator { color: #A9B7C6; } span.cm-variable-2 { color: #A9B7C6; } span.cm-variable-3, span.cm-comment { color: #808080; } span.cm-string { color: #6A8759; } span.cm-string-2 { color: #6A8759; } span.cm-meta { color: #BBB529; } span.cm-qualifier { color: #6A8759; } span.cm-builtin { color: #A9B7C6; } span.cm-bracket { color: #A9B7C6; } span.cm-tag { color: #CC7832; } span.cm-attribute { color: #6A8759; } span.cm-link { color: #287BDE; } span.cm-error { color: #BC3F3C; } span.cm-invalidchar { color: #BC3F3C; } span.cm-type { color: #A9B7C6; } } } /* STOP */ /* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn't touch them. */ .CodeMirror { position: relative; overflow: hidden; background: white; } .CodeMirror-scroll { overflow: scroll !important; /* Things will break if this is overridden */ /* 30px is the magic margin used to hide the element's real scrollbars */ /* See overflow: hidden in .CodeMirror */ margin-bottom: -30px; margin-right: -30px; padding-bottom: 30px; height: 100%; outline: none; /* Prevent dragging from highlighting the element */ position: relative; // background-color: #fff; } .CodeMirror-sizer { position: relative; border-right: 30px solid transparent; } /* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; z-index: 6; display: none; } .CodeMirror-vscrollbar { right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; } .CodeMirror-hscrollbar { bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; } .CodeMirror-scrollbar-filler { right: 0; bottom: 0; } .CodeMirror-gutter-filler { left: 0; bottom: 0; } .CodeMirror-gutters { position: absolute; left: 0; top: 0; min-height: 100%; z-index: 3; } .CodeMirror-gutter { white-space: normal; height: 100%; display: inline-block; vertical-align: top; margin-bottom: -30px; } .CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: none !important; border: none !important; } .CodeMirror-gutter-background { position: absolute; top: 0; bottom: 0; z-index: 4; } .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; } .CodeMirror-gutter-wrapper { -webkit-user-select: none; -moz-user-select: none; user-select: none; } .CodeMirror-lines { cursor: text; min-height: 1px; /* prevents collapsing before first draw */ } .CodeMirror pre { /* Reset some styles that the rest of the page might have set */ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; font-size: inherit; margin: 0; white-space: pre; word-wrap: normal; line-height: inherit; color: inherit; z-index: 2; position: relative; overflow: visible; -webkit-tap-highlight-color: transparent; -webkit-font-variant-ligatures: none; font-variant-ligatures: none; } .CodeMirror-wrap pre { word-wrap: break-word; white-space: pre-wrap; word-break: normal; } .CodeMirror-linebackground { position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 0; } .CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; } .CodeMirror-widget {} .CodeMirror-code { outline: none; } /* Force content-box sizing for the elements where we expect it */ .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber { -moz-box-sizing: content-box; box-sizing: content-box; } .CodeMirror-measure { position: absolute; width: 100%; height: 0; overflow: hidden; visibility: hidden; } .CodeMirror-cursor { position: absolute; pointer-events: none; } .CodeMirror-measure pre { position: static; } div.CodeMirror-cursors { visibility: hidden; position: relative; z-index: 3; } div.CodeMirror-dragcursors { visibility: visible; } .CodeMirror-focused div.CodeMirror-cursors { visibility: visible; } .CodeMirror-selected { background: #d9d9d9; } .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } .CodeMirror-crosshair { cursor: crosshair; } .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; .xf-uix_textSelection();} .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; .xf-uix_textSelection();} .cm-searching { background: #ffa; background: rgba(255, 255, 0, .4); } /* Used to force a border model for a node */ .cm-force-border { padding-right: .1px; } @media print { /* Hide the cursor when printing */ .CodeMirror div.CodeMirror-cursors { visibility: hidden; } } /* See issue #2901 */ .cm-tab-wrap-hack:after { content: ''; } /* Help users use markselection to safely style text background */ span.CodeMirror-selectedtext { background: none; } /* Simple scrollbars */ .CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { position: absolute; background: #ccc; -moz-box-sizing: border-box; box-sizing: border-box; border: 1px solid #bbb; border-radius: 2px; } .CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { position: absolute; z-index: 6; background: #eee; } .CodeMirror-simplescroll-horizontal { bottom: 0; left: 0; height: 8px; } .CodeMirror-simplescroll-horizontal div { bottom: 0; height: 100%; } .CodeMirror-simplescroll-vertical { right: 0; top: 0; width: 8px; } .CodeMirror-simplescroll-vertical div { right: 0; width: 100%; } .CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { display: none; } .CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { position: absolute; background: #bcd; border-radius: 3px; } .CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { position: absolute; z-index: 6; } .CodeMirror-overlayscroll-horizontal { bottom: 0; left: 0; height: 6px; } .CodeMirror-overlayscroll-horizontal div { bottom: 0; height: 100%; } .CodeMirror-overlayscroll-vertical { right: 0; top: 0; width: 6px; } .CodeMirror-overlayscroll-vertical div { right: 0; width: 100%; } /* Dialog add-on */ .CodeMirror-dialog { position: absolute; left: 0; right: 0; background: inherit; z-index: 15; padding: .1em .8em; overflow: hidden; color: inherit; } .CodeMirror-dialog-top { border-bottom: 1px solid #eee; top: 0; } .CodeMirror-dialog-bottom { border-top: 1px solid #eee; bottom: 0; } .CodeMirror-dialog input { border: none; outline: none; background: transparent; width: 20em; color: inherit; } .CodeMirror-dialog button { font-size: 70%; } .CodeMirror-fullscreen { position: fixed; top: 0; left: 0; right: 0; bottom: 0; height: auto; z-index: @zIndex-9; } /* XF-RTL:enable */]]>

</template>


-<template title="conversation_list" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[<xf:title page="{$page}">{{ phrase('conversations') }}</xf:title> <xf:js src="xf/inline_mod.js" min="1" /> <xf:pageaction if="$xf.visitor.canStartConversation()"> <xf:button href="{{ link('conversations/add') }}" class="button--cta" icon="write">{{ phrase('start_conversation') }}</xf:button> </xf:pageaction> <div class="block" data-xf-init="inline-mod" data-type="conversation" data-href="{{ link('inline-mod') }}"> <div class="block-outer"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="conversations" params="{$filters}" wrapperclass="block-outer-main" /> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:macro template="inline_mod_macros" name="button" arg-variant="inlineModButton--withLabel" arg-label="{{ phrase('selected') }}" arg-tooltip="{{ false }}" /> </div> </div> </div> <div class="block-container"> <div class="block-filterBar"> <div class="filterBar"> <xf:if contentcheck="true"> <ul class="filterBar-filters"> <xf:contentcheck> <xf:if is="$filters.starter_id AND $starterFilter"> <li><a href="{{ link('conversations', null, $filters|replace('starter_id', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> {{ phrase('started_by_x', {'name': $starterFilter.username}) }}</a></li> </xf:if> <xf:if is="$filters.receiver_id AND $receiverFilter"> <li><a href="{{ link('conversations', null, $filters|replace('receiver_id', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> {{ phrase('received_by_x', {'name': $receiverFilter.username}) }}</a></li> </xf:if> <xf:if is="$filters.starred"> <li><a href="{{ link('conversations', null, $filters|replace('starred', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('show_only:') }}</span> {{ phrase('starred') }}</a></li> </xf:if> <xf:if is="$filters.unread"> <li><a href="{{ link('conversations', null, $filters|replace('unread', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('show_only:') }}</span> {{ phrase('filter_unread') }}</a></li> </xf:if> </xf:contentcheck> </ul> </xf:if> <a class="filterBar-menuTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('filters') }}</a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('show_only:') }}</h4> <xf:form action="{{ link('conversations/filters') }}"> <div class="menu-row menu-row--separated"> <xf:radio name="filter_type"> <xf:option value="" selected="{{ !$starterFilter AND !$receiverFilter }}">{{ phrase('show_all_conversations') }}</xf:option> <xf:option value="started" selected="{{ $starterFilter ? true : false }}" data-hide="true" label="{{ phrase('started_by...') }}"> <xf:textbox name="starter" value="{{ $starterFilter ? $starterFilter.username : '' }}" ac="single" maxlength="{{ max_length($xf.visitor, 'username') }}"/> </xf:option> <xf:option value="received" selected="{{ $receiverFilter ? true : false }}" data-hide="true" label="{{ phrase('received_by...') }}"> <xf:textbox name="receiver" value="{{ $receiverFilter ? $receiverFilter.username : '' }}" ac="single" maxlength="{{ max_length($xf.visitor, 'username') }}" /> </xf:option> </xf:radio> </div> <div class="menu-row menu-row--separated"> <xf:checkbox standalone="true"> <xf:option name="starred" selected="{$filters.starred}" label="{{ phrase('starred_conversations') }}" /> </xf:checkbox> <xf:checkbox standalone="true"> <xf:option name="unread" selected="{$filters.unread}" label="{{ phrase('unread_conversations') }}" /> </xf:checkbox> </div> <div class="menu-footer"> <span class="menu-footer-controls"> <xf:button type="submit" class="button--primary">{{ phrase('filter') }}</xf:button> </span> </div> <xf:hiddenval name="apply">1</xf:hiddenval> </xf:form> </div> </div> </div> </div> <div class="block-body"> <xf:if is="$userConvs is not empty"> <div class="structItemContainer"> <xf:foreach loop="$userConvs" value="$userConv"> <xf:macro template="conversation_list_macros" name="item" arg-userConv="{$userConv}" /> </xf:foreach> </div> <xf:else /> <div class="block-row">{{ phrase('there_no_conversations_to_display') }}</div> </xf:if> </div> <div class="block-footer block-footer--split uix_conversationsFooterMobile"> <div class="block-footer-main"> <a href="{{ link('conversations') }}">{{ phrase('show_all...') }}</a> </div> <xf:if is="$xf.visitor.canStartConversation()"> <div class="block-footer-opposite"> <a href="{{ link('conversations/add') }}">{{ phrase('start_new_conversation') }}</a> </div> </xf:if> </div> </div> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="conversations" params="{$filters}" wrapperclass="block-outer block-outer--after" /> </div> <xf:widgetpos id="conversation_list_sidebar" position="sidebar" />]]>

</template>


-<template title="conversation_list_macros" version_string="2.1.3" version_id="2010370" addon_id="XF" type="public">

<![CDATA[<xf:macro name="item" arg-userConv="!" arg-allowInlineMod="{{ true }}"> <xf:css src="structured_list.less" /> <div class="structItem structItem--conversation {{ $userConv.isUnread() ? 'is-unread' : '' }} js-inlineModContainer" data-author="{{ $userConv.Master.Starter.username ?: $userConv.Master.username }}"> <div class="structItem-cell structItem-cell--icon"> <div class="structItem-iconContainer"> <xf:avatar user="$userConv.Master.Starter" size="s" defaultname="{$userConv.Master.username}" /> </div> </div> <div class="structItem-cell structItem-cell--main" data-xf-init="touch-proxy"> <xf:if contentcheck="true"> <ul class="structItem-statuses"> <xf:contentcheck> <xf:if is="$userConv.is_starred"> <li> <i class="structItem-status structItem-status--starred" aria-hidden="true" title="{{ phrase('starred')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('starred') }}</span> </li> </xf:if> <xf:if is="!$userConv.Master.conversation_open"> <li> <i class="structItem-status structItem-status--locked" aria-hidden="true" title="{{ phrase('locked')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('locked') }}</span> </li> </xf:if> </xf:contentcheck> </ul> </xf:if> <a href="{{ link('conversations/unread', $userConv) }}" class="structItem-title" data-tp-primary="on">{$userConv.title}</a> <div class="structItem-minor"> <xf:if contentcheck="true"> <ul class="structItem-extraInfo"> <xf:contentcheck> <xf:if is="$allowInlineMod"> <li><xf:checkbox standalone="true"> <xf:option value="{$userConv.conversation_id}" class="js-inlineModToggle" /> </xf:checkbox></li> </xf:if> </xf:contentcheck> </ul> </xf:if> <ul class="structItem-parts"> <li> <ul class="listInline listInline--comma listInline--selfInline"> <li><xf:username user="$userConv.Master.Starter" defaultname="{$userConv.Master.username}" title="{{ phrase('conversation_starter') }}" /></li><xf:trim> </xf:trim><xf:foreach loop="$userConv.Master.recipients" value="$recipient" if="{$recipient.user_id} != {$userConv.Master.user_id}"><xf:trim> <li><xf:username user="{$recipient}" defaultname="{{ phrase('unknown_member') }}" /></li> </xf:trim></xf:foreach> </ul> </li> <li class="structItem-startDate"><a href="{{ link('conversations', $userConv) }}" rel="nofollow"><xf:date time="{$userConv.Master.start_date}" /></a></li> <xf:if is="$userConv.reply_count >= $xf.options.messagesPerPage"> <span class="structItem-pageJump"> <xf:foreach loop="{{ last_pages($userConv.reply_count + 1, $xf.options.messagesPerPage, $xf.options.lastPageLinks) }}" value="$p"> <a href="{{ link('conversations', $userConv, {'page': $p}) }}">{$p}</a> </xf:foreach> </span> </xf:if> </ul> </div> </div> <div class="structItem-cell structItem-cell--meta"> <dl class="pairs pairs--justified"> <dt>{{ phrase('replies') }}</dt> <dd>{$userConv.reply_count|number}</dd> </dl> <dl class="pairs pairs--justified structItem-minor"> <dt>{{ phrase('participants') }}</dt> <dd>{$userConv.Master.recipient_count|number}</dd> </dl> </div> <div class="structItem-cell structItem-cell--latest"> <a href="{{ link('conversations/latest', $userConv) }}" rel="nofollow"><xf:date time="{$userConv.last_message_date}" class="structItem-latestDate" /></a> <div class="structItem-minor"><xf:username user="{$userConv.Master.last_message_cache}" /></div> </div> </div> </xf:macro>]]>

</template>


-<template title="conversation_message_macros" version_string="2.1.0 Beta 6" version_id="2010036" addon_id="XF" type="public">

<![CDATA[<xf:macro name="message" arg-message="!" arg-conversation="!" arg-position="" arg-lastRead="{{ null }}"> <xf:css src="message.less" /> <article class="message message--conversationMessage {{ $message.isIgnored() ? ' is-ignored' : '' }} {{ $message.isUnread($lastRead) ? 'is-unread' : '' }} js-message" data-author="{{ $message.User.username ?: $message.username }}"> <span class="u-anchorTarget" id="convMessage-{$message.message_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info" arg-user="{$message.User}" arg-fallbackName="{$message.username}" /> </div> <div class="message-cell message-cell--main"> <div class="message-main js-quickEditTarget"> <div class="message-content"> <header class="message-attribution"> <a href="{{ link('conversations/messages', $message) }}" class="message-attribution-main u-concealed" rel="nofollow"> <xf:date time="{$message.message_date}" /> </a> <span class="message-attribution-opposite"> <xf:if is="$message.isUnread($lastRead)"> <span class="message-newIndicator">{{ phrase('new') }}</span> </xf:if> <xf:if is="$position">#{$position|number}</xf:if> </span> </header> <xf:if is="$message.isIgnored()"> <div class="messageNotice messageNotice--ignored"> {{ phrase('you_are_ignoring_content_by_this_member') }} </div> </xf:if> <div class="message-userContent lbContainer js-lbContainer" data-lb-id="message-{$message.message_id}" data-lb-caption-title="{{ $message.User ? $message.User.username : $message.username }}" data-lb-caption-desc="{{ date_time($message.message_date) }}"> <article class="message-body js-selectToQuote"> {{ bb_code($message.message, 'conversation_message', $message) }} <div class="js-selectToQuoteEnd">&nbsp;</div> </article> <xf:if is="$message.attach_count"> <xf:macro template="message_macros" name="attachments" arg-attachments="{$message.Attachments}" arg-message="{$message}" arg-canView="{{ true }}" /> </xf:if> </div> <xf:macro template="message_macros" name="signature" arg-user="{$message.User}" /> </div> <div class="reactionsBar js-reactionsList {{ $message.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$message}" link="conversations/messages/reactions" /> </div> <footer class="message-footer"> <xf:if contentcheck="true"> <div class="message-actionBar actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$message}" link="conversations/messages/react" list="< .js-message | .js-reactionsList" /> <xf:if is="$conversation.canReply()"> <xf:set var="$quoteLink">{{ link('conversations/reply', $conversation, {'quote': $message.message_id}) }}</xf:set> <xf:if is="$xf.options.multiQuote"> <a href="{$quoteLink}" class="actionBar-action actionBar-action--mq u-jsOnly js-multiQuote" title="{{ phrase('toggle_multi_quote_tooltip')|for_attr }}" data-message-id="{$message.message_id}" data-mq-action="add"> {{ phrase('quote') }} </a> </xf:if> <a href="{$quoteLink}" class="actionBar-action actionBar-action--reply" title="{{ phrase('reply_quoting_this_message')|for_attr }}" data-xf-click="quote" data-quote-href="{{ link('conversations/messages/quote', $message) }}">{{ phrase('reply') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$message.canReport()"> <a href="{{ link('conversations/messages/report', $message) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:if is="$message.canEdit()"> <xf:js src="xf/message.js" min="1" /> <a href="{{ link('conversations/messages/edit', $message) }}" class="actionBar-action actionBar-action--edit" data-xf-click="quick-edit" data-editor-target="< .js-quickEditTarget">{{ phrase('edit') }}</a> </xf:if> <xf:if is="$message.canCleanSpam()"> <a href="{{ link('spam-cleaner', $message) }}" class="actionBar-action actionBar-action--spam actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('spam') }}</a> </xf:if> <xf:if is="$xf.visitor.canViewIps() && $message.ip_id"> <a href="{{ link('conversations/messages/ip', $message) }}" class="actionBar-action actionBar-action--ip" data-xf-click="overlay">{{ phrase('ip') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </footer> </div> </div> </div> </article> </xf:macro>]]>

</template>


-<template title="core.less" version_string="2.1.0" version_id="2010070" addon_id="XF" type="email">

<![CDATA[// NOTE: THIS DOES NOT HAVE ACCESS TO public:setup.less automatically! // THE LESS HERE SHOULD BE KEPT AS SIMPLE AS POSSIBLE // UI.X Font Sizes /* solution for pxs */ @fontSizeNormal: unit(10 * @xf-fontSizeNormal, px); @fontSizeLargest: unit(10 * @xf-fontSizeLargest, px); @fontSizeSmall: unit(10 * @xf-fontSizeSmall, px); /* solution for rems @fontSizeNormal: (0.625 * @xf-fontSizeNormal); @fontSizeLargest: (0.625 * @xf-fontSizeLargest); @fontSizeSmall: (0.625 * @xf-fontSizeSmall); */ body { margin: 0; padding: 0; word-wrap: break-word; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: @xf-emailBg; font-size: @fontSizeNormal; font-family: @xf-emailFont; line-height: @xf-lineHeightDefault; color: @xf-emailTextColor; } table { border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; } table, td { border-collapse: collapse; } a { color: @xf-emailLinkColor; text-decoration: none; } #bodyTable { height: 100% !important; width: 100% !important; margin: 0; padding: 0; background-color: @xf-emailBg; } #bodyTableContainer { background-color: @xf-emailBg; } .container { width: 100%; max-width: 600px; } .header { color: @xf-emailHeaderColor; padding: @xf-paddingMedium @xf-paddingLarge; border-top-left-radius: @xf-borderRadiusMedium; border-top-right-radius: @xf-borderRadiusMedium; font-family: @xf-emailFont; font-size: @fontSizeLargest; line-height: @xf-lineHeightDefault; } .header a { color: @xf-emailHeaderColor; } .content { background-color: @xf-emailContentBg; border-radius: @xf-borderRadiusSmall; color: @xf-emailTextColor; padding: @xf-paddingLarge; font-size: @fontSizeNormal; font-family: @xf-emailFont; line-height: @xf-lineHeightDefault; } .content .bbImage { max-width: 100%; } .content > p:first-child { margin-top: 0; } .content > p:last-child { margin-bottom: 0; } .footer { padding: @xf-paddingMedium @xf-paddingLarge; text-align: center; color: @xf-emailTextColorMuted; font-size: @fontSizeSmall; font-family: @xf-emailFont; line-height: @xf-lineHeightDefault; } .footer a { color: @xf-emailTextColorMuted; text-decoration: underline; } .footerExtra { margin-top: 1em; } h2 { font-size: @fontSizeLargest; font-weight: normal; margin: @xf-paddingLarge 0; padding: 0; } hr { border: 0; border-bottom: @xf-borderSize solid @xf-emailBorderColor; } div.message { border-left: @xf-borderSizeFeature solid @xf-borderColorFeature; margin: @xf-paddingLarge 0; padding: @xf-paddingLarge; } div.quote { border-left: @xf-borderSizeFeature solid @xf-borderColorAttention; border-top: @xf-borderSize solid @xf-emailBorderColor; border-bottom: @xf-borderSize solid @xf-emailBorderColor; border-right: @xf-borderSize solid @xf-emailBorderColor; background: @xf-emailContentAltBg; margin: @xf-paddingLarge 0; padding: @xf-paddingLarge; } .quote-name { color: @xf-textColorAttention; font-size: @fontSizeSmall; margin-bottom: @xf-paddingMedium; } pre.code { margin: @xf-paddingLarge 0; padding: @xf-paddingLarge; border-left: @xf-borderSizeFeature solid @xf-borderColorAttention; border-top: @xf-borderSize solid @xf-emailBorderColor; border-bottom: @xf-borderSize solid @xf-emailBorderColor; border-right: @xf-borderSize solid @xf-emailBorderColor; background: @xf-emailContentAltBg; max-width: 600px; overflow: auto; } .textLink { color: @xf-emailTextColor; text-decoration: none; } .linkBar { padding: @xf-paddingMedium; background-color: @xf-emailContentAltBg; border-top: @xf-borderSize solid @xf-emailBorderColor; } .button { display: inline-block; padding: 5px 10px; background-color: @xf-buttonBg; border: none; border-radius: @xf-borderRadiusMedium; color: @xf-buttonTextColor; text-decoration: none; .xf-buttonBase(); .xf-buttonDefault(); .xf-buttonPrimary(); font-size: @fontSizeSmall; } .buttonFake { display: inline-block; padding: 5px 10px; font-size: @fontSizeSmall; } .minorText, .unsubscribeLink { font-size: @fontSizeSmall; color: @xf-emailTextColorMuted; } .minorText a, .unsubscribeLink a { color: @xf-emailTextColorMuted; text-decoration: underline; } .unsubscribeLink { margin-top: 1em; text-align: center; } .mediaPlaceholder, .spoilerPlaceholder { border-radius: @xf-borderRadiusSmall; margin: @xf-paddingMedium 0; padding: @xf-paddingMedium; font-size: @fontSizeLargest; line-height: 3; text-align: center; border: @xf-borderSize solid @xf-emailBorderColor; background-color: @xf-emailContentAltBg; } .inlineSpoilerPlaceholder { font-size: 80%; background-color: @xf-contentAltBg; border: @xf-borderSize solid @xf-borderColorLight; border-radius: @xf-borderRadiusSmall; padding: 1px @xf-paddingSmall; }]]>

</template>


-<template title="core.less" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[// ########################## GLOBAL BASE SETUP ####################### html { font: @xf-fontSizeNormal / @xf-lineHeightDefault sans-serif; font-family: @xf-fontFamilyUi; font-weight: @xf-fontWeightNormal; color: @xf-textColor; margin: 0; padding: 0; word-wrap: break-word; background-color: @xf-pageBg; /* // just a reminder that we *might* want this at some point -ms-text-size-adjust: none; -webkit-text-size-adjust: none;*/ } body { font-size: @xf-fontSizeNormal; } button, input, optgroup, select, textarea { font-family: @xf-fontFamilyUi; line-height: @xf-lineHeightDefault; } img { max-width: 100%; height: auto; } b, strong { font-weight: @xf-fontWeightHeavy; } a { .xf-link(); &:hover { .xf-linkHover(); } } svg { fill: currentColor; } {{ include('core_setup.less') }} {{ include('core_utilities.less') }} {{ include('core_list.less') }} {{ include('core_categorylist.less') }} {{ include('core_block.less') }} {{ include('core_blockmessage.less') }} {{ include('core_blockstatus.less') }} {{ include('core_blocklink.less') }} {{ include('core_blockend.less') }} {{ include('core_fixedmessage.less') }} {{ include('core_button.less') }} {{ include('core_meter_bar.less') }} // ################################# INPUTS & FORMS ##################### .m-formElementExplain() { display: block; font-style: normal; .xf-formExplain(); .m-textColoredLinks(); } {{ include('core_input.less') }} {{ include('core_formrow.less') }} {{ include('core_collapse.less') }} {{ include('core_badge.less') }} {{ include('core_tooltip.less') }} {{ include('core_menu.less') }} {{ include('core_offcanvas.less') }} {{ include('core_tab.less') }} {{ include('core_overlay.less') }} {{ include('core_globalaction.less') }} {{ include('core_avatar.less') }} {{ include('core_datalist.less') }} {{ include('core_filter.less') }} {{ include('core_contentrow.less') }} {{ include('core_pagenav.less') }} {{ include('core_hscroller.less') }} // FLASH MESSAGES .flashMessage { display: none; position: fixed; top: 0; left: 0; right: 0; z-index: @zIndex-9; .xf-flashMessage(); .m-transitionFadeDown(@xf-animationSpeed); } // AUTOCOMPLETE .autoCompleteList { .m-autoCompleteList(); margin-top: 2px; } // #################################### TAGS ############################## // note that while this is related to tags, it's commonly used so just include it .tagList, .tagList > dt, .tagList > dd { display: inline; padding: 0; margin: 0; } .tagItem { display: inline-block; max-width: 100%; padding: 0 6px 1px; margin: 0 0 2px; border-radius: @xf-borderRadiusMedium; font-size: @xf-fontSizeSmaller; .xf-chip(); .xf-uix_tag(); &:hover { text-decoration: none; color: @xf-chip--color; .xf-chipHover(); .xf-uix_tagHover(); } } // ############################# MISC ######################### .recaptcha { &.input { box-sizing: content-box; max-width: 100%; } img { max-width: 100%; } } .likesBar { .m-transitionFadeDown(); .xf-minorBlockContent(); border-left: @xf-borderSizeMinorFeature solid @xf-borderColorFeature; padding: @xf-paddingMedium; font-size: @xf-fontSizeSmaller; margin-top: @xf-paddingMedium; .xf-uix_messageLikes(); } .likeIcon { &:before { .m-faBase(); .m-faContent(@fa-var-thumbs-up, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="like" /> color: @xf-textColorFeature; margin-right: .2em; } } .reactionsBar { .m-transitionFadeDown(); .xf-minorBlockContent(); border-left: @xf-borderSizeMinorFeature solid @xf-borderColorFeature; padding: @xf-paddingMedium; font-size: @xf-fontSizeSmaller; margin-top: @xf-paddingMedium; .xf-uix_messageLikes(); } .reactionSummary { display: inline-block; .m-listPlain(); line-height: 16px; height: 16px; margin: 0 -2px; vertical-align: text-top; > li { display: inline-block; height: 20px; width: 20px; padding: 2px; margin: -2px 0; background: @xf-contentBg; border-radius: 50%; position: relative; margin-left: -6px; &:nth-child(1) { z-index: 3; margin-left: 0; } &:nth-child(2) { z-index: 2; } &:nth-child(3) { z-index: 1; } } .reaction { position: absolute; top: 0; &.reaction { // increase specificity to override .reaction.reaction--<size> display: block; } } } .reactionsBar, .message-responseRow { .reactionSummary { > li { background: @xf-contentAltBg; } .reaction { top: 2px; } } } .reactTooltip { padding: 0; display: flex; flex-wrap: wrap; justify-content: center; max-width: 100%; .reaction { margin: @xf-paddingSmall; .m-transition(transform); &:hover { .m-transform(scale(1.2)); } } } .colorChip { display: inline-block; border: @xf-borderSize solid @xf-borderColor; border-radius: @xf-borderRadiusMedium; padding: 1px; width: 100px; } .colorChip-inner { display: block; background-color: transparent; border-radius: @xf-borderRadiusSmall; height: 1em; } .colorChip-value { display: none; } pre.sf-dump { // not ideal, but then again neither is the default of 99999... z-index: @zIndex-1 !important; } .grecaptcha-badge { z-index: @zIndex-5; } // Bookmarking links for 2.1 .bookmarkLink { &:before { .m-faBase(); .m-faContent(@fa-var-bookmark); font-weight: min(@xf-fontAwesomeWeight, @faWeight-regular); } &.is-bookmarked { &:before { font-weight: @faWeight-solid; } } &.bookmarkLink--highlightable.is-bookmarked { color: @xf-textColorAttention; &:hover { color: @xf-textColorAccentContent; } } span { margin-left: .35em; } } .dragHandle { cursor: move; touch-action: none; &:before { .m-faBase(); .m-faContent(@fa-var-bars); } .is-undraggable & { visibility: hidden; cursor: default; } } {{ include('core_action_bar.less') }} {{ include('core_labels.less') }} {{ include('core_pikaday.less') }} {{ include('core_reaction.less') }} {{ include('core_smilie.less') }} {{ include('core_bbcode.less') }} {{ include('core_fa.less') }} // RESOLUTION OUTPUT .debugResolution { font-size: @xf-fontSizeSmallest; .debugResolution-output:before { content: "Full @{xf-responsiveWide} - @{xf-pageWidthMax}"; @media (min-width: @xf-pageWidthMax) { content: "Max > @{xf-pageWidthMax}"; } @media (max-width: @xf-responsiveWide) { content: "Wide < @{xf-responsiveWide}"; } @media (max-width: @xf-responsiveMedium) { content: "Medium < @{xf-responsiveMedium}"; } @media (max-width: @xf-responsiveNarrow) { content: "Narrow < @{xf-responsiveNarrow}"; } } }]]>

</template>


-<template title="core_action_bar.less" version_string="2.1.0 Beta 5" version_id="2010035" addon_id="XF" type="public">

<![CDATA[.actionBar { .m-clearFix(); } .actionBar-set { &.actionBar-set--internal { float: left; // margin-left: -3px; > .actionBar-action:first-child { margin-left: 0; } } &.actionBar-set--external { float: right; // margin-right: -3px; > .actionBar-action:last-child { margin-right: 0; } } } .actionBar .actionBar-action { display: inline-block; padding: 3px; border: 1px solid transparent; border-radius: @xf-borderRadiusMedium; margin-left: 5px; .xf-uix_messageControl(); &:hover { .xf-uix_messageControlHover(); } &:before { .m-faBase(); font-size: 12px; padding-right: 2px; } &.actionBar-action--menuTrigger { display: none; &:after { .m-menuGadget(true); } } &.actionBar-action--inlineMod { label { color: @xf-linkColor; font-size: 120%; // vertical-align: -2px; } input { .m-checkboxAligner(); } } &.actionBar-action--mq { &:before { .m-faContent("@{fa-var-plus}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="quote" /> } // plus &.is-selected { background-color: @xf-contentHighlightBg; border-color: @xf-borderColorHighlight; &:before { .m-faContent("@{fa-var-minus}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="quote" />} // minus } } &.actionBar-action--postLink { text-decoration: inherit !important; color: inherit !important; } &.actionBar-action--reaction:not(.has-reaction) .reaction-text { color: inherit; } &.actionBar-action--reply:before { .m-faContent("@{fa-var-reply}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="reply" />} // reply &.actionBar-action--comment:before { .m-faContent("@{fa-var-reply}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="post" />} // reply &.actionBar-action--like:before { .m-faContent("@{fa-var-thumbs-up}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="like" />} &.actionBar-action--like.unlike:before { .m-faContent("@{fa-var-thumbs-down}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="unlike" />}// thumbs up &.actionBar-action--report:before { .m-faContent("@{fa-var-exclamation-circle}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="report" />} &.actionBar-action--delete:before { .m-faContent("@{fa-var-trash-o}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="delete" />} &.actionBar-action--edit:before { .m-faContent("@{fa-var-edit}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="edit" />} &.actionBar-action--ip:before { .m-faContent("@{fa-var-globe}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="ipaddress" />} &.actionBar-action--history:before { .m-faContent("@{fa-var-history}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="history" />} &.actionBar-action--warn:before { .m-faContent("@{fa-var-warning}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="warn" />} &.actionBar-action--spam:before { .m-faContent("@{fa-var-warning}\20"); <xf:macro template="uix_icons.less" name="content" arg-icon="spam" />} } @media (max-width: @xf-responsiveNarrow) { .actionBar .actionBar-action { &.actionBar-action--menuItem { display: none !important; } &.actionBar-action--menuTrigger { display: inline; } } }]]>

</template>


-<template title="core_avatar.less" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[// ################################### AVATARS ############################# .m-uix_avatarShape() { <xf:if is="property('uix_avatarShape') == 1"> border-radius: 100%; <xf:elseif is="property('uix_avatarShape') == 2" /> border-radius: 0; <xf:elseif is="property('uix_avatarShape') == 3" /> -webkit-clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); <xf:elseif is="property('uix_avatarShape') == 4" /> -webkit-clip-path: polygon(50% 0, 100% 38%, 80% 100%, 20% 100%, 0 38%); clip-path: polygon(50% 0, 100% 38%, 80% 100%, 20% 100%, 0 38%); <xf:elseif is="property('uix_avatarShape') == 5" /> -webkit-clip-path: polygon(50% 0, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%); clip-path: polygon(50% 0, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%); <xf:elseif is="property('uix_avatarShape') == 6" /> -webkit-clip-path: polygon(0 50%, 15% 15%, 50% 0, 85% 15%, 100% 50%, 85% 85%, 50% 100%, 15% 85%); clip-path: polygon(0 50%, 15% 15%, 50% 0, 85% 15%, 100% 50%, 85% 85%, 50% 100%, 15% 85%); </xf:if> } .avatar { display: inline-flex; justify-content: center; align-items: center; border-radius: @xf-avatarBorderRadius; vertical-align: top; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; line-height: 1; .m-uix_avatarShape(); img { background-color: @xf-avatarBg; } &.avatar--default { &.avatar--default--dynamic, &.avatar--default--text { font-family: @xf-avatarDynamicFont; font-weight: normal; text-align: center; text-decoration: none !important; // this works with the flex box approach line-height: 1; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } &.avatar--default--text { color: xf-default(@xf-textColorMuted, black) !important; background: mix(xf-default(@xf-textColorMuted, black), xf-default(@xf-avatarBg, white), 25%) !important; > span:before { content: ~"'@{xf-avatarDefaultTextContent}'"; } } &.avatar--default--image { background-color: @xf-avatarBg; background-image: url(@xf-avatarDefaultImage); background-size: cover; > span { display: none; } } } &:hover { text-decoration: none; } &.avatar--updateLink { position: relative; } &.avatar--separated { border: 1px solid @xf-avatarBg; } &.avatar--square { border-radius: 0; } &.avatar--xxs { .m-avatarSize(@avatar-xxs); } &.avatar--xs { .m-avatarSize(@avatar-xs); } &.avatar--s { .m-avatarSize(@avatar-s); } &.avatar--m { .m-avatarSize(@avatar-m); } &.avatar--l { .m-avatarSize(@avatar-l); } &.avatar--o { .m-avatarSize(@avatar-o); } img:not(.cropImage) { .m-hideText; display: block; border-radius: inherit; width: 100%; height: 100%; } &:not(a) { cursor: inherit; } } .memberHeader-avatar .avatar {border-radius: @xf-avatarBorderRadius;} .avatar-update { width: 100%; height: 30px; bottom: -30px; position: absolute; .m-hiddenLinks(); .m-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.3), #000); .m-transition(); padding: @xf-paddingSmall; overflow: hidden; font-family: @xf-fontFamilyUi; font-size: @xf-fontSizeSmaller; line-height: @xf-lineHeightDefault; display: none; align-items: center; justify-content: center; .avatar--updateLink & { display: flex; } .has-touchevents &, .avatar:hover & { bottom: 0; } a { text-shadow: 0 0 2px rgba(0, 0, 0, 0.6); color: #fff; &:hover { text-decoration: none; } } } .avatarWrapper { display: inline-block; position: relative; } .avatarWrapper-update { position: absolute; top: 50%; bottom: 0; left: 0; right: 0; display: flex; align-items: flex-end; justify-content: center; padding-bottom: .8em; color: #fff; text-decoration: none; opacity: 0; .m-transition(opacity); &:before { content: ''; position: absolute; top: -100%; bottom: 0; left: 0; right: 0; .m-borderBottomRadius(xf-default(@xf-avatarBorderRadius, 0)); .m-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, .9), #000, 60%); opacity: .75; .m-transition(opacity); pointer-events: none; } span { // so it sits on top of the BG position: relative; } &:hover { color: #fff; text-decoration: none; &:before { opacity: 1; } } .avatarWrapper:hover &, .has-touchevents & { opacity: 1; } &.avatarWrapper-update--small, .avatar--s + & { font-size: @xf-fontSizeSmall; padding-bottom: .2em; } }]]>

</template>


-<template title="core_badge.less" version_string="2.0.10" version_id="2001070" addon_id="XF" type="public">

<![CDATA[// #################################################### BADGES ########################### .badge, .badgeContainer:after { display: inline-block; padding: 2px 4px 1px; margin: -2px 0 -2px 4px; font-size: 80%; line-height: 1; font-weight: @xf-fontWeightNormal; .xf-badge(); } .badgeContainer { &:after { content: attr(data-badge); display: none; } &.badgeContainer--visible:after { display: inline-block; } } .badge.badge--highlighted, .badgeContainer.badgeContainer--highlighted:after { display: inline-block; .xf-badgeHighlighted(); }]]>

</template>


-<template title="core_block.less" version_string="2.1.3" version_id="2010370" addon_id="XF" type="public">

<![CDATA[// ################################# BLOCKS ################## .blocks { margin-bottom: @xf-elementSpacer; &:last-child { margin-bottom: 0; } .block { margin-bottom: (@xf-elementSpacer / 2); &:last-child { margin-bottom: 0; } } &.blocks--close .block { margin-bottom: (@xf-elementSpacer / 4); } &.blocks--separated { + .blocks { padding-top: @xf-elementSpacer; border-top: @xf-borderSize solid @xf-borderColor; } } } .blocks-header { font-size: @xf-fontSizeLarger; font-weight: @xf-fontWeightNormal; color: @xf-textColorMuted; margin: 0; padding: 0; margin-bottom: 5px; &.blocks-header--strong { color: @xf-textColorDimmed; .blocks-desc { color: @xf-textColorMuted; } } } .blocks-textJoiner { display: table; width: 100%; margin-bottom: (@xf-elementSpacer / 2); padding: 0 @xf-paddingMedium; > span { display: table-cell; position: relative; &:before { content: ''; position: absolute; left: 0; right: 0; top: 50%; border-top: @xf-borderSize solid @xf-borderColor; } } > em { display: table-cell; padding: 0 @xf-paddingLarge; width: 1%; white-space: nowrap; // font-size: @xf-fontSizeLargest; line-height: 1; font-style: normal; text-align: center; font-weight: 400; color: @xf-textColorMuted; text-transform: lowercase; } } .block { margin-bottom: @xf-elementSpacer; &:last-child {margin-bottom: 0;} &.block--close { margin: 5px; } &.block--treeEntryChooser { .block-header { font-size: @xf-fontSizeLarge; .block-desc { font-size: @xf-fontSizeSmallest; } } .block-row { padding-top: 6px; padding-bottom: 6px; } .contentRow { &.is-disabled { opacity: 0.5; } } .contentRow-title { font-size: @xf-fontSizeNormal; } .contentRow-minor { font-size: @xf-fontSizeSmaller; } .contentRow-suffix { font-size: @xf-fontSizeSmall; } } } .block-outer { padding-bottom: @xf-blockPaddingV; .m-clearFix(); .xf-uix_blockOuter(); &:empty { display: none; } &.block-outer--after { padding-top: @xf-blockPaddingV; padding-bottom: 0; } .block-outer-hint { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; } } .block-outer-main { float: left; } .block-outer-opposite { float: right; } .block-outer-middle { text-align: center; } .block-container { .xf-contentBase(); .xf-blockBorder() border-radius: @xf-blockBorderRadius; //.m-transition(border, margin;); // edgeSpacerRemoval .xf-uix_blockContainer(); &.block-container--none { background: none; border: none; color: @xf-textColor; padding: 0; box-shadow: none; } } @media (min-width: @xf-responsiveEdgeSpacerRemoval) { @{block-noStripSel} > :first-child, .block-topRadiusContent, @{block-noStripSel} > .block-body:first-child > .blockLink:first-child { border-top-left-radius: @block-borderRadius-inner; border-top-right-radius: @block-borderRadius-inner; } @{block-noStripSel} > :last-child, .block-bottomRadiusContent, @{block-noStripSel} > .block-body:last-child > .blockLink:last-child, @{block-noStripSel} > .tabPanes:last-child > [role=tabpanel] > :last-child { border-bottom-left-radius: @block-borderRadius-inner; border-bottom-right-radius: @block-borderRadius-inner; } @{block-noStripSel} > .block-body:first-child > .dataList:first-child, .block-topRadiusContent.dataList, .block-topRadiusContent > .dataList:first-child { tbody:first-child .dataList-row:first-child, thead:first-child .dataList-row:first-child { > .dataList-cell:first-child { border-top-left-radius: @block-borderRadius-inner; } > .dataList-cell:last-child { border-top-right-radius: @block-borderRadius-inner; } } } @{block-noStripSel} > .block-body:first-child > .formRow:first-child, .block-topRadiusContent.formRow, .block-topRadiusContent > .formRow:first-child { > dt { border-top-left-radius: @block-borderRadius-inner; } > dd { border-top-right-radius: @block-borderRadius-inner; } } @{block-noStripSel} > .block-body:last-child > .dataList:last-child, .block-bottomRadiusContent.dataList, .block-bottomRadiusContent > .dataList:last-child { tbody:last-child .dataList-row:last-child { > .dataList-cell:first-child { border-bottom-left-radius: @block-borderRadius-inner; } > .dataList-cell:last-child { border-bottom-right-radius: @block-borderRadius-inner; } } } @{block-noStripSel} > .block-body:last-child > .formRow:last-child, .block-bottomRadiusContent.formRow, .block-bottomRadiusContent > .formRow:last-child { > dt { border-bottom-left-radius: @block-borderRadius-inner; } > dd { border-bottom-right-radius: @block-borderRadius-inner; } } @{block-noStripSel} > .block-body:last-child .formSubmitRow:not(.is-sticky), @{block-noStripSel} > .formSubmitRow:not(.is-sticky):last-child, .block-bottomRadiusContent > .formSubmitRow:not(.is-sticky) { > dt { border-bottom-left-radius: @block-borderRadius-inner; } > dd { border-bottom-right-radius: @block-borderRadius-inner; } .formSubmitRow-bar { border-bottom-left-radius: @block-borderRadius-inner; border-bottom-right-radius: @block-borderRadius-inner; } } } .block-header { padding: @xf-blockPaddingV @xf-blockPaddingH; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-blockHeader(); .m-clearFix(); .m-hiddenLinks(); &.block-header--separated { border-top: @xf-borderSize solid @xf-borderColorLight; } .block-desc { color: fade(@xf-blockHeader--color, 70); .m-textColoredLinks(); } } .block-minorHeader { padding: @xf-blockPaddingV @xf-blockPaddingH; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-blockMinorHeader(); .m-clearFix(); .m-hiddenLinks(); .block-body + & { border-top: @xf-borderSize solid @xf-borderColorLight; } .block-desc { .m-textColoredLinks(); } &--spaced { margin-top: @xf-paddingSmall; } &--small { font-size: @xf-fontSizeSmall; } } .block-tabHeader { padding: 0; margin: 0; font-weight: @xf-fontWeightNormal; .xf-blockTabHeader(); .m-tabsTogether(xf-default(@xf-blockTabHeader--font-size, @xf-fontSizeNormal)); .tabs-tab { padding: @xf-blockPaddingV @xf-blockPaddingH; border-bottom: @xf-borderSizeFeature solid transparent; .xf-uix_blockTabHeaderTab(); &:hover { color: @xf-blockTabHeaderSelected--color; background: fade(@xf-blockTabHeaderSelected--color, 10%); } &.is-active { background: none; .xf-blockTabHeaderSelected(); } } .block-tabHeader-extra { float: right; color: inherit; font-size: @xf-blockTabHeader--font-size; padding: @xf-blockPaddingV @xf-blockPaddingH; } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-blockTabHeader--background-color, transparent), xf-default(@xf-blockTabHeader--color, ~""), xf-default(@xf-blockTabHeaderSelected--color, ~"") ); } } .block-minorTabHeader { padding: 0; margin: 0; font-weight: @xf-fontWeightNormal; .xf-blockMinorTabHeader(); .m-tabsTogether(xf-default(@xf-blockMinorTabHeader--font-size, @xf-fontSizeNormal)); .tabs-tab { padding: @xf-blockPaddingV @xf-blockPaddingH max(0px, @xf-blockPaddingV - @xf-borderSizeFeature); border-bottom: @xf-borderSizeFeature solid transparent; &:hover { color: @xf-blockMinorTabHeaderSelected--color; } &.is-active { background: none; .xf-blockMinorTabHeaderSelected(); } } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-blockMinorTabHeader--background-color, transparent), xf-default(@xf-blockMinorTabHeader--color, ~""), xf-default(@xf-blockMinorTabHeaderSelected--color, ~"") ); } } .block-filterBar { padding: (@xf-blockPaddingH / 2) (@xf-blockPaddingH / 2); .xf-blockFilterBar(); &.block-filterBar--standalone { padding: @xf-paddingMedium @xf-paddingMedium; border: @xf-borderSize solid @xf-borderColor; border-radius: @block-borderRadius-inner; @media (max-width: @xf-responsiveEdgeSpacerRemoval) { border-radius: 0; border-left: none; border-right: none; } } .filterBar-filterToggle { background: mix( xf-default(@xf-blockFilterBar--color, @xf-linkColor), xf-default(@xf-blockFilterBar--background-color, transparent), 8% ); } .filterBar-filterToggle, .filterBar-menuTrigger { &:hover { text-decoration: none; background: mix( xf-default(@xf-blockFilterBar--color, @xf-linkColor), xf-default(@xf-blockFilterBar--background-color, transparent), 16% ); } } } .block-textHeader { margin: @xf-blockPaddingV/2 0; padding: 0; font-weight: @xf-fontWeightNormal; .xf-blockTextHeader(); .m-clearFix(); .m-hiddenLinks(); &.block-textHeader--scaled { font-size: inherit; } .block-textHeader-highlight { color: @xf-textColor; } .block-desc { .m-textColoredLinks(); } &:first-child { margin-top: 0; } } .block-formSectionHeader { padding: @xf-blockPaddingV @xf-blockPaddingH; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-formSectionHeader(); .m-clearFix(); .m-hiddenLinks(); .block-desc { .m-textColoredLinks(); } .block-container > &:first-child, .block-body--collapsible &:first-child, .block-header + & { border-top: none; } .block-formSectionHeader-aligner { @_blockPaddingShift: (unit(@xf-formLabelWidth) / 100) * (@xf-blockPaddingH); display: inline-block; text-align: right; min-width: @xf-formLabelWidth; min-width: ~"calc((@{xf-formLabelWidth}) - (@{_blockPaddingShift}) - (@{xf-formRowPaddingHInner}) - (@{xf-borderSize}))"; max-width: 100%; .menu & { display: inline; text-align: left; min-width: 0; padding-left: 0; } @media (max-width: @xf-formResponsive) { display: inline; text-align: left; min-width: 0; padding-left: 0; } } .menu & {padding-left: @xf-formRowPaddingHOuter;} @media (max-width: @xf-formResponsive) { padding-left: @xf-formRowPaddingHOuter; } .block-formSectionHeader-multiChecker { float: right; } &--small { font-size: @xf-fontSizeNormal; } } .block-desc, .blocks-desc { display: block; // font-size: @xf-fontSizeSmaller; // font-weight: @xf-fontWeightNormal; .xf-uix_categoryDescription(); } .block-body { .m-listPlain(); .xf-uix_blockBody(); &.block-body--collapsible { .has-no-js & { display: block; } .m-transitionFadeDown(); } &.block-body--contained { overflow: auto; max-height: 300px; max-height: 70vh; } &.block-body--containedFixed { overflow-x: auto; max-height: 300px; } } .block-row { margin: 0; padding: @xf-blockPaddingV @xf-blockPaddingH; .m-clearFix(); &.block-row--alt { .xf-contentAltBase(); } &.block-row--minor { font-size: @xf-fontSizeSmall; } &.block-row--separated { // padding-top: (@xf-blockPaddingV) * 2; // padding-bottom: (@xf-blockPaddingV) * 2; padding-bottom: @xf-blockPaddingV; padding-top: @xf-blockPaddingV; + .block-row { border-top: @xf-borderSize solid @xf-borderColorLight; } } &.block-row--connectAbove { padding-bottom: (@xf-blockPaddingV) * 2; .block-body > &:last-child { padding-bottom: @xf-blockPaddingV; } } &.block-row--highlighted { .xf-contentHighlightBase(); } &.block-row--clickable:hover { .xf-contentHighlightBase(); } &.is-mod-selected { background: @xf-inlineModHighlightColor; } > pre { &:first-child { margin-top: 0; } &:last-child { margin-bottom: 0; } } } .block-separator { margin: 0; padding: 0; border: none; border-top: @xf-borderSize solid @xf-borderColorLight; } .block-footer { padding: @xf-blockPaddingV @xf-blockPaddingH; .xf-blockFooter(); .m-clearFix(); &:first-child { border: none; } [data-app=admin] & { .block-footer-counter, .block-footer-select { line-height: 30px; } } &:not(.block-footer--split) { .block-footer-counter { float: left; } .block-footer-controls { float: right; } } .block-footer-controls .button, .block-footer-counter .button { .xf-uix_buttonSmall(); } &.block-footer--split { display: flex; align-items: center; .block-footer-main, .block-footer-counter { flex-grow: 1; } .block-footer-select:not(:last-child) { margin: 0 1em; } .block-footer-opposite, .block-footer-controls { margin-left: auto; } } } @media (max-width: @xf-responsiveNarrow) { .block-outer { text-align: center; } .block-outer-main, .block-outer-opposite { float: none; text-align: center; } .block-outer-main + .block-outer-opposite { margin-top: @xf-paddingMedium; } }]]>

</template>


-<template title="core_blockend.less" version_string="2.0.7" version_id="2000770" addon_id="XF" type="public">

<![CDATA[// This contains rules that apply to various block and block-related systems. This file should be included // after all of the primary definitions to ensure the rules override. .blockMessage, .blockStatus, .block-row { p:first-child { margin-top: 0; } p:last-child { margin-bottom: 0; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .block-container, .blockMessage { margin-left: -@xf-pageEdgeSpacer * .5; margin-right: -@xf-pageEdgeSpacer * .5; border-radius: 0; border-left: none; border-right: none; } .blockStatus { margin-left: -@xf-pageEdgeSpacer * .5; margin-right: -@xf-pageEdgeSpacer * .5; border-radius: 0; border-right: none; } .blockMessage.blockMessage--none { margin-left: 0; margin-right: 0; } }]]>

</template>


-<template title="core_blocklink.less" version_string="2.1.0 Beta 3" version_id="2010033" addon_id="XF" type="public">

<![CDATA[// ############################ BLOCK LINKS ################## .blockLink { display: block; padding: (@xf-blockPaddingV / 2) @xf-blockPaddingH; .xf-blockLink(); &.is-selected { .xf-blockLinkSelected(no-border); border-left: @xf-blockLinkSelected--border-width solid @xf-blockLinkSelected--border-color; padding-left: (@xf-blockPaddingH - xf-default(@xf-blockLinkSelected--border-width, 0)); } &:hover { .xf-blockLinkSelected(background); text-decoration: inherit; color: inherit; } } .blockLink-desc { display: block; color: @xf-textColorMuted; font-size: @xf-fontSizeSmaller; font-weight: @xf-fontWeightNormal; } .blockLinkSplitToggle { display: flex; padding: 0; text-decoration: none; cursor: pointer; &.is-selected { .xf-blockLinkSelected(no-border); } &:hover { .xf-blockLinkSelected(background); text-decoration: inherit; } } .blockLinkSplitToggle-link { display: block; padding: @xf-blockPaddingV @xf-blockPaddingH; text-decoration: none; flex-grow: 1; &:hover { text-decoration: none; } .blockLinkSplitToggle.is-selected & { border-left: @xf-blockLinkSelected--border-width solid @xf-blockLinkSelected--border-color; padding-left: (@xf-blockPaddingH - xf-default(@xf-blockLinkSelected--border-width, 0)); } } .blockLinkSplitToggle-toggle { display: inline-block; padding: @xf-blockPaddingV @xf-blockPaddingH; text-decoration: none; flex-grow: 0; line-height: 1; &:hover { text-decoration: none; } &:after { .m-faBase(); font-size: 80%; .m-faContent(@fa-var-chevron-down, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-down" /> } &.is-active:after { .m-faContent(@fa-var-chevron-up, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-up" /> } } .blockLink--iconic { i:after { .m-faBase(); display: inline-block; min-width: 1em; position: absolute; left: @xf-blockPaddingH; top: 8px; display: none !important; } &--started i:after { .m-faContent(@fa-var-file-alt, .86em); <xf:macro template="uix_icons.less" name="content" arg-icon="file-document" /> } &--contributed i:after { .m-faContent(@fa-var-comments, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="comment-multiple" /> } &--watched i:after { .m-faContent(@fa-var-bookmark, 0.72em); <xf:macro template="uix_icons.less" name="content" arg-icon="bookmark" /> } &--unanswered i:after { .m-faContent(@fa-var-question-circle, .86em); <xf:macro template="uix_icons.less" name="content" arg-icon="help" /> } } // ################################ FAUX BLOCK LINKS ####################### // concept from https://codepen.io/BPScott/pen/Erwan and http://codepen.io/IschaGast/pen/Qjxpxo // z-indexes are bumped to have the link sit on top of positioned elements (without z-index) .fauxBlockLink { position: relative; a, .fauxBlockLink-link { position: relative; z-index: 2; } .fauxBlockLink-blockLink { position: static; &:before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 1; } } &.fauxBlockLink--noHover { .fauxBlockLink-blockLink:hover { text-decoration: none; } } }]]>

</template>


-<template title="core_blockmessage.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[// ############################ BLOCK MESSAGE ################### .block-rowMessage { margin: @xf-blockPaddingV 0; padding: @xf-blockPaddingV @xf-blockPaddingH; .xf-blockBorder(); border-radius: @xf-blockBorderRadius; .m-clearFix(); &:first-child { margin-top: 0; } &:last-child { margin-bottom: 0; } &.block-rowMessage--small { font-size: @xf-fontSizeSmall; padding: @xf-blockPaddingV/2 @xf-blockPaddingH/2; } &.block-rowMessage--center { text-align: center; } .m-blockMessageVariants(); } .blockMessage { margin-bottom: @xf-elementSpacer; padding: @xf-blockPaddingV @xf-blockPaddingH; .xf-contentBase(); .xf-blockBorder(); border-radius: @xf-blockBorderRadius; .xf-uix_blockMessage(); .m-clearFix(); //.m-transition(border, margin;); // edgeSpacerRemoval &.blockMessage--none { background: none; border: none; color: @xf-textColor; padding: 0; box-shadow: none; } &.blockMessage--close { margin-top: 5px; margin-bottom: 5px; } &.blockMessage--small { font-size: @xf-fontSizeSmall; padding: @xf-blockPaddingV/2 @xf-blockPaddingH/2; } &.blockMessage--center { text-align: center; } .m-blockMessageVariants(); } .blockMessage--iconic, .block-rowMessage--iconic { text-align: left; position: relative; // padding-left: 4em; min-height: 4em; display: flex; align-items: center; &:before { .m-faBase(); top: 0; // left: @xf-blockPaddingV; font-size: @xf-uix_iconSizeLarge !important; padding-right: @xf-paddingLarge; } } .m-blockMessageVariants() { // note: the double && is correct here -- it enforces output like ".x.x--variant". The extra specificity helps // prevent issues from things like media query overrides. &&--highlight { .xf-contentHighlightBase(); } &--highlight&--iconic:before { .m-faContent(@fa-var-info-circle); <xf:macro name="content" template="uix_icons.less" arg-icon="info" /> } &&--important { .xf-contentAccentBase(); border-left: @xf-borderSizeFeature solid @xf-borderColorAttention; padding: @xf-paddingMedium; a { .xf-contentAccentLink(); } } &--important&--iconic:before { .m-faContent(@fa-var-exclamation-circle); <xf:macro name="content" template="uix_icons.less" arg-icon="warning" /> color: @xf-important-featureColor; } &&--success { border-left: @xf-borderSizeFeature solid @xf-successFeatureColor; background: @xf-successBg; color: @xf-successColor; .m-textColoredLinks(); } &--success&--iconic:before { .m-faContent(@fa-var-check-circle); <xf:macro name="content" template="uix_icons.less" arg-icon="check" /> color: @xf-success-featureColor; } &&--warning { border-left: @xf-borderSizeFeature solid @xf-warningFeatureColor; background: @xf-warningBg; color: @xf-warningColor; .m-textColoredLinks(); } &--warning&--iconic:before { .m-faContent(@fa-var-exclamation-triangle); <xf:macro name="content" template="uix_icons.less" arg-icon="warning" /> color: @xf-warning-featureColor; } &&--error { border-left: @xf-borderSizeFeature solid @xf-errorFeatureColor; background: @xf-errorBg; color: @xf-errorColor; .m-textColoredLinks(); } &--error&--iconic:before { .m-faContent(@fa-var-times-circle); <xf:macro name="content" template="uix_icons.less" arg-icon="warning" /> color: @xf-error-featureColor; } }]]>

</template>


-<template title="core_blockstatus.less" version_string="2.1.0 Beta 1" version_id="2010031" addon_id="XF" type="public">

<![CDATA[// ################################## BLOCK STATUS MESSAGES ############################## .blockStatus { .xf-contentAltBase(); .xf-blockBorder(); border-left: @xf-borderSizeFeature solid @xf-borderColorAttention; border-radius: @xf-blockBorderRadius; margin: 0; padding: @xf-paddingMedium 0; font-size: @xf-fontSizeSmall; text-align: left; //.m-transition(border, margin;); // edgeSpacerRemoval > dt { display: none; } &.blockStatus--info { border-left-color: @xf-borderColorFeature; } &.blockStatus--simple { .xf-blockBorder(); } &.blockStatus--standalone { margin-bottom: (@xf-elementSpacer) / 2; } } .blockStatus-message { display: block; padding: 0 @xf-paddingMedium; margin: .2em 0 0; &:first-of-type { margin-top: 0; } &:before { .m-faBase(); display: inline-block; min-width: .8em; color: @xf-textColorAttention; } &--deleted::before { .m-faContent("@{fa-var-trash}\20"); } &--locked::before { .m-faContent("@{fa-var-lock}\20"); } &--moderated::before { .m-faContent("@{fa-var-shield}\20"); } &--warning:before { .m-faContent("@{fa-var-exclamation-triangle}\20"); } &--ignored:before { .m-faContent("@{fa-var-microphone-slash}\20"); } &--deleted::before { <xf:macro template="uix_icons.less" name="content" arg-icon="delete" /> } &--locked::before { <xf:macro template="uix_icons.less" name="content" arg-icon="lock" /> } &--moderated::before { <xf:macro template="uix_icons.less" name="content" arg-icon="moderate" /> } &--warning:before { <xf:macro template="uix_icons.less" name="content" arg-icon="warning" /> } &--ignored:before { <xf:macro template="uix_icons.less" name="content" arg-icon="ignore" /> } }]]>

</template>


-<template title="core_button.less" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[// ############################ BUTTONS ################# .button, a.button // needed for specificity over a:link { .m-buttonBase(); .button-text {display: inline-flex; align-items: center;} a { color: inherit; text-decoration: none; } &:hover, &:focus { .xf-uix_buttonHover(); } &:active { .xf-uix_buttonActive(); } .xf-buttonDefault(); .m-buttonBlockColorVariationSimple(xf-default(@xf-buttonDefault--background-color, transparent)); &.button--primary { .xf-buttonPrimary(); .m-buttonBlockColorVariationSimple(xf-default(@xf-buttonPrimary--background-color, transparent)); &:hover, &:focus {.xf-uix_buttonPrimaryHover();} &:active {.xf-uix_buttonPrimaryActive();} } &.button--cta { .xf-buttonCta(); .m-buttonBlockColorVariationSimple(xf-default(@xf-buttonCta--background-color, transparent)); &:hover, &:focus {.xf-uix_buttonCtaHover();} &:active {.xf-uix_buttonCtaActive();} } &.button--link { // block colors // background: @xf-contentBg; // color: @xf-linkColor; // .m-buttonBorderColorVariation(@xf-borderColor); .xf-uix_buttonSmall(); .xf-uix_buttonLink(); &:hover, &:focus { text-decoration: none; // background: @xf-contentHighlightBg; .xf-uix_buttonHover(); } &:active { .xf-uix_buttonActive(); } } &.button--plain { background: none; color: @xf-linkColor; border: none; &:hover, &:active, &:focus { text-decoration: none; background: none; } } &.button--alt { // block colors background-color: @xf-contentHighlightBg; color: @xf-linkColor; .m-buttonBorderColorVariation(@xf-paletteColor2); &:hover, &:active, &:focus { background-color: @xf-paletteColor1; color: @xf-linkColor; } } &.button--longText { .m-overflowEllipsis(); max-width: 100%; display: inline-block; } &.is-disabled { .xf-buttonDisabled(); // .m-buttonBorderColorVariation(xf-default(@xf-buttonDisabled--background-color, transparent)); &:hover, &:active, &:focus { .xf-buttonDisabled(); // background: xf-default(@xf-buttonDisabled--background-color, transparent) !important; } } &.button--scroll { // background: fade(xf-default(@xf-buttonDefault--background-color, transparent), 75%); .xf-buttonPrimary(); padding: 5px 8px; .m-dropShadow(); &:hover, &:focus {.xf-uix_buttonPrimaryHover();} &:active {.xf-uix_buttonPrimaryActive();} } &.button--normal { font-size: @xf-fontSizeNormal; } &.button--small { font-size: @xf-fontSizeSmall; padding: 3px 6px; .xf-uix_buttonSmall(); } &.button--smaller { font-size: @xf-fontSizeSmaller; padding: 2px 5px; } &.button--fullWidth { display: block; width: 100%; box-sizing: border-box; } &.button--wrap { white-space: normal; } &.button--icon { > .button-text:before, .button-icon { .m-faBase(); } > .button-text:before, > .fa--xf:before, .button-icon { // font-size: 120%; font-size: @xf-uix_iconSize; vertical-align: -.1em; display: inline-block; // margin: -.255em 6px -.255em 0; margin-right: .2em; // content: ''; } > .fa--xf { // helps fix a button alignment issue (Chrome only) line-height: inherit; } /* > .button-text:before { .m-faBase(); // font-size: 120%; font-size: @xf-uix_iconSize; vertical-align: middle; display: inline-block; // margin: -.255em 6px -.255em 0; margin-right: .2em; } */ .button-icon { height: 1em; vertical-align: 0; } &.button--iconOnly { > .button-text:before, > i.fa--xf:before, .button-icon { margin-left: 0; margin-right: 0; } } &.button--padded { > .button-text:before, > i.fa--xf:before, .button-icon { margin-top: 0; margin-bottom: 0; } } &--add { .m-buttonIcon(@fa-var-plus-square, 0.79em); // fa-plus-square > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="plus" />} } &--import { .m-buttonIcon(@fa-var-upload, 0.93em); // fa-upload > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="import" /> } } &--export, &--download { .m-buttonIcon(@fa-var-download, 1.125em); // fa-download > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="export" /> } } &--redirect { .m-buttonIcon(@fa-var-external-link, 1.125em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="link" />} } &--edit { .m-buttonIcon(@fa-var-pencil, 1.13em); // fa-pencil > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="edit" />} } &--save { .m-buttonIcon(@fa-var-save, 0.86em); // fa-floppy-o > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="save" /> } } &--delete { .m-buttonIcon(@fa-var-trash-o, 0.79em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="delete" /> } // fa-trash-o } &--reply { .m-buttonIcon(@fa-var-mail-reply, 1.13); // fa-reply > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="reply" />} } &--quote { .m-buttonIcon(@fa-var-quote-left, 0.93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="quote" />} // fa-quote-left } &--purchase { .m-buttonIcon(@fa-var-shopping-basket, 1.15em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="shopping-cart" />} // fa-shopping-cart } &--payment { .m-buttonIcon(@fa-var-credit-card, 1.08em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="payment" />} // fa-credit-card } &--convert { .m-buttonIcon(@fa-var-flash, 0.5em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="convert" />} // fa-bolt } &--search { .m-buttonIcon(@fa-var-search, 0.93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="search" />} // fa-search } &--sort { .m-buttonIcon(@fa-var-sort, 0.58em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="sort" /> } // fa-sort } &--upload { .m-buttonIcon(@fa-var-upload, 0.93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="upload" />} // fa-upload } &--attach { .m-buttonIcon(@fa-var-paperclip, 0.79em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="attachment" />} // fa-attachment } &--login { .m-buttonIcon(@fa-var-lock, 0.65em); .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="login" />} // fa-lock } &--rate { .m-buttonIcon(@fa-var-star, 0.93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="rate" />} // fa-star-half-o } &--config { .m-buttonIcon(@fa-var-cog, 0.86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="settings" />} // fa-cog } &--refresh { .m-buttonIcon(@fa-var-refresh, 0.86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="refresh" />} } &--translate { .m-buttonIcon(@fa-var-globe, .86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="translate" /> } } &--vote { .m-buttonIcon(@fa-var-check-circle-o, .86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="poll" />} } &--result { .m-buttonIcon(@fa-var-bar-chart-o, 1.15em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="graph" />} } &--history { .m-buttonIcon(@fa-var-history, .86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="history" />} } &--cancel { .m-buttonIcon(@fa-var-ban, .86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="close" /> } } &--preview { .m-buttonIcon(@fa-var-eye, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="watched" />} } &--conversation { .m-buttonIcon(@fa-var-comments-o, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="messages" />} } &--write { .m-buttonIcon(@fa-var-edit, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="edit" />} } &--download { .m-buttonIcon(@fa-var-download, .93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="download" />} } &--bolt { .m-buttonIcon(@fa-var-bolt, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="comment-alert" /> } } &--list { .m-buttonIcon(@fa-var-list, .93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="list" />} } &--confirm { .m-buttonIcon(@fa-var-check, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="check" />} } &--disable { .m-buttonIcon(@fa-var-power-off); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="disable" />} } &--markRead { .m-buttonIcon(@fa-var-check-square-o, .93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="check" />} } &--notificationsOn { .m-buttonIcon(@fa-var-bell-o, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="alert" />} } &--notificationsOff { .m-buttonIcon(@fa-var-bell-slash-o, 1.15em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="alert-off" />} } &--merge { .m-buttonIcon(@fa-var-compress, .86em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="merge" />} } &--move { .m-buttonIcon(@fa-var-share, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="move" />} } &--copy { .m-buttonIcon(@fa-var-clone, 1em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="clone" />} } &--approve, &--unapprove { .m-buttonIcon(@fa-var-shield, .72em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="moderate" />} } &--delete, &--undelete { .m-buttonIcon(@fa-var-trash-o, .88em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="delete" />} } &--stick, &--unstick { .m-buttonIcon(@fa-var-thumb-tack, .65em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="sticky" />} } &--lock { .m-buttonIcon(@fa-var-lock, .88em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="lock" />} } &--unlock { .m-buttonIcon(@fa-var-unlock, .93em); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="unlock" />} } &--bookmark { .m-buttonIcon(@fa-var-bookmark); > .button-text:before {<xf:macro template="uix_icons.less" name="content" arg-icon="bookmark" />} &.is-bookmarked .button-text:before { font-weight: @faWeight-solid; color: @xf-textColorAttention; } } } &.button--provider { > .button-text:before, .button-icon { .m-faBase('Brands'); font-size: 120%; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; } .button-icon { height: 1em; vertical-align: 0; } &--facebook { .m-buttonColorVariation(#3B5998, white); .m-buttonIcon(@fa-var-facebook, .58em); .button-text {display: inline;} } &--twitter { .m-buttonColorVariation(#1DA1F3, white); .m-buttonIcon(@fa-var-twitter, .93em); } &--google { .m-buttonColorVariation(white, #444); border-color: #e9e9e9; > .button-text:before { display: none; } } &--github { .m-buttonColorVariation(#666666, white); .m-buttonIcon(@fa-var-github, .86em); } &--linkedin { .m-buttonColorVariation(#0077b5, white); .m-buttonIcon(@fa-var-linkedin, .86em); } &--microsoft { .m-buttonColorVariation(#00bcf2, white); .m-buttonIcon(@fa-var-windows, .93em); } &--yahoo { .m-buttonColorVariation(#410093, white); .m-buttonIcon(@fa-var-yahoo, .86em); } } // button-text and button-menu are always children of button--splitTrigger // but are defined here for reasons of specificity, as these border colors // are overwritten by .m-buttonBorderColorVariation() > .button-text { border-right: @xf-borderSize solid transparent; } > .button-menu { border-left: @xf-borderSize solid transparent; } &.button--splitTrigger { .m-clearFix(); padding: 0; font-size: 0; display: inline-block; button.button-text { background: transparent; border: none; border-right: @xf-borderSize solid transparent; color: inherit; } > .button-text, > .button-menu { .xf-buttonBase(); display: inline-block; &:hover { &:after { opacity: 1; } } } > .button-text { .m-borderRightRadius(0); } > .button-menu { .m-borderLeftRadius(0); padding-right: xf-default(@xf-buttonBase--padding-right, 0);// * (2/3); padding-left: xf-default(@xf-buttonBase--padding-left, 0);// * (2/3); &:after { .m-menuGadget(); // .58em opacity: .5; } } } } .buttonGroup { display: inline-block; vertical-align: top; .m-clearFix(); &.buttonGroup--aligned { vertical-align: middle; } > .button { float: left; &:not(:first-child) { border-left: none; } &:not(:first-child):not(:last-child) { border-radius: 0; } &:first-child:not(:last-child) { .m-borderRightRadius(0); } &:last-child:not(:first-child) { .m-borderLeftRadius(0); } } > .buttonGroup-buttonWrapper { float: left; &:not(:first-child) > .button { border-left: none; } &:not(:first-child):not(:last-child) > .button { border-radius: 0; } &:first-child:not(:last-child) > .button { .m-borderRightRadius(0); } &:last-child:not(:first-child) > .button { .m-borderLeftRadius(0); } } } .toggleButton { > input { display: none; } > span { .xf-buttonDisabled(); .m-buttonBorderColorVariation(xf-default(@xf-buttonDisabled--background-color, transparent)); } &.toggleButton--small > span { font-size: @xf-fontSizeSmaller; padding: @xf-paddingSmall; } > input:checked + span { .xf-buttonDefault(); .m-buttonBlockColorVariationSimple(xf-default(@xf-buttonDefault--background-color, transparent)); } } .u-scrollButtons { position: fixed; bottom: 30px; <xf:if is="property('uix_fab') == 'always'"> bottom: 100px; <xf:elseif is="property('uix_fab') == 'mobile'" /> @media(max-width: {{ property('uix_fabVw') - 1 }}px ) { bottom: 100px; } </xf:if> <xf:if is="(property('uix_visitorTabsMobile') == 'tabbar') && ( property('uix_fab') != 'never' )"> @media (max-width: @xf-responsiveNarrow) { bottom: {{ property('paddingLarge') + 23 + 100 }}px; } </xf:if> right: (@xf-pageEdgeSpacer) / 2; .has-hiddenscroll & { right: 20px; } z-index: @zIndex-9; .m-transition(opacity; @xf-animationSpeed); opacity: 0; display: none; &.is-transitioning { display: flex; } &.is-active { display: flex; opacity: 1; } .button { font-size: 14px; display: flex; height: 24px; line-height: 24px; + .button { margin-left: @xf-paddingMedium; } } } .block-outer-opposite .button { .xf-uix_buttonSmall(); }]]>

</template>


-<template title="core_categorylist.less" version_string="2.0.0 Release Candidate 3" version_id="2000053" addon_id="XF" type="public">

<![CDATA[// ################################ CATEGORY LIST ####################### @_categoryListTogglerWidth: 1em; @_categoryListTogglerPaddingH: (@xf-blockPaddingH / 2); .categoryList { display: none; .m-listPlain(); &.is-active { display: block; } } .categoryList-item { padding: 0; text-decoration: none; font-size: @xf-fontSizeNormal; &.categoryList-item--small { font-size: @xf-fontSizeSmall; } .categoryList { padding-left: @xf-paddingLarge; } } .categoryList-itemDesc { display: block; font-size: @xf-fontSizeSmaller; font-weight: @xf-fontWeightNormal; color: @xf-textColorMuted; margin-top: -@xf-blockPaddingV; .m-overflowEllipsis(); } .categoryList-header { padding: @xf-blockPaddingV 0; margin: 0; color: @xf-textColorFeature; text-decoration: none; font-weight: @xf-fontWeightHeavy; &.categoryList-header--muted { color: @xf-textColorMuted; } .m-clearFix(); .m-hiddenLinks(); } .categoryList-itemRow { display: flex; min-width: 0; } .categoryList-link { display: block; flex-grow: 1; padding: (@xf-blockPaddingV / 2) @xf-blockPaddingH; text-decoration: none; .m-overflowEllipsis(); &:hover { text-decoration: none; } &.is-selected { font-weight: @xf-fontWeightHeavy; } .categoryList-toggler + &, .categoryList-togglerSpacer + & { padding-left: 0; } } .categoryList-label { margin-left: auto; align-self: center; padding-right: @_categoryListTogglerPaddingH; } .categoryList-toggler { display: inline-block; padding: @xf-blockPaddingV @_categoryListTogglerPaddingH; text-decoration: none; flex-grow: 0; line-height: 1; &:hover { text-decoration: none; } &:after { .m-faBase(); // font-size: 80%; .m-faContent(@fa-var-chevron-down, @_categoryListTogglerWidth); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-down" /> } &.is-active:after { .m-faContent(@fa-var-chevron-up, @_categoryListTogglerWidth); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-up" /> } } .categoryList-togglerSpacer { display: inline-block; visibility: hidden; padding: (@xf-blockPaddingV / 2) (@xf-blockPaddingH / 2); &:after { .m-faBase(); // font-size: 80%; .m-faContent(@fa-var-chevron-down, @_categoryListTogglerWidth); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-down" /> } }]]>

</template>


-<template title="core_contentrow.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[// ########################################### CONTENT ROWS ############################ @_contentRow-faderHeight: 150px; @_contentRow-faderCoverHeight: (@_contentRow-faderHeight) / 2; .contentRow { display: flex; &.contentRow--alignMiddle { align-items: center; } &.is-deleted { opacity: .7; .contentRow-header, .contentRow-title { text-decoration: line-through; } } } .m-figureFixed(@size) { width: @size; img, i.fa, i.fal, i.far, i.fas, i.fab, i.fad, .avatar { max-height: @size; } } .contentRow-figure { vertical-align: top; white-space: nowrap; word-wrap: normal; text-align: center; img, i.fa, i.fal, i.far, i.fas, i.fab, i.fad, .avatar { vertical-align: bottom; } &.contentRow-figure--fixedBookmarkIcon { .m-figureFixed(48px); } &.contentRow-figure--fixedSmall { .m-figureFixed(60px); } &.contentRow-figure--fixedMedium { .m-figureFixed(100px); &.contentRow-figure--fixedMedium--fluidWidth { width: auto; max-width: 200px; } } &.contentRow-figure--fixedLarge { .m-figureFixed(200px); } &.contentRow-figure--text { font-size: @xf-fontSizeLargest; } } .contentRow-figureContainer { position: relative; .contentRow-figureSeparated { position: absolute; right: -5px; bottom: -5px; .m-avatarSize(@avatar-s / 2 + 2px); } } .contentRow-figureIcon { text-align: center; color: @xf-textColorFeature; img, i.fa, i.fal, i.far, i.fas, i.fab, i.fad { width: 64px; overflow: hidden; white-space: nowrap; word-wrap: normal; border-radius: @xf-borderRadiusMedium; .contentRow-figure--fixedBookmarkIcon & { width: 48px; } } } .contentRow-main { flex: 1; min-width: 0; vertical-align: top; padding-left: @xf-paddingLarge; &:before { // because of line height, there appears to be extra space at the top of this content: ''; display: block; margin-top: -.18em; } &.contentRow-main--close { padding-left: @xf-paddingMedium; } &:first-child { padding-left: 0; } } .contentRow-header { margin: 0; padding: 0; font-weight: @xf-fontWeightHeavy; font-size: @xf-fontSizeLarge; } .contentRow-title { margin: 0; padding: 0; font-weight: @xf-fontWeightNormal; font-size: @xf-fontSizeLarge; } .contentRow-snippet { font-size: @xf-fontSizeSmall; font-style: italic; margin: .25em 0; } .contentRow-muted { color: @xf-textColorMuted; } .contentRow-lesser { font-size: @xf-fontSizeSmall; } .contentRow-suffix { padding-left: @xf-paddingMedium; white-space: nowrap; word-wrap: normal; } .contentRow-faderContainer { position: relative; overflow: hidden; } .contentRow-faderContent { max-height: 150px; overflow: hidden; -webkit-mask-image: linear-gradient(to bottom, #000 100px, transparent 150px); mask-image: linear-gradient(to bottom, #000 100px, transparent 150px); } .contentRow-fader { position: absolute; top: (@_contentRow-faderHeight) + ((@xf-paddingMedium) * 2) - (@_contentRow-faderCoverHeight); left: 0; right: 0; height: @_contentRow-faderCoverHeight; @supports not (-webkit-mask-image) or not (mask-image) { .m-gradient(fade(@xf-contentBg, 0%), @xf-contentBg, transparent, 0%, 80%); } } .contentRow-minor { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; time {color: @xf-textColorDimmed;} &.contentRow-minor--hideLinks { .m-hiddenLinks(); a {text-decoration: underline;} } &.contentRow-minor--smaller { font-size: @xf-fontSizeSmaller; } &.contentRow-minor--singleLine { .m-overflowEllipsis(); } } .contentRow-spaced { margin: .5em 0; &:last-child { margin-bottom: 0; } } .contentRow-extra { float: right; padding-left: @xf-paddingMedium; font-size: @xf-fontSizeSmallest; &.contentRow-extra--small { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; } &.contentRow-extra--normal { font-size: @xf-fontSizeNormal; color: @xf-textColorMuted; } &.contentRow-extra--large { font-size: @xf-fontSizeLarge; color: @xf-textColorMuted; } &.contentRow-extra--larger { font-size: @xf-fontSizeLarger; color: @xf-textColorMuted; } &.contentRow-extra--largest { font-size: @xf-fontSizeLargest; color: @xf-textColorMuted; } } @media (max-width: @xf-responsiveNarrow) { .contentRow-figure { &.contentRow-figure--fixedBookmarkIcon { width: @avatar-xs; } .avatar--s { .m-avatarSize(@avatar-xs); } } .contentRow--hideFigureNarrow { .contentRow-figure { display: none; } .contentRow-main { padding-left: 0; } } }]]>

</template>


-<template title="core_datalist.less" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[// ################################# DATA LISTS ################### .dataList { max-width: 100%; &.dataList--separated { border-top: @xf-borderSize solid @xf-borderColorLight; border-bottom: @xf-borderSize solid @xf-borderColorLight; } &.dataList--separatedTop { border-top: @xf-borderSize solid @xf-borderColorLight; } &.dataList--separatedBottom { border-bottom: @xf-borderSize solid @xf-borderColorLight; } &.dataList--contained { overflow-x: auto; max-height: 300px; max-height: 85vh; } &.dataList--containedFixed { overflow-x: auto; max-height: 300px; } @media (max-width: @xf-responsiveMedium) { overflow-x: auto; } } .dataList-table { width: 100%; border-collapse: separate; border-spacing: 0; } .dataList-rowGroup { &.is-hidden { display: none; } } .m-adjustDataListCellPadding(@paddingV; @paddingH) { padding: @paddingV @paddingH; &.dataList-cell--action, &.dataList-cell--link { padding: 0; a, label, .dataList-blockLink { padding: @paddingV @paddingH; } } } .dataList-row { &:hover:not(.dataList-row--noHover):not(.dataList-row--header):not(.is-spHovered), .is-spActive &.is-spChecked { background: fade(@xf-contentHighlightBg, 50%); } .is-spActive &.is-spHovered { background: fade(@xf-contentHighlightBg, 75%); } .is-spActive &:not(.dataList-row--noHover):not(.dataList-row--header):not(.is-spChecked) * { color: @xf-textColorMuted; } &.dataList-row--header { .dataList-cell { .xf-dataListHeader(); .m-adjustDataListCellPadding(@xf-dataListPaddingV/2, @xf-dataListPaddingH); .m-textColoredLinks(); text-align: left; &.dataList-cell--min { text-align: center; } } } &.dataList-row--subSection { .dataList-cell { .xf-dataListSection(); .m-adjustDataListCellPadding(@xf-dataListPaddingV/2, @xf-dataListPaddingH); a { color: inherit; } } &:hover:not(.dataList-row--noHover) .dataList-cell { .xf-dataListSection(background); } } &.dataList-row--note { .dataList-cell { text-align: center; font-style: italic; } } &.dataList-row--deleted { .dataList-cell { opacity: .5; } } &.dataList-row--highlighted { font-weight: @xf-fontWeightHeavy; } &.dataList-row--custom { > .dataList-cell:first-child { border-left: @xf-borderSizeFeature solid red; } .dataList-cell--link a { color: red; } } &.dataList-row--parentCustom { > .dataList-cell:first-child { border-left: @xf-borderSizeFeature solid orange; } .dataList-cell--link a { color: orange; } } &.dataList-row--protected { > .dataList-cell:first-child { border-left: @xf-borderSizeFeature solid @xf-borderColorFeature; } } &.is-hidden { display: none; } &.dataList-row--disabled { .dataList-cell--link a { color: @xf-textColorMuted; .m-transition(); } } &.dataList-row--opposite, &.dataList-row--header.dataList-row--opposite { .dataList-cell { text-align: right; &:first-of-type { text-align: left; } } } &.dataList-row--opposite, &.dataList-row--header.dataList-row--opposite { .dataList-cell { text-align: right; &:first-of-type { text-align: left; } } } tbody:last-child &:last-child .dataList-cell { border-bottom: none; } } .dataList-cell { vertical-align: middle; padding: @xf-dataListPaddingV @xf-dataListPaddingH; border-bottom: @xf-borderSize solid @xf-borderColorFaint; &.dataList-cell--main { min-width: 180px; } &.dataList-cell--minWidth { min-width: 17vw; } &.dataList-cell--link, &.dataList-cell--action { padding: 0; } &.dataList-cell--alt, &.dataList-cell--action { background: @xf-contentAltBg; } &.dataList-cell--highlighted { background: @xf-contentHighlightBg; } &.dataList-cell--separated { border-left: @xf-borderSize solid @xf-borderColorFaint; } &.dataList-cell--min, &.dataList-cell--action, &.dataList-cell--iconic, &.dataList-cell-fa { width: 1%; white-space: nowrap; word-wrap: normal; text-align: center; } &.dataList-cell--number { text-align: right; } &.dataList-cell--number { text-align: right; } &.dataList-cell--action { font-size: @xf-fontSizeSmaller; } &.dataList-cell--action, &.dataList-cell--link { cursor: pointer; text-decoration: none; &.dataList-cell--alt:hover, &.dataList-cell--action:hover { background: @xf-contentHighlightBg; } a, label, .dataList-blockLink { padding: @xf-dataListPaddingV @xf-dataListPaddingH; display: block; height: 100%; text-decoration: none; cursor: pointer; } input { cursor: pointer; } } &.dataList-cell--action a:not(.iconic) { // padding: @xf-dataListPaddingV @xf-dataListPaddingH * 2; } &.dataList-cell--iconic, &.dataList-cell--fa { padding: 0; font-size: 125%; min-width: 2.5em; position: relative; text-align: center; } &.dataList-cell--iconic { > a.iconic > i { .iconicIcon(false); } > .iconic { position: absolute; // fill the cell top: 0; left: 0; right: 0; bottom: 0; > i { &:before, &:after { left: 50%; margin-left: -.5em; // half of icon width top: 50%; margin-top: -.5em; // half of icon height } } > input[type=checkbox] + i { &:before, &:after { margin-top: -.7em; margin-left: -.4375em; // half of .fa-check-square width } } > input[type=radio] + i { &:before, &:after { margin-top: -.7em; margin-left: -.5em; // half of .fa-check-square width } } &.iconic--toggle > input[type=checkbox] + i { &:before { .m-faContent(@fa-var-toggle-off, 1.125em); } &:after { .m-faContent(@fa-var-toggle-on, 1.125em); } &:before, &:after { font-size: 120%; margin-top: -.7em; margin-left: -.5625em; // half of .fa-toggle-on width } } &.iconic--delete > i { &:before { .m-faContent(@fa-var-trash-alt); } &:before, &:after { margin-top: -.7em; margin-left: -.4375em; // half of .fa-trash-alt width } } } } &.dataList-cell--image { padding: 0; a { padding: 0; } img, .dataList-imagePlaceholder { display: block; margin: auto; font-size: 30px; } } &.dataList-cell--imageSmall { img, .dataList-imagePlaceholder { height: 41px; max-width: 41px; line-height: 41px; } .avatar { .m-avatarSize(41px); border-radius: 2px; } } &.dataList-cell--imageSmallWide { img, .dataList-imagePlaceholder { height: 41px; max-width: 82px; line-height: 41px; } .avatar { .m-avatarSize(41px); border-radius: 0; } } &.dataList-cell--imageMedium { img, .dataList-imagePlaceholder { height: 54px; max-width: 54px; line-height: 54px; } .avatar { .m-avatarSize(54px); border-radius: 0; } } &.dataList-cell--imageMediumWide { img, .dataList-imagePlaceholder { height: 54px; max-width: 108px; line-height: 54px; } .avatar { .m-avatarSize(54px); border-radius: 0; } } &.dataList-cell--responsiveMenuTrigger, &.dataList-cell--fauxResponsiveMenuTrigger { display: none; } &.dataList-cell--breakWord { word-break: break-word; } &.dataList-cell--hint, .dataList-row--subSection &.dataList-cell--hint { text-align: right; font-size: @xf-fontSizeSmaller; color: @xf-textColorMuted; } // create ten depth classes for the appearance of nested items .depthLoop(@i) when (@i <= 10) { &.dataList-cell--d@{i} { text-indent: (@i - 1) * 25px; } .depthLoop(@i + 1); } .depthLoop(1); .is-match { text-decoration: underline; color: red; } @media (max-width: @xf-responsiveMedium) { &.dataList-cell--responsiveMenuItem, &.dataList-cell--fauxResponsiveMenuItem { display: none !important; } &.dataList-cell--responsiveMenuTrigger, &.dataList-cell--fauxResponsiveMenuTrigger { display: table-cell; } } } .dataList-imagePlaceholder { &:after { content: '?'; } } .dataList-mainRow, .dataList-textRow, .dataList-subRow { width: 0; min-width: 100%; line-height: 1.4; max-height: 1.4em; overflow: hidden; white-space: nowrap; word-wrap: normal; text-overflow: ellipsis; &:empty { display: none; } } .dataList-mainRow { font-weight: @xf-fontWeightHeavy; .dataList-row--subSection & { font-weight: @xf-fontWeightNormal; } } .dataList-secondRow { display: block; font-size: @xf-fontSizeSmallest; } .dataList-hint, .dataList-subRow { color: @xf-textColorMuted; font-size: @xf-fontSizeSmaller; font-weight: @xf-fontWeightNormal; } .dataList-hint { display: inline; /* .m-faBase(); .m-faContent(@fa-var-window-close); <xf:macro template="uix_icons.less" name="content" arg-icon="close" /> */ } .dataList-row--footer .dataList-cell { // note that this is applied as a cell style which has higher priority than the row styles normally applied padding: @xf-dataListPaddingV/2 @xf-dataListPaddingH; border-bottom: none; .xf-dataListFooter(); } .dataList--responsive { .dataList-table, tbody, thead, tfoot { display: block; } .dataList-row { display: block; &.dataList-row--headerResponsive { display: none; } } .dataList-cell { display: block; width: auto; &[data-cell-label] { display: flex; align-items: center; > * { min-width: 0; text-align: right; } &:before { display: table-cell; content: attr(data-cell-label) "{$xf.language.label_separator}"; padding-right: @xf-dataListPaddingH; margin-right: auto; word-break: normal; white-space: normal; text-align: left; } > .input:first-child:last-child { display: inline; } a { // commonly a URL, but needed to prevent a potential overflow min-width: 0; } } &.dataList-cell--iconic { &:not([data-cell-label]):before { content: ""; display: inline-block; height: 1em; } padding: @xf-dataListPaddingV @xf-dataListPaddingH; } &.dataList-cell--link, &.dataList-cell--action { &[data-cell-label]:before { padding: @xf-dataListPaddingV @xf-dataListPaddingH; } } &.dataList-cell--iconic, &.dataList-cell--fa { display: table-cell; width: 1%; } &.dataList-cell--iconic[data-cell-label] { display: flex; width: auto; font-size: 100%; .iconic { position: relative; } } } .dataList-row:not(.dataList-row--header):not(.dataList-row--subSection) { border-bottom: @xf-borderSize solid @xf-borderColorLight; .dataList-cell { border-bottom: none; } } tbody:last-child .dataList-row:not(.dataList-row--header):not(.dataList-row--subSection):last-child { border-bottom: none; } .dataList-mainRow, .dataList-textRow, .dataList-subRow { width: auto; min-width: 0; } }]]>

</template>


-<template title="core_fawidths.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[// FONT AWESOME WIDTHS // these are icons that we reference directly using .fa-{icon} classes in our CSS // so these definitions allow us to specify min-widths to avoid flicker / stutter /* TODO: Needs updating for FA5 html { .fa-angle-down:before { .m-faContent(@fa-var-angle-down, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-down" />;} .fa-angle-up:before { .m-faContent(@fa-var-angle-up, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-up" /> ;} .fa-arrow-up:before { .m-faContent(@fa-var-arrow-up, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="arrow-up" />;} .fa-arrow-down:before { .m-faContent(@fa-var-arrow-down, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="arrow-down" />;} .fa-bar-chart:before { .m-faContent(@fa-var-bar-chart, 1.15em); <xf:macro template="uix_icons.less" name="content" arg-icon="poll" />;} .fa-bars:before { .m-faContent(@fa-var-bars, 0.86em); <xf:macro template="uix_icons.less" name="content" arg-icon="menu" />;} .fa-caret-left:before { .m-faContent(@fa-var-caret-left, 0.36em); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-left" />;} .fa-caret-right:before { .m-faContent(@fa-var-caret-right, 0.36em); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-right" />;} .fa-clock-o:before { .m-faContent(@fa-var-clock-o, 0.86em); <xf:macro template="uix_icons.less" name="content" arg-icon="clock" />} .fa-cog:before { .m-faContent(@fa-var-cog, 0.86em); <xf:macro template="uix_icons.less" name="content" arg-icon="settings" />;} .fa-cogs:before { .m-faContent(@fa-var-cogs, 1.08em); <xf:macro template="uix_icons.less" name="content" arg-icon="settings" />;} .fa-comments:before { .m-faContent(@fa-var-comments, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="comment-multiple" />;} .fa-file-o:before { .m-faContent(@fa-var-file-o, 0.86em); <xf:macro template="uix_icons.less" name="content" arg-icon="file" />;} .fa-globe:before { .m-faContent(@fa-var-globe, 0.86em); <xf:macro template="uix_icons.less" name="content" arg-icon="earth" />;} .fa-home:before { .m-faContent(@fa-var-home, 0.93em); <xf:macro template="uix_icons.less" name="content" arg-icon="home" />;} .fa-key:before { .m-faContent(@fa-var-key, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="login" />;} .fa-paint-brush:before { .m-faContent(@fa-var-paint-brush, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="brush" />;} .fa-pencil:before { .m-faContent(@fa-var-pencil, 0.86em); <xf:macro template="uix_icons.less" name="content" arg-icon="edit" /> ;} .fa-rss:before { .m-faContent(@fa-var-rss, 0.79em); <xf:macro template="uix_icons.less" name="content" arg-icon="rss" />;} .fa-search:before { .m-faContent(@fa-var-search, 0.93em); <xf:macro template="uix_icons.less" name="content" arg-icon="search" />;} .fa-tags:before { .m-faContent(@fa-var-tags, 1.08em); <xf:macro template="uix_icons.less" name="content" arg-icon="tag-multiple" />;} .fa-th:before { .m-faContent(@fa-var-th, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="tag-multiple" />;} .fa-thumbs-up:before { .m-faContent(@fa-var-thumbs-up, 0.93em); <xf:macro template="uix_icons.less" name="content" arg-icon="like" />;} .fa-user:before { .m-faContent(@fa-var-user, 0.72em); <xf:macro template="uix_icons.less" name="content" arg-icon="user" />;} .fa-warning:before { .m-faContent(@fa-var-warning, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="warning" />;} }*/]]>

</template>


-<template title="core_filter.less" version_string="2.1.0 Beta 1" version_id="2010031" addon_id="XF" type="public">

<![CDATA[// ##################### FILTERING ##################### .filterBlock { padding: @xf-paddingMedium; font-size: @xf-fontSizeSmaller; float: right; .xf-contentBase(); .xf-blockBorder(); border-radius: @xf-blockBorderRadius; .m-clearFix(); .filterBlock-input { width: 150px; display: inline; font-size: @xf-fontSizeSmaller; &.filterBlock-input--small { width: 100px; } } select.filterBlock-input { width: auto; } } .quickFilter { position: relative; .input { width: 180px; font-size: @xf-fontSizeSmaller; } label { font-size: @xf-fontSizeSmaller; } input[type=checkbox] { .m-checkboxAligner(); } .js-filterClear { color: @controlColor; &:hover { color: @controlColor--hover; } &:before { .m-faBase(); .m-faContent(@fa-var-times); } } } .filterBar { .m-clearFix(); } .filterBar-filters { .m-listPlain(); display: inline; > li { display: inline; } } .filterBar-filterToggle { display: inline-block; text-decoration: none; color: inherit; padding: 1px 8px; border-radius: @xf-borderRadiusMedium; .m-transition(); &:after { .m-faBase(); font-size: 80%; .m-faContent(" @{fa-var-times}"); <xf:macro template="uix_icons.less" name="content" arg-icon="close" /> opacity: .5; .m-transition(opacity); } &:hover { text-decoration: none; &:after { opacity: 1; } } } .filterBar-filterToggle-label { opacity: .75; } .filterBar-menuTrigger { float: right; white-space: nowrap; border-radius: @xf-borderRadiusMedium; text-decoration: none; padding: 1px 5px; .xf-uix_buttonSmall(); &:after { .m-menuGadget(true); } } @media (max-width: @xf-responsiveMedium) { .filterBar-filterToggle-label { display: none; } }]]>

</template>


-<template title="core_formrow.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// ########################################### FORM ROWS ################################# @_form-labelShiftInput: @xf-input--padding + @xf-borderSize; // technically input border-top-width + padding-top @_form-labelButtonInput: 5px; // technically button border-top-width + padding-top, adjusted for text size differences @_form-elementSpacer: @xf-paddingMedium; .m-formRowBlockStyle() { display: block; > dt, > dd { width: auto; display: block; padding: ((@xf-formRowPaddingV) / 2) @xf-formRowPaddingHOuter @xf-formRowPaddingV; } > dt { background: none; border: none; text-align: left; padding-bottom: 0; .formRow-hint { display: inline; } } &.formRow--input, &.formRow--button { > dt { padding-top: ((@xf-formRowPaddingV) / 2); } } > dd { padding-top: ((@xf-formRowPaddingV) / 2); } > dd > .inputChoices:first-child { padding-top: 0; } } .formRow--button li:not(:last-child) {margin-right: 8px;} .formRow { display: table; table-layout: fixed; width: 100%; margin: 0; position: relative; > dt, > dd { display: table-cell; vertical-align: top; margin: 0; } > dt { border-right: @xf-borderSize solid transparent; .xf-formLabel(); width: @xf-formLabelWidth; padding: @xf-formRowPaddingV @xf-formRowPaddingHInner @xf-formRowPaddingV @xf-formRowPaddingHOuter; } > dd { width: (100% - @xf-formLabelWidth); padding: @xf-formRowPaddingV @xf-formRowPaddingHOuter @xf-formRowPaddingV @xf-formRowPaddingHInner; } &.formRow--input > dt { padding-top: (@xf-formRowPaddingV + @_form-labelShiftInput); } &.formRow--button > dt { padding-top: (@xf-formRowPaddingV + @_form-labelButtonInput); } &.formRow--inputLabelPair > dt { padding-top: (@xf-formRowPaddingV * 2); } &.formRow--valueToEdge > dd { padding-left: 0; padding-right: 0; } &.formRow--noValuePadding > dd { padding: 0; } &.formRow--limited { display: none !important; } &.formRow--fullWidth { .m-formRowBlockStyle(); & + .formRow, .formRow + &, & + * > .formRow:first-of-type, // allows formRows to be wrapped .formRow + * > &:first-of-type // in a single-depth grouping element { border-top: @xf-borderSize solid @xf-borderColorLight; } &.formRow--noLabel { > dt { display: none; } > dd { padding-top: @xf-formRowPaddingV; } } & + .formRow--mergePrev, & + * > .formRow:first-of-type.formRow--mergePrev, &.formRow--mergeNext + &, &.formRow--mergeNext + * > &:first-of-type { border-top: 0; > dt { padding-top: 0; } } &.formRow--noGutter { > dt, > dd { padding-left: 0; padding-right: 0; } } &.formRow--noPadding { > dt, > dd { padding: 0; } } &.formRow--noPadding + &, &.formRow--noPadding + * > &:first-of-type { > dt { padding-top: @xf-formRowPaddingV; } } } &.formRow--inputMultiLine > dd { > .input, > .inputGroup { margin-bottom: @_form-elementSpacer; &:last-child { margin-bottom: 0; } } } .formRow-label { .m-appendColon(); } &.formRow--noColon .formRow-label:after { content: ""; } .formRow-explain { margin: @_form-elementSpacer 0 0; .m-formElementExplain(); } &.formRow--explainOffset .formRow-explain { margin-top: (@_form-elementSpacer) * 2; } .formRow-hint { display: block; font-style: normal; .xf-formHint(); .m-textColoredLinks(); .formRow-hint-featured { display: block; //font-weight: @xf-fontWeightHeavy; color: @xf-textColorFeature; } } + .formInfoRow { border-top: @xf-borderSize solid @xf-borderColorLight; } @media (max-width: @xf-formResponsive) { .m-formRowBlockStyle(); } .menu & {.m-formRowBlockStyle();} } .formButtonGroup { display: flex; flex-wrap: wrap; margin-top: @xf-paddingLarge; margin-bottom: -5px; &.formButtonGroup--close { margin-top: 0; } } .formButtonGroup-primary { order: 2; margin-left: auto; margin-bottom: 5px; .formButtonGroup--simple & { margin-left: 0; } } .formButtonGroup-extra { order: 1; margin-bottom: 5px; } .formInfoRow { padding: @xf-formRowPaddingV @xf-formRowPaddingHOuter; &.formInfoRow--close { padding-top: ((@xf-formRowPaddingV) / 2); padding-bottom: ((@xf-formRowPaddingV) / 2); } &.formInfoRow--noPadding { padding: 0; } &.formInfoRow--confirm { text-align: center; strong { display: block; margin: .5em 0; font-size: @xf-fontSizeLarger; &:last-child { margin-bottom: 0; } } } + .formRow { border-top: @xf-borderSize solid @xf-borderColorLight; } &.u-hidden:not(.is-active) { + .formRow { border-top: none; } } > .blockMessage { &:first-child { margin-top: 0; } &:last-child { margin-bottom: 0; } } } .formSubmitRow { position: relative; > dt { display: none; } > dd { width: 100%; padding: 0; } &.formSubmitRow--sticky.is-sticky { .formSubmitRow-main { position: fixed; bottom: 0; z-index: @zIndex-2; } .formSubmitRow-bar { box-shadow: 0px -5px 15px fade(black, 15%); } } &.formSubmitRow--simple, &.formSubmitRow--standalone { > dt { visibility: hidden; } .formSubmitRow-controls { text-align: center; padding-left: 0; margin-left: 0; } } &.formSubmitRow--standalone { .formSubmitRow-bar { border: @xf-borderSize solid @xf-borderColor; border-radius: @block-borderRadius-inner; @media (max-width: @xf-responsiveEdgeSpacerRemoval) { border-radius: 0; border-left: none; border-right: none; } } &.is-sticky { .formSubmitRow-bar { border-bottom: 0; } } } .block-body--collapsible:not(.is-active) + &:not(.formSubmitRow--simple, .formSubmitRow--standalone) { > dt { visibility: hidden; } } } .formSubmitRow-main { position: relative; } .formSubmitRow-bar { position: absolute; top: 0; right: 0; bottom: 0; left: 0; .xf-formSubmitRow(); } .formSubmitRow-controls { position: relative; padding-left: @xf-formLabelWidth; padding-top: @xf-paddingMedium; padding-bottom: @xf-paddingMedium; margin-left: @xf-formRowPaddingHInner; margin-right: @xf-formRowPaddingHOuter; > .button:first-child:last-child { min-width: 120px; } } @media (max-width: @xf-formResponsive) { .formSubmitRow-controls { padding-left: 0; text-align: center; } } .formRowSep { margin: -1px @xf-formRowPaddingHOuter 0; border: none; border-top: @xf-borderSize solid @xf-borderColor; + .formRowSep, &:last-child { display: none; } .block-body > &:first-child { display: none; } } /* -- adds styling to fix forms in modals/dropdowns, such as login -- Added by Ian */ .menu .blocks .block:last-child {margin-bottom: (@xf-elementSpacer / 2);} .menu.menu--structural { .formSubmitRow { dt, dd {padding: 0;} .formSubmitRow-bar {display: none;} .formSubmitRow-controls { padding: 0; display: flex; .button {flex-grow: 1;} } } dl.formRow { padding: @xf-formRowPaddingV @xf-formRowPaddingH; padding-top: 0; &:first-child {padding-top: @xf-formRowPaddingV;} dd, dt {padding: 0;} } .uix_login__registerLink {padding: 0;} .formRow-label {padding-bottom: 5px; display: inline-block;} .blocks-textJoiner {margin: 0;} .menu-footer { border-bottom-left-radius: @xf-menuBorderRadius; border-bottom-right-radius: @xf-menuBorderRadius; } }]]>

</template>


-<template title="core_hscroller.less" version_string="2.1.0 Beta 3" version_id="2010033" addon_id="XF" type="public">

<![CDATA[// ##################################### HORIZONTAL SCROLLER ################### .hScroller { overflow-y: hidden; position: relative; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-overflow-scrolling: touch; &.hScroller--scrollHidden { .hScroller-action { opacity: 0; .m-transition(); } html:not(.has-touchevents) &:hover .hScroller-action { opacity: 1; } } } .hScroller-scroll { display: block; white-space: nowrap; word-wrap: normal; overflow-x: hidden; &.is-calculated { overflow-x: scroll; padding-bottom: 30px; margin-bottom: -30px; // pushes the scrollbar out of view } } .hScroller-action { position: absolute; top: 0; bottom: 0; width: 40px; padding: 0 5px; display: none; cursor: pointer; &.is-active { display: block; display: flex; align-items: center; } &:after { .m-faBase(); font-size: 120%; } &.hScroller-action--start { left: 0; justify-content: flex-start; text-align: left; &:after { .m-faContent(@fa-var-chevron-left, .63em, ltr); .m-faContent(@fa-var-chevron-right, .63em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-left" /> } } &.hScroller-action--end { right: 0; justify-content: flex-end; text-align: right; &:after { .m-faContent(@fa-var-chevron-right, .63em, ltr); .m-faContent(@fa-var-chevron-left, .63em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-right" /> } } } .scrollMeasure { position: absolute; top: -1000px; width: 100px; height: 100px; overflow: scroll; visibility: hidden; }]]>

</template>


-<template title="core_input.less" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[// ###################################### INPUTS ########################## @_input-numberWidth: 150px; @_input-numberNarrowWidth: 90px; @_input-textColor: xf-default(@xf-input--color, @xf-textColor); @_input-elementSpacer: @xf-paddingMedium; @_input-checkBoxSpacer: 1.5em; .m-inputReadOnly() { color: mix(xf-default(@xf-input--color, @xf-textColor), xf-default(@xf-inputDisabled--color, @xf-textColorMuted)); background: mix(xf-default(@xf-input--background-color, @xf-contentBg), xf-default(@xf-inputDisabled--background-color, @xf-paletteNeutral1)); } .input { .xf-input(); display: block; width: 100%; line-height: @xf-lineHeightDefault; text-align: left; // this will be flipped in RTL word-wrap: break-word; -webkit-appearance: none; -moz-appearance: none; appearance: none; .m-transition(); .m-placeholder({color: fade(@_input-textColor, 40%); }); &:focus, &.is-focused { outline: 0; .xf-inputFocus(); .m-placeholder({color: fade(@_input-textColor, 50%); }); } &[readonly], &.is-readonly { .m-inputReadOnly(); } &[disabled] { .xf-inputDisabled(); } &[type=number], &.input--number { text-align: right; max-width: @_input-numberWidth; &.input--numberNarrow { width: @_input-numberNarrowWidth; } } &.input--date { max-width: @_input-numberWidth; } textarea& { min-height: 0; max-height: 400px; max-height: 75vh; resize: vertical; padding-top: 8px; padding-bottom: 8px; &.input--fitHeight { resize: none; &.input--fitHeight--short { max-height: 200px; max-height: 35vh; } } &.input--code { overflow-x: auto; -ltr-rtl-text-align: left; // force blocks of code back to left align } &.input--maxHeight-300px { max-height: 300px; } .has-js &[rows="1"][data-single-line] { overflow: hidden; resize: none; } .has-js &[rows="1"][data-single-line] { overflow: hidden; resize: none; } } // this makes select inputs consistent across all browsers and OSes select&, &.input--select { padding-right: 1em !important; .m-selectGadgetColor(@_input-textColor); background-size: 1em !important; background-repeat: no-repeat !important; -ltr-background-position: 100% !important; white-space: nowrap; word-wrap: normal; -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; overflow-x: hidden; // iOS seems to require this to prevent overflow with long options... overflow-y: auto; // ...and Firefox seems to require this to prevent the above from breaking vertical scroll... &[disabled] { .m-selectGadgetColor(xf-default(@xf-inputDisabled--color, @xf-textColor)); } &[size], &[multiple] { background-image: none !important; padding-right: xf-default(@xf-input--padding, 5px) !important; height: auto; } } &.input--autoSize { width: auto; } &.input--inline { display: inline; width: auto; } &.input--code { font-family: @xf-fontFamilyCode; direction: ltr; //white-space: nowrap; word-wrap: normal; } &.input--title { font-size: @xf-fontSizeLargest; } &.input--avatarSizeS { min-height: @avatar-s; } &.input--passwordHideShow { ::-ms-reveal, ::-ms-clear { display: none !important; } } .m-inputZoomFix(); .fa--inputOverlay + & { padding-left: 2em; } } @controlColor: @xf-textColorMuted; @controlColor--hover: xf-intensify(@controlColor, 25%); .iconicIcon(@setPosition: true) { display: inline-block; min-width: 1em; height: .9em;// prevents some zoom-related issues -ltr-rtl-text-align: left; &:before, &:after { .m-faBase('Pro'; inherit); //.m-transition(opacity, color; @xf-animationSpeed, @xf-animationSpeed / 2); position: absolute; & when (@setPosition = true) { left: 0; top: 0; } opacity: 1; } } .iconic { display: inline-block; position: relative; > input { .m-visuallyHidden(); position: absolute; left: 0; width: auto; height: auto; + i { .iconicIcon(); } & + i:after { opacity: 0; } &:disabled + i:before { opacity: .3; } &:disabled:checked + i:after { opacity: .3; + i:before { .m-faContent(@fa-var-square-o, .93em); <xf:macro name="content" template="uix_icons.less" arg-icon="checkbox" /> } &:checked + i:before { .m-faContent(@fa-var-check-square-o, .93em); <xf:macro name="content" template="uix_icons.less" arg-icon="checkbox-checked" /> } } &:checked { & + i:before { opacity: 0; } + i:before { .m-faContent(@fa-var-circle-o, .86em); <xf:macro name="content" template="uix_icons.less" arg-icon="radio" /> } &:checked + i:before { .m-faContent(@fa-var-check-circle, .86em); <xf:macro name="content" template="uix_icons.less" arg-icon="radio-selected" /> } & + i:after { opacity: 1; } } &:focus + i { &:before, &:after { outline: Highlight solid 2px; -moz-outline-radius: 5px; @media (-webkit-min-device-pixel-ratio: 0) { outline: -webkit-focus-ring-color auto 5px; } } } } // handler for labelled inputs - indent the text away from the control .iconic-label:before { content: ''; display: inline-block; width: @_input-checkBoxSpacer - 1em; // min-width of input > i } &.iconic--hideShow { min-width: 56px; cursor: pointer; > input[type=checkbox] + i { &:before { .m-faContent(@fa-var-eye); <xf:macro template="uix_icons.less" name="content" arg-icon="toggle-off" /> } &:after { .m-faContent(@fa-var-eye-slash); <xf:macro template="uix_icons.less" name="content" arg-icon="toggle-on" /> } } .iconic-label { font-size: @xf-fontSizeSmall; vertical-align: text-top; } } &.iconic--hiddenLabel .iconic-label:before { display: none; } > input[type=checkbox] + i { &:before { .m-faContent(@fa-var-square, .875em); } &:after { .m-faContent(@fa-var-check-square, .875em); } } > input[type=radio] + i { &:before { .m-faContent(@fa-var-circle, 1em); } &:after { .m-faContent(@fa-var-check-circle, 1em); } } } // Fix position for inputChoices to allow nested indenting .inputChoices > .inputChoices-choice { position: relative; .iconic { position: static; > input + i { position: absolute; left: 0; } &.iconic--noLabel { display: inline; } } // undo the normal indenting of text from checkbox .iconic-label:before { display: none; } } // Basic control colours for common scenarios .formRow, .inputGroup, .inputChoices, .block-footer, .dataList-cell, .message-cell--extra { .iconic, &.dataList-cell--fa > a { > i, svg { color: @controlColor; fill: currentColor; } &:hover > i, &:hover svg { color: @controlColor--hover; fill: currentColor; } } } // ############################# END ICONIC CONTROLS ###################### .u-inputSpacer { margin-top: @_input-elementSpacer; } .inputGroup { display: flex; align-items: stretch; max-width: 100%; .inputGroup-text { flex-grow: 0; display: flex; align-items: center; white-space: nowrap; vertical-align: middle; padding: 0 @xf-paddingMedium; &:first-child { padding-left: 0; } &:last-child { padding-right: 0; } } .inputGroup-splitter { display: inline-block; width: @_form-elementSpacer; flex-shrink: 0; } .input { flex-shrink: 1; min-width: 0; // firefox bug - https://bugzilla.mozilla.org/show_bug.cgi?id=1021913 } .button { flex-shrink: 0; } &:not(.inputGroup--joined) { .input, .button { + .input, + .button { margin-left: @_form-elementSpacer; } } } .inputGroup-label { flex-shrink: 1; width: 100%; padding: 0 0 @xf-paddingMedium; .m-appendColon(); } @media (max-width: @xf-formResponsive) { .input:not(.input--autoSize):not(.input--numberNarrow) { width: 100%; } } .input:not(.input--autoSize):not(.input--numberNarrow) { .menu & {width: 100%;} } &.inputGroup--inline { display: inline-flex; } &.inputGroup--auto { .input { width: auto; } } &.inputGroup--joined { .input { border-radius: 0; &:first-child { border-top-left-radius: @xf-borderRadiusMedium; border-bottom-left-radius: @xf-borderRadiusMedium; border-right: none; } &:last-child { border-top-right-radius: @xf-borderRadiusMedium; border-bottom-right-radius: @xf-borderRadiusMedium; border-left: none; } } .inputGroup-text { .xf-input(border); .xf-inputFocus(background); text-align: center; padding: @xf-paddingSmall @xf-paddingMedium; &.inputGroup-text--disabled, &.is-disabled, &[disabled] { .xf-inputDisabled(); a { text-decoration: none; } } &:first-child { border-right: 0; border-top-left-radius: @xf-borderRadiusMedium; border-bottom-left-radius: @xf-borderRadiusMedium; } &:last-child { border-left: 0; border-top-right-radius: @xf-borderRadiusMedium; border-bottom-right-radius: @xf-borderRadiusMedium; } } .input + .inputGroup-text, .input + .input, .inputGroup-text + .input { border-left: @xf-borderSize solid @xf-borderColorLight; } .inputGroup-text + .inputGroup-text, .inputGroup-text + select.input { border-left: 0; } } } .inputGroup-container > .inputGroup { margin-top: @xf-paddingMedium; &:first-child { margin-top: 0; } } .inputNumber { .input--number { -moz-appearance: textfield !important; &::-webkit-inner-spin-button, &::-webkit-outer-spin-button { margin: 0 !important; -webkit-appearance: none !important; } @media (max-width: @xf-formResponsive) { min-width: auto; max-width: 120px; } .menu & {width: 120px;} } } .inputNumber-button { position: relative; .m-faBase(); color: @controlColor; font-size: 1.0em; font-style: normal !important; line-height: .75em; vertical-align: -15%; width: 45px; justify-content: center; text-align: center; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; &.inputNumber-button--smaller { vertical-align: 0; width: 35px; } .menu & { vertical-align: 0; width: 25px; } &--up::before { .m-faContent(@fa-var-plus, .88em); <xf:macro template="uix_icons.less" name="content" arg-icon="plus" /> } &--down::before { .m-faContent(@fa-var-minus, .8em); <xf:macro template="uix_icons.less" name="content" arg-icon="minus" /> } .inputGroup.inputGroup--joined & { &:hover, &:active, &:focus { background-color: saturate(xf-intensify(@xf-paletteColor1, 4%), 12%); color: @controlColor--hover; } } .input.input--number[readonly] ~ & { .m-inputReadOnly(); } .input.input--number[disabled] ~ & { cursor: default; .xf-inputDisabled(); } } .inputDate { .inputDate-icon { position: relative; .m-faBase(); color: @xf-linkColor; font-size: 1.0em; font-style: normal !important; line-height: .75em; vertical-align: -15%; cursor: pointer; width: 45px; justify-content: center; text-align: center; -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @media (max-width: @xf-formResponsive) { vertical-align: 0; width: 25px; } .menu & { vertical-align: 0; width: 25px; } &::before { .m-faContent(@fa-var-calendar, .88em); }; } } .inputList { .m-listPlain(); > li { margin-top: @xf-paddingMedium; &:first-child { margin-top: 0; } } } .inputPair { .m-clearFix(); > .input, .inputPair-input { float: right; width: 49%; // fallback width: ~"calc(50% - 2px)"; &:first-child { float: left; } } } .inputPair-container > .inputPair { margin-top: @xf-paddingMedium; &:first-child { margin-top: 0; } } .inputLabelPair { .m-clearFix(); margin: @xf-paddingMedium 0; padding: 0; > dt, > dd { float: left; margin: 0; padding: 0; } > dt { width: 65%; padding-right: @xf-paddingMedium; padding-top: .6em; > label { .m-appendColon(); } } > dd { width: 35%; text-align: right; .input { width: 100%; max-width: none; } } @media (max-width: @xf-responsiveNarrow) { > dt, > dd { width: 50%; } } } .inputChoices { list-style: none; padding: 0; margin: 0; > .inputChoices-choice { margin-bottom: @_input-elementSpacer; padding-left: @_input-checkBoxSpacer; &:last-child { margin-bottom: 0; } > .inputChoices, .inputChoices-spacer { margin-top: @_input-elementSpacer; } } &.inputChoices--noChoice > .inputChoices-choice, .inputChoices-plainChoice { padding-left: 0; } &.inputChoices--inline > .inputChoices-choice { display: inline-block; margin-right: @_input-elementSpacer; margin-bottom: 0; &:last-child { margin-right: 0; } } .inputChoices-label { padding-left: 0; font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; } + .inputChoices:not(.inputChoices--inline) { margin-top: @_input-elementSpacer; } } .inputChoices-group + .inputChoices-group, .inputChoices-choice + .inputChoices-group { margin-top: (@xf-paddingMedium) * 2; } .inputChoices-spacer + .inputChoices { margin-top: @_input-elementSpacer; } .inputChoices-heading { color: @xf-textColorMuted; padding-bottom: (@xf-paddingMedium) / 2; border-bottom: @xf-borderSize solid @xf-borderColorFaint; margin-bottom: @xf-paddingMedium; position: relative; &.inputChoices-heading--checkAll { .iconic { position: static; & > input + i { position: absolute; right: 0; left: auto; width: auto; } } } } .inputChoices-explain { .m-formElementExplain(); &.inputChoices-explain--after { margin-top: @_input-elementSpacer; } } .inputChoices-dependencies { list-style: none; padding: 0; margin: 0; > li { margin-top: @_input-elementSpacer; > label { display: block; padding: @xf-paddingSmall 0; &.iconic--labelled > input + i { margin-left: 0; } } } } @media (max-width: @xf-responsiveNarrow) { .input.input--title { font-size: @xf-fontSizeLarge; } }]]>

</template>


-<template title="core_labels.less" version_string="2.0.10" version_id="2001070" addon_id="XF" type="public">

<![CDATA[.label { display: inline-block; padding: 1px .35em; border: 1px solid transparent; border-radius: @xf-borderRadiusMedium; font-size: 80%; line-height: ((@xf-lineHeightDefault) * .9); text-decoration: none; &:hover, a:hover & { text-decoration: none; } &.label--fullSize { font-size: 100%; } &.label--small { font-size: @xf-fontSizeSmall; } &.label--smallest { font-size: @xf-fontSizeSmallest; } // Label variations &.label--hidden { // this has to essentially undo all the adjustments made by .label padding: inherit; border: none; font-size: inherit; line-height: inherit; text-decoration: inherit; &:hover { text-decoration: underline; } } &.label--subtle { .m-labelVariation(@xf-textColorMuted, @xf-contentAltBg); } &.label--primary { .m-labelVariation(white, @xf-uix_prefixPrimary); } &.label--accent { .m-labelVariation(white, @xf-uix_prefixAccent); } &.label--red { .m-labelVariation(white, @xf-uix_prefixRed); } &.label--green { .m-labelVariation(white, @xf-uix_prefixGreen); } &.label--olive { .m-labelVariation(white, @xf-uix_prefixOlive); } &.label--lightGreen { .m-labelVariation(white, @xf-uix_prefixLightGreen); } &.label--blue { .m-labelVariation(black, @xf-uix_prefixBlue); } &.label--royalBlue { .m-labelVariation(white, @xf-uix_prefixRoyalBlue); } &.label--skyBlue { .m-labelVariation(white, @xf-uix_prefixRedSkyBlue); } &.label--gray { .m-labelVariation(white, @xf-uix_prefixGray); } &.label--silver { .m-labelVariation(black, @xf-uix_prefixSilver); } &.label--yellow { .m-labelVariation(black, @xf-uix_prefixYellow); } &.label--orange { .m-labelVariation(black, @xf-uix_prefixOrange); } &.label--error { .m-labelVariation(#c84448, #fde9e9, #c84448); } } .label-append { display: inline-block; } .labelLink, .labelLink:hover { text-decoration: none; }]]>

</template>


-<template title="core_list.less" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[// ##################################### LISTS ################## .pairs { padding: 0; margin: 0; overflow: hidden; line-height: 1.7; &.pairs--plainLabel { > dt { color: inherit; } } &.pairs--spaced + .pairs { margin-top: @xf-paddingMedium; } &.pairs--noColon { > dt { &:after { content: ""; } } } &.pairs--rightLabel { > dt { text-align: right; } } > dt { padding: 0; margin: 0; color: @xf-textColorMuted; .m-appendColon(); } > dd { padding: 0; margin: 0; } &.pairs--inline { display: inline; > dt, > dd { display: inline; } } &.pairs--columns { display: table; table-layout: fixed; width: 100%; > dt, > dd { display: table-cell; } > dt { width: 50%; padding-right: @xf-paddingMedium; } &.pairs--fixedSmall > dt { width: 200px; } &.pairs--fluidSmall > dt { width: 25%; } &.pairs--fluidHuge > dt { width: 70%; } @media (max-width: 500px) { display: block; > dt, > dd { display: block; } &.pairs > dt // the .pairs repetition is to increase specificity to override all fixed/fluid options { width: auto; padding-right: 0; } & + .pairs { margin-top: @xf-paddingMedium; } } } &.pairs--justified { // .m-clearFix(); display: flex; justify-content: space-between; > dt { float: left; max-width: 100%; margin-right: @xf-paddingMedium; flex-shrink: 0; } > dd { float: right; text-align: right; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } &.pairs--rows { display: inline-table; margin-right: @xf-paddingMedium; &.pairs--rows--centered { > dt, > dd { text-align: center; } } &:last-of-type { margin-right: 0; } > dt { display: table-row; font-size: 80%; &:after { content: ''; // display: none; } } > dd { display: table-row; } } } .pairWrapper { &.pairWrapper--spaced { .pairs { margin-top: @xf-paddingMedium; &:first-child { margin-top: 0; } } } } .pairJustifier { display: flex; flex-wrap: wrap; justify-content: space-between; margin-right: -5px; margin-bottom: -5px; .pairs.pairs--rows { margin-right: 5px; margin-bottom: 5px; } } .listPlain { .m-listPlain(); } .listInline { .m-listPlain(); &.listInline--selfInline { display: inline; } > li { display: inline; margin: 0; padding: 0; } &.listInline--block { > li { display: inline-block; } } &.listInline--comma { > li:after { content: "{$xf.language.comma_separator}"; } > li:last-child:after { content: ""; display: none; } } &.listInline--bullet { > li:before { content: "\00B7\20"; } > li:first-child:before { content: ""; display: none; } } } .listHeap { .m-listPlain(); margin: -4px; > li { margin: 0; padding: 0; display: inline-block; margin: 4px; &:last-child { margin-right: 0; } } } .listColumns { .m-columns(2, @xf-responsiveNarrow); > li { .m-columnBreakAvoid(); position: relative; // workaround Chrome quirk with hover triggers in visitor menu } &.listColumns--spaced { > li { margin-bottom: .5em; } } &.listColumns--narrow { .m-columns(2); } &.listColumns--together { -moz-column-gap: 0; -webkit-column-gap: 0; column-gap: 0; } &.listColumns--collapsed { display: inline-block; } &.listColumns--3 { .m-columns(3); @media (max-width: @xf-responsiveWide) { .m-columns(2, @xf-responsiveNarrow); } } &.listColumns--4 { .m-columns(4); @media (max-width: @xf-responsiveWide) { .m-columns(2, @xf-responsiveNarrow); } } } .textHighlight { font-style: normal; font-weight: @xf-fontWeightHeavy; &.textHighlight--attention { color: @xf-textColorAttention; } }]]>

</template>


-<template title="core_menu.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[// ###################################### MENUS ###################### @_menu-arrowSize: 8px; @_menu-edgePadding: @xf-pageEdgeSpacer; @_menu-closePaddingH: @xf-paddingLarge; @_menu-paddingH: 12px; @_menu-paddingV: 12px; .menuTrigger { cursor: pointer; &:after { .m-menuGadget(true); } } .menuOutsideClicker { position: fixed; display: none; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; // above non set stuff but below anything intentionally set &.is-active { display: block; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } } .menu { .m-transitionFade(); @media (max-width: @xf-responsiveNarrow) { width: 90% !important; max-width: 90% !important; left: 0; right: 0; margin-left: auto; margin-right: auto; } position: absolute; z-index: @zIndex-2; margin: @_menu-arrowSize 0 0; min-width: 240px; max-width: 320px; border-radius: @xf-menuBorderRadius; // .m-dropShadow(0, 5px, 10px, 0, .35); box-shadow: @xf-uix_elevation2; .xf-contentBase(); .block-container { box-shadow: none; // border-radius: 0; margin: 0; border: none; padding: 0; } &.menu--structural { margin-top: 0; // when menus nudge up against structure, the joined corner should not be radiused &.menu--left { // border-top-left-radius: 0; } &.menu--right { // border-top-right-radius: 0; } } &.menu--superWide { width: 75%; max-width: ~"calc(100% - @{xf-pageEdgeSpacer})"; } &.menu--veryWide { width: 500px; max-width: ~"calc(100% - @{xf-pageEdgeSpacer})"; } &.menu--wide { width: 350px; max-width: ~"calc(100% - @{xf-pageEdgeSpacer})"; } &.menu--medium { width: 300px; max-width: ~"calc(100% - @{xf-pageEdgeSpacer})"; } &.menu--potentialFixed { z-index: @zIndex-4; } .menu-minorHeader--small { padding: @_menu-paddingV @_menu-paddingH; font-size: calc(@xf-menu--font-size + 1); } } .menu-arrow { position: absolute; top: 0; width: 0; height: 0; border: 0 solid transparent; display: none; top: -@_menu-arrowSize; -ltr-rtl-left: 50%; -ltr-rtl-margin-left: -@_menu-arrowSize; .m-triangleUp(@xf-menuFeatureBorderColor, @_menu-arrowSize); .menu--structural & { top: -@_menu-arrowSize; } .menu--up & { display: none; } } .menu-content { margin: 0; padding: 0; list-style: none; text-align: left; .xf-menu(); border-radius: @xf-menuBorderRadius; // border-top: @xf-borderSizeFeature solid @xf-menuFeatureBorderColor; // when menus nudge up against structure, the joined corner should not be radiused .menu--structural.menu--left & { // border-top-left-radius: 0; } .menu--structural.menu--right & { // border-top-right-radius: 0; } // potentially fixed menus .menu--potentialFixed & { overflow: auto; max-height: 450px; max-height: 80vh; } > :last-child { border-bottom-left-radius: @xf-menuBorderRadius; border-bottom-right-radius: @xf-menuBorderRadius; } } .menu--pageJump { width: auto; min-width: 0; } .menu-header { padding: @_menu-paddingH; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-menuHeader(); .m-clearFix(); .m-hiddenLinks(); } .menu-tabHeader { padding: 0; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-menuTabHeader(); .m-tabsTogether(xf-default(@xf-menuTabHeader--font-size, @xf-fontSizeNormal)); .tabs-tab { padding: @xf-blockPaddingV @_menu-paddingH max(0px, @xf-blockPaddingV - @xf-borderSizeFeature); border-bottom: @xf-borderSizeFeature solid transparent; &:hover { color: @xf-blockMinorTabHeaderSelected--color; } &.is-active { .xf-menuTabHeaderSelected(); } } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-menuTabHeader--background-color, transparent), xf-default(@xf-menuTabHeader--color, ~""), xf-default(@xf-blockMinorTabHeaderSelected--color, ~"") ); } } .menu-scroller { overflow: auto; max-height: 300px; max-height: 60vh; -webkit-overflow-scrolling: touch; .menu-row + & { border-top: @xf-borderSize solid @xf-borderColorLight; } } .menu-row { margin: 0; padding: @_menu-paddingH; .m-clearFix(); // causing issues when menu-row is not the first item // &:not(:first-of-type):not(.menu-row--separated) {padding-top: 0;} &.menu-row--alt { .xf-contentAltBase(); } &.menu-row--highlighted { .xf-contentHighlightBase(); } &.menu-row--close { padding-left: @_menu-closePaddingH; padding-right: @_menu-closePaddingH; } &.menu-row--separated { + .menu-row { border-top: @xf-borderSize solid @xf-borderColorLight; } } &.menu-row--clickable:hover { background: @xf-contentHighlightBg; } &:empty { padding: 0; } } .menu-linkRow { display: block; padding: @_menu-paddingV @_menu-paddingH; // text-indent: @_menu-paddingH; border-left: @xf-borderSizeFeature solid transparent; .xf-menuLinkRow(); &.menu-linkRow--alt { .xf-contentAltBase(); } &.is-selected, &:hover, &:focus { .xf-menuLinkRowSelected(); // border-left-color: fade(@xf-borderColorFeature, 50%); &:focus { outline: 0; } &.is-selected { border-left-color: @xf-borderColorFeature; } } i[aria-hidden=true] { font-size: @xf-fontSizeSmall; display: inline-block; width: 23px; // about 1.75em at this font size &:after { .m-faBase(); color: @xf-textColorMuted; left: @xf-blockPaddingH; } & ~ .menu-linkRow-hint { padding-left: 23px; } } &:hover i[aria-hidden=true]:after { color: @xf-linkHoverColor; } } .menu-linkRow-hint { font-style: inherit; font-size: @xf-fontSizeSmallest; color: @xf-textColorMuted; display: block; } .menu-separator { margin: 0 (@_menu-paddingH) / 2; padding: 0; border: none; border-top: @xf-borderSize solid @xf-borderColorLight; &.menu-separator--hard { margin: 0; } & + .menu-separator, &:last-child { display: none; } } .menu-footer { padding: @_menu-paddingV @_menu-paddingH; .xf-menuFooter(); .m-clearFix(); &.menu-footer--close { padding-left: @_menu-closePaddingH; padding-right: @_menu-closePaddingH; } &:not(.menu-footer--split) { .menu-footer-counter { float: left; } .menu-footer-controls { float: right; .button {.xf-uix_buttonSmall();} } } &.menu-footer--split { display: flex; align-items: center; .menu-footer-main, .menu-footer-counter { flex-grow: 1; } .menu-footer-select:not(:last-child) { margin: 0 1em; } .menu-footer-opposite, .menu-footer-controls { margin-left: auto; } } }]]>

</template>


-<template title="core_offcanvas.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[// ################################## OFF CANVAS MENU ######################### @_offCanvas-animationLength: @xf-animationSpeed; .offCanvasMenu { display: none; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: @zIndex-5; .m-transition(none; @_offCanvas-animationLength); // needed to keep the children displayed through animation .m-transform(scale(1)); // forces instant repaint in iOS // every tap on iOS causes a brief highlight, disable it for off canvas menu // then restore it for some tappable elements to retain it -webkit-tap-highlight-color: rgba(0, 0, 0, 0); pointer-events: none; > * {pointer-events: auto;} a { -webkit-tap-highlight-color: initial; } &.is-transitioning { display: block; } &.is-active { display: block; } .offCanvasMenu-hidden { display: none; } .offCanvasMenu-shown { display: block; } .offCanvasMenu-closer { float: right; cursor: pointer; text-decoration: none; -webkit-tap-highlight-color: initial; padding: @xf-paddingLarge; margin: -@xf-paddingLarge; &:hover { text-decoration: none; } &:after { .m-faBase(); .m-faContent(@fa-var-times, .79em); <xf:macro template="uix_icons.less" name="content" arg-icon="close" /> } } .block-container, .blockMessage { margin-left: 0; margin-right: 0; border-radius: 0; border-left: none; border-right: none; } } .offCanvasMenu-shown { display: none; } .offCanvasMenu-backdrop { position: absolute; top: 0; bottom: 0; left: 0; right: 0; background: rgba(0, 0, 0, .25); opacity: 0; .m-transition(all; @_offCanvas-animationLength; ease-in-out); .is-active & { opacity: 1; } } .offCanvasMenu-content { position: relative; width: 280px; max-width: 85%; height: 100%; padding-bottom: 44px; overflow: auto; .m-transition(all; @_offCanvas-animationLength; ease-in-out); -webkit-overflow-scrolling: touch; .xf-uix_canvas(); & when(@ltr) { .m-dropShadow(2px, 0, 5px, 0, .25); .m-transform(translateX(-280px)); } & when(@rtl) { .m-dropShadow(-2px, 0, 5px, 0, .25); .m-transform(translateX(280px)); } .is-active & { .m-transform(translateX(0)); } .p-nav-content { margin-bottom: 96px; } } .offCanvasMenu-header { padding: @xf-paddingLarge; margin: 0; font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; .m-clearFix(); .m-hiddenLinks(); &.offCanvasMenu-header--separated { margin-bottom: @xf-paddingLarge; } } .offCanvasMenu-row { padding: @xf-paddingLarge; } .offCanvasMenu-separator { padding: 0; margin: 0; border: none; border-top: 1px solid transparent; } .offCanvasMenu-link { display: block; padding: @xf-paddingLarge; font-size: @xf-fontSizeLarge; text-decoration: inherit; &:hover { text-decoration: inherit; } &.offCanvasMenu-link--splitToggle { position: relative; text-decoration: inherit; &:before { content: ''; position: absolute; left: 0; top: (@xf-paddingLarge - 4px); bottom: (@xf-paddingLarge - 4px); width: 0; border-left: 1px solid currentColor; } &:after { .m-faBase(); .m-faContent(@fa-var-chevron-down, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-down" /> } &.is-active:after { .m-faContent(@fa-var-chevron-up, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="chevron-up" /> } } } .offCanvasMenu-linkHolder { display: flex; &.is-selected { a { color: inherit; } .offCanvasMenu-link:first-child { padding-left: @xf-paddingLarge; } } .offCanvasMenu-link { flex-grow: 1; &.offCanvasMenu-link--splitToggle { flex-grow: 0; } &:hover { background: none; } } } .offCanvasMenu-list { .m-listPlain(); > li { border-top: @xf-borderSize solid transparent; } &:first-child > li:first-child { border-top: none; } } .offCanvasMenu-subList { .m-listPlain(); .m-transitionFadeDown(); padding-bottom: @xf-paddingLargest; .offCanvasMenu-link { padding-left: @xf-paddingLarge; padding-top: @xf-paddingMedium; padding-bottom: @xf-paddingMedium; font-size: @xf-fontSizeSmall; } } .offCanvasMenu--blocks { .offCanvasMenu-content { // .xf-pageBackground(); // color: @xf-textColor; } .offCanvasMenu-header { color: @xf-textColorEmphasized; background: @xf-contentHighlightBg; border-bottom: @xf-borderSize solid @xf-borderColorHeavy; } .offCanvasMenu-separator { border-top-color: @xf-borderColor; } .offCanvasMenu-list > li { border-top-color: @xf-borderColor; } } .offCanvasMenu--nav { .offCanvasMenu-content { // .xf-publicNav(); font-size: @xf-fontSizeSmall; a { color: inherit; } } .offCanvasMenu-header { background: @xf-publicHeaderAdjustColor; border-bottom: @xf-borderSize solid fadein(@xf-publicHeaderAdjustColor, 10%); .xf-uix_canvasHeader(); } .offCanvasMenu-list { border-bottom: @xf-borderSize solid fadein(@xf-publicHeaderAdjustColor, 10%); a { .xf-uix_canvasNavItem(); &:hover {.xf-uix_canvasNavItemHoverColor();} } } .offCanvasMenu-separator { border-top-color: fadein(@xf-publicHeaderAdjustColor, 10%); } .offCanvasMenu-link.offCanvasMenu-link--splitToggle:before { border-left-color: fadein(@xf-publicHeaderAdjustColor, 1%); } .offCanvasMenu-linkHolder { text-decoration: none; &:hover { // background: fadeout(@xf-publicHeaderAdjustColor, 6%); } &.is-selected { // .xf-publicNavSelected(no-border, no-border-radius); a, .offCanvasMenu-link {.xf-uix_canvasNavItemActive();} .offCanvasMenu-link.offCanvasMenu-link--splitToggle:before { // border-left-color: fade(xf-default(@xf-publicNavSelected--color, transparent), 20%); } } } .offCanvasMenu-subList { background: @xf-publicHeaderAdjustColor; a { .xf-uix_canvasNavSubItem(); &:hover {.xf-uix_canvasNavItemHoverColor();} } .offCanvasMenu-link:hover { text-decoration: none; // background: @xf-publicHeaderAdjustColor; } } .offCanvasMenu-list > li { border-top-color: @xf-publicHeaderAdjustColor; } }]]>

</template>


-<template title="core_overlay.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// #################################### OVERLAYS ################################ .overlay-container { display: none; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: @zIndex-9; background: @xf-overlayMaskColor; -webkit-overflow-scrolling: touch; opacity: 0; .m-transition(opacity); @media (max-width: @xf-responsiveNarrow) { transition: transform ease-in .25s; transform: translatey(100%); display: block; opacity: 1; .overlay-title { position: sticky; top: 0; } } &.is-transitioning { display: block; } &.is-active { display: block; opacity: 1; @media (max-width: @xf-responsiveNarrow) { transform: translatey(0); } } } .overlay { position: relative; margin: 40px auto 10px; margin-top: @xf-overlayTopMargin; width: 100%; max-width: 800px; background: @xf-contentBg; color: @xf-textColor; .xf-blockBorder(); border-radius: @xf-blockBorderRadius; .m-dropShadow(0, 5px, 15px, 0, .5); outline: none; > .overlay-title:first-child, .overlay-firstChild { border-top-left-radius: @xf-blockBorderRadius; border-top-right-radius: @xf-blockBorderRadius; } > .overlay-content > *:last-child, .overlay-lastChild { border-bottom-left-radius: @xf-blockBorderRadius; border-bottom-right-radius: @xf-blockBorderRadius; } .block-container {box-shadow: none;} } @media (max-width: @xf-responsiveWide) { .overlay { max-width: ~"calc(100% - 20px)"; max-width: ~"calc(100% - env(safe-area-inset-left) - env(safe-area-inset-right))"; } } @media (max-width: @xf-responsiveNarrow) { .overlay { max-width: 100%; margin: 0; height: 100vh; border-radius: 0; overflow-y: scroll; .overlay-title {z-index: 1;} .formSubmitRow--sticky { position: sticky; bottom: 0; } } } .overlay-title { .m-clearFix(); display: none; margin: 0; font-weight: @xf-fontWeightNormal; .xf-overlayHeader(); .overlay & { display: block; } } .overlay-titleCloser { float: right; cursor: pointer; margin-left: 5px; text-decoration: none; // opacity: .5; .m-transition(); &:after { .m-faBase(); .m-faContent(@fa-var-times); <xf:macro template="uix_icons.less" name="content" arg-icon="close" /> } &:hover { text-decoration: none; opacity: 1; } } .overlay-content { .m-clearFix(); } // when displaying a modal, prevent scrolling on the main content but allow it on the overlay body.is-modalOpen { overflow: hidden !important; .overlay-container, .offCanvasMenu { overflow-y: scroll !important; } } @media (max-width: @xf-responsiveNarrow) { .overlay-title { font-size: @xf-fontSizeLarger; } } // ############################### OVERLAY/BLOCK NESTING ############################## .block-container > .tabPanes > li, .block-container > .block-body, .block-container > .block-body > .block-row, .overlay-content { > .blocks > .block > .block-container, > .block > .block-container, > .blockMessage { margin-left: 0; margin-right: 0; border-radius: @xf-blockBorderRadius; // restore the radius that might be removed for some viewports as we're within the overlay border-left: none; border-right: none; } > .blocks > .block:first-child, > .block:first-child, > .blockMessage:first-child { margin-top: 0; .block-outer:not(.block-outer--after) { border-bottom: @xf-borderSize solid @xf-borderColorLight; padding: @xf-blockPaddingV; } } > .blocks > .block:last-child, > .block:last-child, > .blockMessage:last-child { margin-bottom: 0; .block-outer.block-outer--after { border-top: @xf-borderSize solid @xf-borderColorLight; padding: @xf-blockPaddingV; } } > .blocks > .block:first-child > .block-container, > .block:first-child > .block-container, > .blockMessage:first-child { border-top: none; } > .blocks > .block:last-child > .block-container, > .block:last-child > .block-container, > .blockMessage:last-child { border-bottom: none; } > .block:not(:first-child) > .block-container, > .blockMessage:not(:first-child) { .m-borderTopRadius(0); } > .blocks > .block:not(:last-child) > .block-container, > .block:not(:last-child) > .block-container, > .blockMessage:not(:last-child) { .m-borderBottomRadius(0); } } .overlay { transition: cubic-bezier(0.4, 0, 0.2, 1) 0.26s top; top: 20px; position: relative; .is-active & { top: 0px; } } .overlay-content { > .blocks > .block > .block-container, > .block > .block-container, > .blockMessage { .m-borderTopRadius(0); } > .blocks > .block > .block-container, > .block > .block-container { > :first-child { .m-borderTopRadius(0); } > .block-body:first-child > .formRow:first-child { > dt { border-top-left-radius: 0; } > dd { border-top-right-radius: 0; } } > .dataList:first-child { tbody:first-child .dataList-row:first-child, thead:first-child .dataList-row:first-child { > .dataList-cell:first-child { border-top-left-radius: 0; } > .dataList-cell:last-child { border-top-right-radius: 0; } } } } > .block:last-child > .block-container > .formSubmitRow:not(.is-sticky):last-child .formSubmitRow-bar { border-bottom-left-radius: @block-borderRadius-inner; border-bottom-right-radius: @block-borderRadius-inner; } }]]>

</template>


-<template title="core_pagenav.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[// ####################################### PAGE NAVIGATION ######################## @_page-paddingV: xf-default(@xf-buttonBase--padding-top, 6px); @_page-paddingH: 8px; @_page-paddingHSimple: 10px; .pageNavWrapper {} .pageNav {display: flex;} .pageNav-jump--next {margin-left: 6px;} .pageNav-jump--prev {margin-right: 6px;} .m-pageNavElCore() { background: @xf-contentBg; color: @xf-textColorMuted; .xf-blockBorder(); // font-size: @xf-fontSizeSmall; border-radius: 0; border: 1px solid @xf-borderColor; white-space: nowrap; height: 24px; line-height: 24px; &:hover, &:active { // background: xf-intensify(@xf-contentHighlightBg, 3%); text-decoration: none; color: @xf-textColor; } } .pageNav-jump { display: inline-block; .m-pageNavElCore(); // border-radius: @xf-borderRadiusSmall; padding: @_page-paddingV @_page-paddingH; height: 26px; line-height: 26px; &.pageNav-jump--prev:before, &.pageNav-jump--next:after { .m-faBase('Pro', @faWeight-solid); font-size: 80%; unicode-bidi: isolate; // maintain position in RTL with LTR text } &.pageNav-jump--prev:before { .m-faContent("@{fa-var-caret-left}\00a0", 0.61em, ltr); .m-faContent("@{fa-var-caret-right}\00a0", 0.61em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-left" /> } &.pageNav-jump--next:after { .m-faContent("\00a0@{fa-var-caret-right}", 0.61em, ltr); .m-faContent("\00a0@{fa-var-caret-left}", 0.61em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-right" /> } } .pageNav-main { .m-listPlain(); display: inline-table; } .pageNav-page { display: table-cell; .m-pageNavElCore(); &:not(:last-child) { border-right: none; } &:not(:first-child) { border-left-color: @xf-borderColorLight; } <xf:comment> &:first-child { .m-borderLeftRadius(@xf-borderRadiusSmall); } &:last-child { .m-borderRightRadius(@xf-borderRadiusSmall); } </xf:comment> > a { display: block; padding: @_page-paddingV @_page-paddingH; text-decoration: none; color: inherit; } &.pageNav-page--current { // background: @xf-contentAccentBg; color: @xf-uix_secondaryColor; box-shadow: 0 -2px @xf-uix_secondaryColor inset; // border: @xf-borderSize solid @xf-borderColorAccentContent; cursor: pointer; &:hover, &:active { // background: xf-intensify(@xf-contentAccentBg, 3%); } <xf:comment> + .pageNav-page { border-left: none; } </xf:comment> } } // Hide relative page numbers on narrow devices when we have a skip entry as we don't necessarily have space. @media (max-width: @xf-responsiveNarrow) { .pageNav--skipStart { .pageNav-page.pageNav-page--earlier { display: none; } } .pageNav--skipEnd { .pageNav-page.pageNav-page--later { display: none; } .pageNav-page.pageNav-page--skipEnd { border-left: none; } } } // ########################### SIMPLE PAGE NAV VARIANT ######################## .pageNavSimple { display: inline-flex; height: 24px; line-height: 24px; } .pageNavSimple-el { display: inline-block; .xf-blockBorder(); border-radius: @xf-borderRadiusSmall; padding: @_page-paddingV @_page-paddingHSimple; font-size: @xf-fontSizeSmall; text-align: center; white-space: nowrap; margin-right: 4px; &:last-child { margin-right: 0; } &.pageNavSimple-el--current { // .xf-contentAccentBase(); color: @xf-uix_primaryColor; background-color: none; &:hover, &:active { background: xf-intensify(@xf-contentAccentBg, 3%); text-decoration: none; } } &.pageNavSimple-el--prev, &.pageNavSimple-el--next { background: @xf-uix_primaryColor; color: #fff; min-width: 75px; @media (max-width: 350px) { min-width: 0; } &:hover, &:active { background: xf-intensify(@xf-uix_primaryColor, 5%); text-decoration: none; } i:before { .m-faBase('Pro', @faWeight-solid); } } &.pageNavSimple-el--prev i:before { .m-faContent(@fa-var-caret-left, .44em, ltr); .m-faContent(@fa-var-caret-right, .44em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-left" /> } &.pageNavSimple-el--next i:before { .m-faContent(@fa-var-caret-right, .44em, ltr); .m-faContent(@fa-var-caret-left, .44em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-right" /> } &.pageNavSimple-el--first, &.pageNavSimple-el--last { border-color: transparent; padding-left: (@_page-paddingHSimple / 2); padding-right: (@_page-paddingHSimple / 2); color: @xf-uix_primaryColor; &:hover, &:active { .xf-blockBorder(); background: xf-intensify(@xf-contentHighlightBg, 3%); color: @xf-linkColor; text-decoration: none; } i:before { .m-faBase('Pro', @faWeight-solid); } } &.pageNavSimple-el--first i:before { .m-faContent(@fa-var-backward, 1em, ltr); .m-faContent(@fa-var-forward, 1em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="arrow-left" /> width: auto; font-size: 18px; line-height: inherit; } &.pageNavSimple-el--last i:before { .m-faContent(@fa-var-forward, 1em, ltr); .m-faContent(@fa-var-backward, 1em, rtl); <xf:macro template="uix_icons.less" name="content" arg-icon="arrow-right" /> width: auto; font-size: 18px; line-height: inherit; } &.is-disabled { border-color: transparent; background: none; color: @xf-textColorMuted; text-decoration: none; pointer-events: none; &:hover { background: none; color: @xf-textColorMuted; } } } // #################### DISPLAY VARIANTS ######################### .pageNavWrapper--simple { .pageNav { display: none; } } .pageNavWrapper--full { .pageNavSimple { display: none; } } .pageNavWrapper--mixed { .pageNavSimple { display: none; } @media (max-width: @xf-responsiveMedium) { .pageNav { display: none; } .pageNavSimple { display: inline-flex; } } } <xf:if is="property('uix_hideTopPagenavMobile')"> // Hide any block page nav that goes before the block as we will be wasting vertical space. @media (max-width: @xf-responsiveNarrow) { .block-outer:not(.block-outer--after) .pageNavWrapper:not(.pageNavWrapper--forceShow) { display: none; } // this is a sanity check in case .block-outer--after is forgotten .block-container + .block-outer .pageNavWrapper { display: block; } } </xf:if>]]>

</template>


-<template title="core_pikaday.less" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[@pd-text-color: @xf-textColor; @pd-title-color: @xf-textColorEmphasized; @pd-title-bg: transparent; @pd-picker-bg: @xf-contentBg; @pd-picker-border: @xf-borderColorHeavy; @pd-picker-border-radius: @xf-borderRadiusMedium; @pd-th-color: @xf-textColorEmphasized; @pd-day-color: @xf-textColor; @pd-day-bg: @xf-contentHighlightBg; @pd-day-hover-color: @xf-textColor; @pd-day-hover-bg: xf-intensify(@pd-day-bg, 5%); @pd-day-today-color: @xf-textColorFeature; @pd-day-selected-color: contrast(@xf-textColorFeature); @pd-day-selected-bg: @xf-textColorFeature; @pd-day-selected-shadow: transparent; @pd-day-disabled-color: @xf-textColor; @pd-week-color: @xf-textColorEmphasized; @pd-range-color: @xf-textColorAccentContent; @pd-range-bg: @xf-contentAccentBg; @pd-range-border: @xf-borderColorAccentContent; .pika-single { z-index: 9999; display: block; position: relative; color: @pd-text-color; background: @pd-picker-bg; border: 1px solid; border-color: @pd-picker-border; border-radius: @pd-picker-border-radius; &.is-hidden { display: none; } &.is-bound { position: absolute; .m-dropShadow(0, 5px, 10px, 0, .25); } } // clear child float (pika-lendar), using the famous micro clearfix hack // http://nicolasgallagher.com/micro-clearfix-hack/ .pika-single { *zoom: 1; &:before, &:after { content: " "; display: table; } &:after { clear: both } } .pika-lendar { float: left; width: 240px; margin: 8px; } .pika-title { position: relative; text-align: center; select { cursor: pointer; position: absolute; z-index: 9998; margin: 0; left: 0; top: 5px; filter: alpha(opacity=0); opacity: 0; } } .pika-label { display: inline-block; *display: inline; position: relative; z-index: 9999; overflow: hidden; margin: 0; padding: 5px 3px; font-size: 14px; line-height: 20px; font-weight: bold; color: @pd-title-color; background-color: @pd-title-bg; } .pika-prev, .pika-next { display: block; cursor: pointer; position: relative; outline: none; background: none; border: 0; padding: 0; width: 20px; height: 30px; white-space: nowrap; overflow: hidden; opacity: .5; font-size: 0; color: @pd-title-color; background-color: @pd-title-bg; font-size: 24px; &::before { .m-faBase(); font-size: @xf-fontSizeLarge; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; } &:hover { opacity: 1; } &.is-disabled { cursor: default; opacity: .2; } } .pika-prev { &::before { .m-faContent(@fa-var-caret-left); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-left" /> } } .pika-next { &::before { .m-faContent(@fa-var-caret-right); <xf:macro template="uix_icons.less" name="content" arg-icon="menu-right" /> } } .pika-prev, .is-rtl .pika-next { float: left; *left: 0; } .pika-next, .is-rtl .pika-prev { float: right; *right: 0; } .pika-select { display: inline-block; *display: inline; } .pika-table { width: 100%; border-collapse: collapse; border-spacing: 0; border: 0; th, td { width: 14.285714285714286%; padding: 0; } th { color: @pd-th-color; font-size: 12px; line-height: 25px; font-weight: bold; text-align: center; } abbr { border-bottom: none; } } .pika-button { cursor: pointer; display: block; -moz-box-sizing: border-box; box-sizing: border-box; outline: none; border: 0; margin: 0; width: 100%; padding: 5px; color: @pd-day-color; font-size: 12px; line-height: 15px; text-align: right; background: @pd-day-bg; .is-today & { color: @pd-day-today-color; font-weight: bold; } .is-inrange &, .is-startrange &, .is-endrange & { color: @pd-range-color; background: @pd-range-bg; } .is-startrange & { .m-borderLeftRadius(3px); border-left: 2px solid @pd-range-border; } .is-endrange & { .m-borderRightRadius(3px); border-right: 2px solid @pd-range-border; } .is-selected & { color: @pd-day-selected-color; font-weight: bold; background: @pd-day-selected-bg; box-shadow: inset 0 1px 3px @pd-day-selected-shadow; border-radius: 3px; } .is-disabled &, .is-outside-current-month & { pointer-events: none; cursor: default; color: @pd-day-disabled-color; opacity: .3; } &:hover { color: @pd-day-hover-color; background: @pd-day-hover-bg; box-shadow: none; border-radius: 3px; } } .pika-week { font-size: 11px; color: @pd-week-color; } .pika-time-container { clear: both; } .pika-time { margin: 7px auto 7px; }]]>

</template>


-<template title="core_reaction.less" version_string="2.1.0 Beta 5" version_id="2010035" addon_id="XF" type="public">

<![CDATA[.reaction { display: flex; -webkit-touch-callout: none; &.reaction--imageHidden { img { display: none; } &.reaction--1 { i { .m-faBefore(@fa-var-thumbs-up); .m-faBase(); } } } &.reaction--small, &.reaction--medium { display: inline-block; .reaction-text { margin-left: 0; } } &.reaction--right { justify-content: flex-end; } &.reaction--inline { display: inline-flex;; } a&:hover, a&:focus { text-decoration: none; .reaction-text { text-decoration: underline; } } } .reactionScore { display: inline-block; padding: 2px 3px; min-width: 16px; text-align: center; vertical-align: text-bottom; border-radius: @xf-borderRadiusMedium; font-size: @xf-fontSizeSmallest; .xf-chip(); &:hover { .xf-chipHover(); } } .reaction-image { vertical-align: text-bottom; .reaction--small & { max-width: 16px; max-height: 16px; } .reaction--medium & { max-width: 21px; max-height: 21px; } } .reaction-sprite { vertical-align: text-bottom; <xf:if is="$reactionSprites"> <xf:foreach loop="$reactionSprites" key="$reactionId" value="$reactionSprite"> <xf:if is="$reactionSprite.sprite_css"> .reaction--{$reactionId} & { {$reactionSprite.sprite_css|raw} } </xf:if> <xf:if is="$reactionSprite.small_sprite_css"> .reaction--small.reaction--{$reactionId} & { {$reactionSprite.small_sprite_css|raw} } </xf:if> <xf:if is="$reactionSprite.medium_sprite_css"> .reaction--medium.reaction--{$reactionId} & { {$reactionSprite.medium_sprite_css|raw} } </xf:if> </xf:foreach> </xf:if> } .reaction-text { margin-left: 10px; align-self: center; // note: when we add a reaction we make the text bold // the below approach sets the space for that to ensure // the text doesn't jump when the bold happens. &::after { content: " "; font-weight: @xf-fontWeightHeavy; height: 1px; color: transparent; overflow: hidden; visibility: hidden; } .has-reaction & { font-weight: @xf-fontWeightHeavy; } .reaction--small & { margin-left: 0; } <xf:if is="$reactionColors"> <xf:foreach loop="$reactionColors" key="$reactionId" value="$reactionColor"> <xf:if is="$reactionColor"> .reaction--{$reactionId} & { color: {$reactionColor}; } </xf:if> </xf:foreach> </xf:if> } <xf:if is="$reactionColors"> <xf:foreach loop="$reactionColors" key="$reactionId" value="$reactionColor"> <xf:if is="$reactionColor"> .is-active.tabs-tab--reaction{$reactionId} { border-color: {$reactionColor} !important; } </xf:if> </xf:foreach> </xf:if>]]>

</template>


-<template title="core_setup.less" version_string="2.1.0 Beta 3" version_id="2010033" addon_id="XF" type="public">

<![CDATA[// Vital base setup, don't change these! html {.xf-pageBackground();} html:after { content: 'full'; display: none; @media (max-width: @xf-responsiveWide) { content: 'wide'; } @media (max-width: @xf-responsiveMedium) { content: 'medium'; } @media (max-width: @xf-responsiveNarrow) { content: 'narrow'; } } * { // global sizing calculations expect border-box box-sizing: border-box; } body { // don't hide the vertical scrollbar overflow-y: scroll !important; } [data-xf-click], a[tabindex] { // iOS doesn't bubble clicks up to the body where we have a listener, so we need to force that cursor: pointer; } [dir=auto] { // this will get flipped in RT text-align: left; } pre, textarea { // soft line wraps word-wrap: normal; } img { // without specifying this, resized images look worse -ms-interpolation-mode: bicubic; } // ################################################# // Focus handlers, set by XF.NavDeviceWatcher (core.js) .has-pointer-nav { :focus { outline: 0 } ::-moz-focus-inner { border: 0; } .iconic > input:focus + i { &:before, &:after { outline: 0; } } }]]>

</template>


-<template title="core_tab.less" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[// ################################## TABS #################################### .tabs { display: flex; &.tabs--wrappable { flex-wrap: wrap; } } .tabs-tab { display: inline-block; cursor: pointer; white-space: nowrap; color: inherit; font-weight: inherit; text-decoration: none; .m-transition(); &:hover { text-decoration: none; } } .tabs-extra { float: right; position: relative; margin-left: auto; padding: 0 0 0 @xf-paddingMedium; align-self: center; white-space: nowrap; a { color: inherit; text-decoration: none; display: block; padding: @xf-paddingMedium; } } .tabPanes { .m-listPlain(); > li { display: none; &.is-active { display: block; } } } // ################################# OUTER TABS ######################### .tabs--standalone { padding: 0; margin-bottom: @xf-elementSpacer; font-weight: @xf-fontWeightNormal; .xf-blockBorder(); .xf-standaloneTab(); .m-tabsTogether(xf-default(@xf-standaloneTab--font-size, @xf-fontSizeNormal)); .tabs-tab { padding: @xf-blockPaddingV @xf-blockPaddingH max(0px, @xf-blockPaddingV - @xf-borderSizeFeature); border-bottom: @xf-borderSizeFeature solid transparent; &:hover { color: @xf-standaloneTabSelected--color; } &.is-active { .xf-standaloneTabSelected(); } } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-standaloneTab--background-color, transparent), xf-default(@xf-standaloneTab--color, ~""), xf-default(@xf-standaloneTabSelected--color, ~"") ); } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .tabs--standalone { // margin-left: -@xf-pageEdgeSpacer; // margin-right: -@xf-pageEdgeSpacer; border-radius: 0; border-left: none; border-right: none; } }]]>

</template>


-<template title="core_tooltip.less" version_string="2.1.7" version_id="2010770" addon_id="XF" type="public">

<![CDATA[// ######################################### TOOLTIPS ####################################### @_tooltip-arrowSize: 5px; @_tooltip-arrowSizeLarge: 10px; @_tooltip-zIndex: @zIndex-3; .tooltip { position: absolute; z-index: @_tooltip-zIndex; line-height: @xf-lineHeightDefault; padding: 0 5px; padding-left: env(safe-area-inset-left) !important; padding-right: env(safe-area-inset-right) !important; display: none; &.tooltip--basic { max-width: 300px; // Tooltip positioning is literal. &.tooltip--top { margin-bottom: 3px; padding-bottom: @_tooltip-arrowSize; } &.tooltip--right { -ltr-rtl-margin-left: 3px; -ltr-rtl-padding-left: @_tooltip-arrowSize; } &.tooltip--bottom { margin-top: 3px; padding-top: @_tooltip-arrowSize; .has-touchevents &.tooltip--selectToQuote { margin-top: .75em; } } &.tooltip--left { -ltr-rtl-margin-right: 3px; -ltr-rtl-padding-right: @_tooltip-arrowSize; } .m-textColoredLinks(); } &.tooltip--noninteractive { pointer-events: none; } &.tooltip--description { max-width: 350px; } &.tooltip--selectToQuote { .m-hiddenLinks(); } &.tooltip--preview { max-width: 100%; width: 400px; } &.tooltip--member { max-width: 100%; width: 450px; padding: 0 10px; } &.tooltip--reaction { max-width: 100%; padding: 0 15px; margin: 5px 0; } &.tooltip--bookmark, &.tooltip--share { max-width: 100%; width: 340px; padding: 0 15px; } &.tooltip--bookmark, &.tooltip--member, &.tooltip--preview, &.tooltip--share { // Tooltip positioning is literal. &.tooltip--top { padding-bottom: @_tooltip-arrowSizeLarge; } &.tooltip--right { -ltr-rtl-padding-left: @_tooltip-arrowSizeLarge; } &.tooltip--bottom { padding-top: @_tooltip-arrowSizeLarge; } &.tooltip--left { -ltr-rtl-padding-right: @_tooltip-arrowSizeLarge; } } } .tooltip-content { .tooltip--basic & { text-align: center; .xf-tooltip(); } .tooltip--description & { text-align: left; } .tooltip--preview & { .xf-contentBase(); padding: @xf-paddingMedium; text-align: left; border: 1px solid @xf-borderColor; .m-dropShadow(0, 5px, 10px, 0, .35); } .tooltip--bookmark &, .tooltip--member &, .tooltip--share & { .xf-contentBase(); padding: 0; text-align: left; border: 1px solid @xf-borderColor; .m-dropShadow(0, 5px, 10px, 0, .35); } .tooltip--reaction & { .xf-contentBase(); padding: 0; text-align: center; border: 1px solid @xf-borderColor; border-radius: @xf-borderRadiusLarge; } } .tooltip-content-inner { position: relative; .tooltip--basic & { max-height: 200px; overflow: hidden; } .tooltip--preview & { max-height: 200px; overflow: hidden; .tooltip-content-cover { .m-gradient(fade(@xf-contentBg, 0%), @xf-contentBg, transparent, 160px, 200px); } } .tooltip-content-cover { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } } // Tooltip side positioning is literal. /* XF-RTL:disable */ .tooltip-arrow { position: absolute; width: 0; height: 0; border: 0 solid transparent; .m-tooltipArrow( xf-default(@xf-tooltip--background-color, transparent), @_tooltip-arrowSize, ~'.tooltip--basic' ); @classes: tooltip--preview tooltip--member tooltip--share tooltip--bookmark; .m-tooltipArrowList(@xf-borderColor, @_tooltip-arrowSizeLarge + 1px, @classes, @xf-contentBg); .tooltip--member.tooltip--bottom &:after { .m-triangleUp(xf-default(@xf-memberTooltipHeader--background-color, transparent), @_tooltip-arrowSizeLarge); } } .m-tooltipArrowList(@color, @size, @classes, @fillColor: false) { .variations(@classes, @i: 1) when (@i <= length(@classes)) { @variation: extract(@classes, @i); .m-tooltipArrow(@color, @size, ~'.@{variation}', @fillColor); .variations(@classes, @i + 1); } .variations(@classes); } /* XF-RTL:enable */ .tooltipCover { display: none; position: absolute; opacity: 0; z-index: (@_tooltip-zIndex - 1); -webkit-tap-highlight-color: rgba(0, 0, 0, 0); &.is-active { display: block; } }]]>

</template>


-<template title="core_xfmg.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[.xfmgThumbnail { display: flex; position: relative; width: 100px; vertical-align: top; white-space: nowrap; word-wrap: normal; text-align: center; &&.is-selected // increase specificity to ensure overriding of noThumb border { border: @xf-borderSizeMinorFeature solid @xf-borderColorFeature; } &.xfmgThumbnail--fluid { width: inherit; } &.xfmgThumbnail--smallest { width: 50px; } &.xfmgThumbnail--small { width: 60px; } &.xfmgThumbnail--noThumb { .xf-contentAltBase(); .xfmgThumbnail-icon { &::before { .m-faContent(@fa-var-ellipsis-h); } .xfmgThumbnail--upload& { &::before { .m-faContent(@fa-var-upload) !important; // has to override the default no thumbnail icon <xf:macro name="content" template="uix_icons.less" arg-icon="upload" /> } } .xfmgThumbnail--audio& { &::before { .m-faContent(@fa-var-music); <xf:macro name="content" template="uix_icons.less" arg-icon="audio" /> } } .xfmgThumbnail--image& { &::before { .m-faContent(@fa-var-image); <xf:macro name="content" template="uix_icons.less" arg-icon="media" /> } } .xfmgThumbnail--video& { &::before { .m-faContent(@fa-var-video); <xf:macro name="content" template="uix_icons.less" arg-icon="video" /> } } .xfmgThumbnail--embed& { .xfmgThumbnail--upload& { &::before { .m-faBase('Pro'); } } &::before { .m-faBase('Brands'); .m-faContent(@fa-var-youtube); <xf:macro name="content" template="uix_icons.less" arg-icon="youtube" /> } } .xfmgThumbnail--album& { &::before { .m-faContent(@fa-var-folder-open); <xf:macro name="content" template="uix_icons.less" arg-icon="folder" /> } } } } &.xfmgThumbnail--notVisible { .xfmgThumbnail-image { opacity: 0.3; z-index: @zIndex-2; } &.xfmgThumbnail--notVisible--deleted { .xfmgThumbnail-icon { &::before { .m-faBase('Pro'); .m-faContent(@fa-var-trash-alt); <xf:macro name="content" template="uix_icons.less" arg-icon="delete" /> } } } &.xfmgThumbnail--notVisible--moderated { .xfmgThumbnail-icon { &::before { .m-faBase('Pro'); .m-faContent(@fa-var-shield); <xf:macro name="content" template="uix_icons.less" arg-icon="moderate" /> } } } } } .xfmgThumbnail-image { width: 100%; height: 100%; vertical-align: top; } .xfmgThumbnail-icon { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); color: @xf-textColorMuted; .m-textOutline(@xf-textColorMuted, xf-intensify(@xf-textColorMuted, 20%)); .m-faBase(); font-size: 60px; .xfmgThumbnail--upload && // extra specificity required in this case { .m-faBase(); font-size: 60px; } .xfmgThumbnail--embed:not(.xfmgThumbnail--notVisible, .xfmgThumbnail--upload) & { .m-faBase('Brands'); font-size: 60px; } .xfmgThumbnail--smallest &, .xfmgThumbnail--iconSmallest & { font-size: 25px; } .xfmgThumbnail--small &, .xfmgThumbnail--iconSmall & { font-size: 30px; } @media (max-width: @xf-responsiveMedium) { font-size: 50px; } @media (max-width: @xf-responsiveNarrow) { font-size: 30px; } }]]>

</template>


-<template title="core_xfrm.less" version_string="2.1.4" version_id="2010470" addon_id="" type="public">

<![CDATA[.avatar.avatar--resourceIconDefault { color: xf-default(@xf-textColorMuted, black) !important; background: mix(xf-default(@xf-textColorMuted, black), xf-default(@xf-avatarBg, white), 25%) !important; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; > span:before { .m-faBase(); .m-faContent(@fa-var-cog); <xf:macro name="content" template="uix_icons.less" arg-icon="settings" /> } }]]>

</template>


-<template title="custom_fields_macros" version_string="2.1.3" version_id="2010370" addon_id="XF" type="public">

<![CDATA[<xf:macro name="custom_fields_view" arg-type="!" arg-group="!" arg-set="!" arg-onlyInclude="{{ null }}" arg-additionalFilters="{{ [] }}" arg-wrapperClass="" arg-valueClass="pairs pairs--columns pairs--fixedSmall"> <xf:if contentcheck="true"> <div class="{$wrapperClass}"> <xf:contentcheck> <xf:macro name="custom_fields_values" arg-type="{$type}" arg-group="{$group}" arg-set="{$set}" arg-onlyInclude="{$onlyInclude}" arg-additionalFilters="{$additionalFilters}" arg-valueClass="{$valueClass}" /> </xf:contentcheck> </div> </xf:if> </xf:macro> <xf:macro name="custom_fields_values" arg-type="!" arg-group="!" arg-set="!" arg-onlyInclude="{{ null }}" arg-additionalFilters="{{ [] }}" arg-valueClass="pairs pairs--columns pairs--fixedSmall"> <xf:foreach loop="$xf.app.getCustomFields({$type}, {$group}, {$onlyInclude}, {$additionalFilters})" key="$fieldId" value="$fieldDefinition"> <xf:if is="$fieldDefinition.hasValue({$set.{$fieldDefinition.field_id}})"> <dl class="{$valueClass}"> <dt>{$fieldDefinition.title}</dt> <dd data-xf-init="tooltip" title="{{$fieldDefinition.getFormattedValue({$set.{$fieldDefinition.field_id}})|strip_tags}}"> <xf:macro name="custom_field_value" arg-definition="{$fieldDefinition}" arg-value="{$set.{$fieldDefinition.field_id}}" /> </dd> </dl> </xf:if> </xf:foreach> </xf:macro> <xf:macro name="custom_field_value" arg-definition="!" arg-value="!"> <xf:if is="$definition.field_type == 'stars'"> <xf:macro template="rating_macros" name="stars" arg-rating="{$value}" /> <xf:else /> <xf:if is="$definition.match_type == 'date'"> <xf:macro name="custom_field_value_date" arg-date="{$value}" /> <xf:elseif is="$definition.match_type == 'color'" /> <xf:macro name="custom_field_value_color" arg-color="{$value}" /> <xf:else /> {$definition.getFormattedValue($value)|raw} </xf:if> </xf:if> </xf:macro> <xf:macro name="custom_field_value_date" arg-date="!"> {{ date(date_from_format('Y-m-d', $date)) }} </xf:macro> <xf:macro name="custom_field_value_color" arg-color="!"> <span class="colorChip" data-xf-init="tooltip" title="{$color}"> <span class="colorChip-inner" style="background-color: {$color}"> <span class="colorChip-value">{$color}</span> </span> </span> </xf:macro> <xf:macro name="custom_fields_edit" arg-type="!" arg-group="{{ null }}" arg-set="!" arg-editMode="user" arg-onlyInclude="{{ null }}" arg-additionalFilters="{{ [] }}" arg-rowType="" arg-rowClass="" arg-namePrefix="custom_fields" arg-requiredOnly="{{ false }}"> <xf:foreach loop="$xf.app.getCustomFieldsForEdit({$type}, {$set}, {$editMode}, {$group}, {$onlyInclude}, {$additionalFilters})" key="$fieldId" value="$fieldDefinition"> <xf:if is="!$requiredOnly OR ($requiredOnly AND $fieldDefinition.required)"> <xf:formrow label="{$fieldDefinition.title}" explain="{$fieldDefinition.description}" hint="{{ $fieldDefinition.isRequired($editMode) ? phrase('required') : '' }}" rowtype="{$rowType} customField {{ in_array($fieldDefinition.field_type, ['textbox', 'textarea', 'bbcode', 'select']) ? 'input' : '' }}" rowclass="{$rowClass}" data-field="{$fieldDefinition.field_id}"> <xf:macro name="custom_fields_edit_{$fieldDefinition.field_type}" arg-set="{$set}" arg-definition="{$fieldDefinition}" arg-editMode="{$editMode}" arg-namePrefix="{$namePrefix}" /> </xf:formrow> </xf:if> </xf:foreach> </xf:macro> <xf:macro name="custom_fields_edit_groups" arg-type="!" arg-groups="!" arg-set="!" arg-editMode="user" arg-onlyInclude="{{ null }}" arg-additionalFilters="{{ [] }}" arg-rowType="" arg-namePrefix="custom_fields" arg-requiredOnly=""> <xf:foreach loop="$groups" value="$group"> <xf:macro name="custom_fields_edit" arg-type="{$type}" arg-group="{$group}" arg-set="{$set}" arg-editMode="{$editMode}" arg-onlyInclude="{$onlyInclude}" arg-additionalFilters="{$additionalFilters}" arg-rowType="{$rowType}" arg-namePrefix="{$namePrefix}" arg-requiredOnly="{$requiredOnly}" /> </xf:foreach> </xf:macro> <xf:macro name="custom_fields_edit_textbox" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:if is="$definition.match_type == 'date'"> <xf:dateinput name="{$namePrefix}[{$definition.field_id}]" value="{$set.{$definition.field_id}}" data-field="{$definition.field_id}" maxlength="{{ $definition.max_length ? $definition.max_length : '' }}" required="{{ $definition.isRequired($editMode) ? 'required' : '' }}" class="field_{$definition.field_id}" /> <xf:elseif is="$definition.match_type == 'color'" /> <xf:macro template="color_picker_macros" name="color_picker" arg-name="{$namePrefix}[{$definition.field_id}]" arg-value="{$set.{$definition.field_id}}" arg-mapName="" arg-row="{{ false }}" arg-required="{$definition.isRequired($editMode)}" /> <xf:elseif is="$definition.match_type == 'number'" /> <xf:set var="$step" value="1" /> <xf:if is="$definition.match_params.number_integer"> <xf:if is="$definition.match_params.number_min >= 0"> <xf:set var="$pattern" value="\d*" /> </xf:if> <xf:else /> <xf:set var="$step" value="any" /> </xf:if> <xf:if is="$definition.match_params.number_min !== ''"> <xf:set var="$min" value="{$definition.match_params.number_min}" /> </xf:if> <xf:if is="$definition.match_params.number_max !== ''"> <xf:set var="$max" value="{$definition.match_params.number_max}" /> </xf:if> <xf:numberbox name="{$namePrefix}[{$definition.field_id}]" value="{$set.{$definition.field_id}}" maxlength="{{ $definition.max_length ? $definition.max_length : '' }}" pattern="{$pattern}" default="" min="{$min}" max="{$max}" step="{$step}" required="{{ $definition.isRequired($editMode) ? 'required' : '' }}" class="field_{$definition.field_id}" /> <xf:else /> <xf:if is="in_array($definition.match_type, ['regex', 'alphanumeric'])"> <xf:set var="$type" value="text" /> <xf:set var="$pattern" value="{{ $definition.match_type == 'regex' ? $definition.match_params.regex : '\w+' }}" /> <xf:set var="$title">{{ phrase('please_enter_value_that_matches_required_format') }}</xf:set> <xf:elseif is="in_array($definition.match_type, ['date', 'email', 'url', 'color'])" /> <xf:set var="$type" value="{$definition.match_type}" /> <xf:else /> <xf:set var="$type" value="text" /> </xf:if> <xf:textbox name="{$namePrefix}[{$definition.field_id}]" value="{$set.{$definition.field_id}}" type="{$type}" maxlength="{{ $definition.max_length ? $definition.max_length : '' }}" pattern="{$pattern}" title="{$title}" min="{$min}" max="{$max}" step="{$step}" required="{{ $definition.isRequired($editMode) ? 'required' : '' }}" class="field_{$definition.field_id}" /> </xf:if> </xf:macro> <xf:macro name="custom_fields_edit_textarea" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:textarea name="{$namePrefix}[{$definition.field_id}]" value="{$set.{$definition.field_id}}" maxlength="{{ $definition.max_length ? $definition.max_length : '' }}" autosize="true" required="{{ $definition.isRequired($editMode) ? 'required' : '' }}" class="field_{$definition.field_id}" /> </xf:macro> <xf:macro name="custom_fields_edit_bbcode" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:editor name="{$namePrefix}[{$definition.field_id}]" value="{$set.{$definition.field_id}}" previewable="0" data-min-height="80" class="field_{$definition.field_id}" /> </xf:macro> <xf:macro name="custom_fields_edit_select" arg-set="!" arg-definition="!" arg-editMode="!" arg-multi="" arg-namePrefix="custom_fields"> <xf:select name="{$namePrefix}[{$definition.field_id}]" value="{{ $set.{$definition.field_id} === null ? '' : {$set.{$definition.field_id}} }}" multiple="{$multi}" class="field_{$definition.field_id}"> <xf:option value="" /> <xf:options source="$definition.field_choices" /> </xf:select> </xf:macro> <xf:macro name="custom_fields_edit_radio" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:radio name="{$namePrefix}[{$definition.field_id}]" value="{{ $set.{$definition.field_id} === null ? '' : {$set.{$definition.field_id}} }}" required="{{ $definition.isRequired($editMode) ? 'required' : '' }}" class="field_{$definition.field_id}" listclass="listColumns"> <xf:if is="!$definition.isRequired($editMode)"> <xf:option value="">{{ phrase('no_selection') }}</xf:option> </xf:if> <xf:options source="$definition.field_choices" /> </xf:radio> </xf:macro> <xf:macro name="custom_fields_edit_checkbox" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:checkbox name="{$namePrefix}[{$definition.field_id}]" value="{$set.{$definition.field_id}}" required="{{ $definition.isRequired($editMode) ? 'required' : '' }}" listclass="field_{$definition.field_id} listColumns"> <xf:options source="$definition.field_choices" /> </xf:checkbox> </xf:macro> <xf:macro name="custom_fields_edit_multiselect" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:macro name="custom_fields_edit_select" arg-set="{$set}" arg-definition="{$definition}" arg-editMode="!" arg-multi="1" arg-namePrefix="{$namePrefix}" /> </xf:macro> <xf:macro name="custom_fields_edit_stars" arg-set="!" arg-definition="!" arg-editMode="!" arg-namePrefix="custom_fields"> <xf:macro template="rating_macros" name="rating" arg-name="{$namePrefix}[{$definition.field_id}]" arg-currentRating="{$set.{$definition.field_id}}" arg-deselectable="{{ $definition.isRequired($editMode) ? 'false' : 'true' }}" arg-row="{{ false }}" /> </xf:macro>]]>

</template>


-<template title="deletion_macros" version_string="2.0.10" version_id="2001070" addon_id="XF" type="public">

<![CDATA[<xf:macro name="notice" arg-log="!" arg-message=""> <ul class="listInline listInline--bullet listInline--selfInline"> <xf:if is="$message is not empty"> <li>{$message}</li> </xf:if> <li>{{ phrase('deleted_by_x', {'name': $log.delete_username ?: phrase('n_a')}) }}</li> <xf:if is="{$log}"> <li><xf:date time="{$log.delete_date}" /></li> <xf:if is="{$log.delete_reason}"> <li>{{ phrase('reason:') }} {$log.delete_reason}</li> </xf:if> </xf:if> </ul> </xf:macro>]]>

</template>


-<template title="editor.less" version_string="2.1.4" version_id="2010470" addon_id="XF" type="public">

<![CDATA[/* XF-RTL:disable */ {{ include('editor_base.less') }} /* XF-RTL:enable */ // this allows us to ensure that when we scroll the editor into view, this goes below the fixed header .fr-box.is-scrolling-to:before { display: block; content: ''; .m-stickyHeaderConfig(@xf-publicNavSticky); height: (@_stickyHeader-height + @_stickyHeader-offset); margin-top: -(@_stickyHeader-height + @_stickyHeader-offset); @media (max-height: 360px) { display: none; } } .fr-view { .m-inputZoomFix(); img.fr-draggable:not(.smilie), .bbImage { max-width: 100%; height: auto; } // remove image margins from images - they give the illusion of added spaces // extra specificity required for correct behaviour &&.fr-element img.fr-dii { margin: 0; } .fr-video { position: relative; video { width: 560px; max-width: 100%; } } p { margin-bottom: 0; margin-top: 0; } &.fr-element { .fr-disabled { .xf-inputDisabled() !important; } @attach-margin: @xf-bbCodeImgFloatMargin; img.fr-dii { display: inline-block; float: none; margin-left: @attach-margin; margin-right: @attach-margin; max-width: calc(100% - (2 * @attach-margin)); &.fr-fil { float: left; margin: @attach-margin @attach-margin @attach-margin 0; max-width: calc(100% - @attach-margin); } &.fr-fir { float: right; margin: @attach-margin 0 @attach-margin @attach-margin; max-width: calc(100% - @attach-margin); } } .fr-video.fr-dvi { display: inline-block; float: none; margin-left: @attach-margin; margin-right: @attach-margin; max-width: calc(100% - (2 * @attach-margin)); &.fr-fvl { float: left; margin: @attach-margin @attach-margin @attach-margin 0; max-width: calc(100% - @attach-margin); } &.fr-fvr { float: right; margin: @attach-margin 0 @attach-margin @attach-margin; max-width: calc(100% - @attach-margin); } } } .m-tableBase(); } .fr-command.fr-btn + .fr-dropdown-menu { display: none; .fr-dropdown-wrapper { background: @xf-contentBg; border: @xf-borderSize solid @xf-borderColor; .fr-dropdown-content ul.fr-dropdown-list li a img { // note: this selector roughly matches a core froala selector height: 1em; } } } .fr-toolbar .fr-btn.fr-active[data-cmd="xfBbCode"] { color: @xf-textColorAttention; } .fr-popup { background: @xf-contentBg; } .fr-popup .fr-input-line { padding: 16px 0 8px; input[type="text"], textarea { .xf-input(); margin: 0; line-height: @xf-lineHeightDefault; .m-transition(background, color;); &:focus { .xf-input(border); .xf-inputFocus(); } .m-inputZoomFix(); } input + label, textarea + label { line-height: 1.2; font-size: 12px; background: transparent; } input.fr-not-empty:focus + label, textarea.fr-not-empty:focus + label { color: @xf-textColorMuted; } } .fr-popup .fr-color-set { > span .fr-selected-color { font-family: 'Font Awesome 5 Pro'; font-weight: @xf-fontAwesomeWeight; } } .fr-popup .fr-color-hex-layer { .fr-input-line { padding-top: 16px; width: 150px; } .fr-action-buttons { margin-top: 18px; .m-frCommandStyle(); } } .fr-popup .fr-action-buttons { height: auto; .m-frCommandStyle(); } .m-frCommandStyle() { button.fr-command { .m-buttonBase(); .xf-buttonPrimary(); .m-buttonBlockColorVariationSimple(xf-default(@xf-buttonPrimary--background-color, transparent)); height: auto; min-width: 0; line-height: @xf-lineHeightDefault; &:hover, &:active, &:focus { // overriding Froala's hover color: @xf-buttonPrimary--color; background-color: @xf-uix_buttonPrimaryHover--background-color; } } } @_menu-arrowSize: 8px; .fr-popup.fr-active { margin-top: 15px; border-left: 0; border-right: 0; border-bottom: 0; border-radius: @xf-menuBorderRadius; opacity: 1; .m-dropShadow(0, 5px, 10px, 0, .35); .fr-buttons { border: 0; } } .fr-popup .fr-arrow { top: -@_menu-arrowSize - 3px; border-left-width: @_menu-arrowSize; border-right-width: @_menu-arrowSize; border-bottom-width: @_menu-arrowSize; margin-left: -@_menu-arrowSize; } // RTE disabled case .fr-box textarea.input { border-top: none; .border-radius(0 0 @border-radius @border-radius); } .editorDraftIndicator { .m-transition(); opacity: 0; position: absolute; bottom: 7px; right: 12px; width: 7px; height: 7px; border-radius: 3.5px; background: rgb(127, 185, 0); &.is-active { opacity: 1; } } @editorSmiliesBg: xf-intensify(@xf-contentBg, 1%); .editorSmilies { display: none; border: @xf-borderSize solid @xf-borderColorHeavy; border-top: none; background: @xf-editorToolbarBg; overflow: hidden; .m-transition(all, -xf-height;); height: 0; &.is-active { display: block; height: auto; } &.is-transitioning { display: block; } .smilie { // cursor: pointer; } .tabPanes > li { padding: @xf-blockPaddingV @xf-blockPaddingH; } } .tabs--editor // takes some hints from .tabs--standalone { color: @xf-textColorMuted; background: @editorSmiliesBg; font-weight: @xf-fontWeightNormal; border-bottom: @xf-borderSize solid @xf-borderColor; .m-tabsTogether(@xf-fontSizeSmall); .tabs-tab { padding: @xf-blockPaddingV @xf-blockPaddingH max(0px, @xf-blockPaddingV - @xf-borderSizeFeature); border-bottom: @xf-borderSizeFeature solid transparent; &:hover { color: @xf-standaloneTab--color; } &.is-active { color: @xf-textColorFeature; border-color: @xf-borderColorFeature; } } .hScroller-action { .m-hScrollerActionColorVariation( @editorSmiliesBg, xf-default(@xf-standaloneTab--color, ~""), xf-default(@xf-standaloneTabSelected--color, ~"") ); } } @_menu-padding: @xf-paddingMedium; @_menu-padding-large: @xf-paddingLarge; .menu--emoji { width: 412px; max-width: ~"calc(100% - @{xf-pageEdgeSpacer})"; .menu-content { position: relative; } .menu-scroller { max-height: 250px; border-top: 0; } .menu-row { padding: @_menu-padding @_menu-padding; &.menu-row--insertedMessage { .m-hiddenEl(true); position: absolute; top: 0; left: 0; right: 0; border-bottom: @xf-borderSize solid @xf-borderColorLight; } } .menu-emojiInsertedMessage { display: flex; align-items: center; justify-content: center; min-height: 35px; font-size: @xf-fontSizeNormal; img { max-height: 32px; } span { margin-left: .5em } } .menu-header { background: none; .xf-formSectionHeader(); background-color: @xf-contentBg; z-index: @zIndex-1; font-size: @xf-fontSizeNormal; position: -webkit-sticky; position: sticky; padding: @_menu-padding @_menu-padding-large; top: 0; } .block-body--emoji { border-top: @xf-borderSize solid @xf-borderColorLight; } .is-hidden { display: none; } } .emojiList { .m-listPlain(); display: flex; flex-wrap: wrap; justify-content: flex-start; margin-right: -3px; margin-bottom: -3px; > li { min-width: 32px; margin-right: 3px; margin-bottom: 3px; border-radius: @xf-borderRadiusMedium; cursor: pointer; &:hover, &:focus { background-color: @xf-paletteColor2; } a { min-width: 32px; height: 32px; font-size: 24px; display: flex; justify-content: center; align-items: center; cursor: pointer; overflow: hidden; &:hover, &:focus { text-decoration: none; } img { max-height: 32px; } .smilie.smilie--emoji { width: 22px; } .smilie--lazyLoad { visibility: hidden; } } } } .editorPlaceholder { .is-hidden { display: none; } cursor: text; .editorPlaceholder-placeholder { .input { padding: @xf-paddingLarge; //border-radius: 0; //border-top: 3px solid #47a7eb; span { &:before { .m-faBase(); .m-faContent(@fa-var-pen); } } } } }]]>

</template>


-<template title="editor_base.less" version_string="2.1.4" version_id="2010470" addon_id="XF" type="public">

<![CDATA[/***** froala.less *****/ /***** variables.less *****/ // Theme Name. @theme: 'theme'; // UI colors @ui-color: #1E88E5; @ui-text: #222222; @ui-hover-light-color: mix(@white, #999, 90%); @ui-hover-color: mix(@white, #999, 80%); @ui-focused-color: mix(@white, #999, 60%); @ui-disabled-color: mix(@white, #000, 74%); @ui-bg: @white; @ui-font-size: 14px; @ui-border-color: #222222; @ui-border-top: 5px solid @ui-border-color; // Separator @separator-size: 1px; @separator-color: mix(@white, #999, 80%); // Generic. @white: #FFF; @black: #000; @gray: #CCCCCC; @font-family: Arial, Helvetica, sans-serif; @border-radius: 2px; @arrow-size: 5px; @transition-timing: 0.2s ease 0s; // Screen sizes. @screen-xs: 480px; @screen-sm: 768px; @screen-md: 992px; @screen-lg: 1200px; @screen-xs-max: (@screen-sm - 1); @screen-sm-max: (@screen-md - 1); @screen-md-max: (@screen-lg - 1); @screen-lg-max: 'auto'; // Tooltip @tooltip-bg: #222222; @tooltip-text: #FFFFFF; @tooltip-font-size: 11px; @tooltip-line-height: 22px; // Editor properties. @editor-padding: 16px; @editor-bg: #FFF; @editor-text: #000; @editor-shadow-level: 1; @editor-border: 0px; // Text selection colors. @selection-bg: #b5d6fd; @selection-text: #000; // Placeholder properties. @placeholder-size: 12px; @placeholder-color: #AAA; // Button colors. @btn-text: #222222; @btn-hover-text: #222222; @btn-hover-bg: @ui-hover-color; @btn-active-text: @xf-uix_primaryColor; @btn-active-bg: transparent; @btn-active-hover-text: @xf-uix_primaryColor; @btn-active-hover-bg: @btn-hover-bg; @btn-selected-text: @btn-text; @btn-selected-bg: @ui-focused-color; @btn-active-selected-text: @xf-uix_primaryColor; @btn-active-selected-bg: @btn-selected-bg; @btn-disabled-color: @ui-disabled-color; // Button size. @btn-width: 38px; @btn-height: 38px; @btn-margin: 2px; @btn-font-size: 14px; // Image. @image-margin: 5px; // Image and Video @handler-size: 12px; @handler-size-lg: 10px; // Code View @code-view-bg: #FFF; @code-view-text: #000; // Table properties. @table-border: 1px solid #DDD; @table-resizer: 1px solid @ui-color; // Insert table grid. @insert-table-grid: @table-border; // Quick insert. @floating-btn-bg: #FFF; @floating-btn-text: @ui-color; @floating-btn-hover-bg: @ui-hover-color; @floating-btn-hover-text: @ui-color; @floating-btn-size: 32px; @floating-btn-font-size: 14px; @floating-btn-border: none; // List menu. @dropdown-arrow-width: 4px; @dropdown-item-active-bg: @ui-focused-color; @dropdown-max-height: 275px; @dropdown-options-width: 16px; @dropdown-options-margin-left: -5px; @dropdown-options-border-left: solid 1px #FAFAFA; // Image manager. @modal-bg: @white; @modal-overlay-color: #000; // Destroy buttons (delete in image manager). @modal-destroy-btn-bg: #B8312F; @modal-destroy-btn-text: @white; @modal-destroy-btn-hover-bg: mix(contrast(@modal-destroy-btn-bg, @black, @white, 50%), @modal-destroy-btn-bg, 10%); @modal-destroy-btn-hover-text: @white; // Popups. @popup-layer-width: 300px; // Inputs. @input-border-color: mix(@white, #000, 74%); @input-label-color: mix(@white, #000, 50%); // Quote. @blockquote-level1-color: #5E35B1; @blockquote-level2-color: #00BCD4; @blockquote-level3-color: #43A047; // Char counter. @char-counter-border: solid 1px mix(@white, #999, 80%); @drag-helper-border: solid 1px @ui-color; @drag-helper-bg: @ui-color; // ################# CUSTOM OVERRIDES ################ {{ include('editor_override.less') }} /***** mixins.less *****/ .resize(@val) { resize: @val; -moz-resize: @val; -webkit-resize: @val; } .opacity (@opacity: 0.5) { -webkit-opacity: @opacity; -moz-opacity: @opacity; opacity: @opacity; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; } .transition(@transition) { -webkit-transition: @transition; -moz-transition: @transition; -ms-transition: @transition; -o-transition: @transition; } .transform(@string){ -webkit-transform: @string; -moz-transform: @string; -ms-transform: @string; -o-transform: @string; } .box-sizing (@type: border-box) { -webkit-box-sizing: @type; -moz-box-sizing: @type; box-sizing: @type; } .border-radius (@radius: 0) { border-radius: @radius; -moz-border-radius: @radius; -webkit-border-radius: @radius; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } .user-select(@select) { user-select: @select; -o-user-select:@select; -moz-user-select: @select; -khtml-user-select: @select; -webkit-user-select: @select; -ms-user-select: @select; } .box-shadow(@shadow) { -webkit-box-shadow: @shadow; -moz-box-shadow: @shadow; box-shadow: @shadow; } .material-box-shadow (@level: 1, @direction: 1) when (@level = 0) { .box-shadow(none); } .material-box-shadow (@level: 1, @direction: 1) when (@level = 1) { @shadow: 0 (@direction * 1px) 3px rgba(0,0,0,0.12), 0 (@direction * 1px) 1px 1px rgba(0,0,0,0.16); .box-shadow(@shadow); } .material-box-shadow (@level: 1, @direction: 1) when (@level = 2) { @shadow: 0 (@direction * 3px) 6px rgba(0,0,0,0.16), 0 (@direction * 2px) 2px 1px rgba(0,0,0,0.14); .box-shadow(@shadow); } .material-box-shadow (@level: 1, @direction: 1) when (@level = 3) { @shadow: 0 (@direction * 5px) 8px rgba(0,0,0,0.19), 0 (@direction * 4px) 3px 1px rgba(0,0,0,0.14); .box-shadow(@shadow); } .material-box-shadow (@level: 1, @direction: 1) when (@level = 4) { @shadow: 0 (@direction * 8px) 12px rgba(0,0,0,0.25), 0 (@direction * 6px) 3px 1px rgba(0,0,0,0.12); .box-shadow(@shadow); } .material-box-shadow (@level: 1, @direction: 1) when (@level >= 5) { @shadow: 0 (@direction * 10px) 16px rgba(0,0,0,0.30), 0 (@direction * 6px) 8px rgba(0,0,0,0.22); .box-shadow(@shadow); } .clearfix { &::after { clear: both; display: block; content: ""; height: 0; } } .column-count(@count) { column-count: @count; -moz-column-count: @count; -webkit-column-count: @count; } .column-gap(@gap) { column-gap: @gap; -moz-column-gap: @gap; -webkit-column-gap: @gap; } .animation (@val) { -webkit-animation: @val; -moz-animation: @val; -o-animation: @val; animation: @val; } .handler-size(@size) { .fr-handler { width: @size; height: @size; &.fr-hnw { left: (-@size / 2); top: (-@size / 2); } &.fr-hne { right: (-@size / 2); top: (-@size / 2); } &.fr-hsw { left: (-@size / 2); bottom: (-@size / 2); } &.fr-hse { right: (-@size / 2); bottom: (-@size / 2); } } } .font-smoothing() { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .hide-by-clipping { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; } .display-inline-flex() { display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; } /***** core/element.less *****/ .fr-element, .fr-element:focus { outline: 0px solid transparent; } .fr-box.fr-basic { .fr-element { color: @editor-text; padding: @editor-padding; .box-sizing(border-box); overflow-x: auto; min-height: (20px + (2 * @editor-padding)); } &.fr-rtl { .fr-element { text-align: right; } } } .fr-element { background: transparent; position: relative; z-index: 2; // CSS rule for iPad not being able to select sometimes. -webkit-user-select: auto; // Fix bootstrap select. a { .user-select(auto); } &.fr-disabled { .user-select(none); } [contenteditable="true"] { outline: 0px solid transparent; } } .fr-box { a.fr-floating-btn { .material-box-shadow (@editor-shadow-level); .border-radius(100%); height: @floating-btn-size; width: @floating-btn-size; text-align: center; background: @floating-btn-bg; color: @floating-btn-text; .transition(background @transition-timing, color @transition-timing, transform @transition-timing;); outline: none; left: 0; top: 0; line-height: (@floating-btn-size); .transform(scale(0)); text-align: center; display: block; .box-sizing(border-box); border: @floating-btn-border; svg { .transition(transform @transition-timing;); fill: @floating-btn-text; } i, svg { font-size: @floating-btn-font-size; line-height: @floating-btn-size; } &.fr-btn + .fr-btn { margin-left: 10px; } &:hover { background: @floating-btn-hover-bg; cursor: pointer; svg { fill: @floating-btn-hover-text; } } } .fr-visible { a.fr-floating-btn { .transform(scale(1)); } } } /***** core/iframe.less *****/ iframe.fr-iframe { width: 100%; border: none; position: relative; display: block; z-index: 2; .box-sizing(border-box); } /***** core/wrapper.less *****/ .fr-wrapper { position: relative; z-index: 1; .clearfix(); .fr-placeholder { position: absolute; font-size: @placeholder-size; color: @placeholder-color; z-index: 1; display: none; top: 0; left: 0; right: 0; overflow: hidden; } &.show-placeholder { .fr-placeholder { display: block; } } ::selection { // background: @selection-bg; // color: @selection-text; .xf-uix_textSelection(); } ::-moz-selection { // background: @selection-bg; // color: @selection-text; .xf-uix_textSelection(); } } .fr-box.fr-basic { .fr-wrapper { background: @editor-bg; border: @editor-border; border-top: 0; top: 0; left: 0; } } .fr-box.fr-basic { &.fr-top .fr-wrapper { border-top: 0; .border-radius(0 0 @border-radius @border-radius); .material-box-shadow(@editor-shadow-level); } &.fr-bottom .fr-wrapper { border-bottom: 0; .border-radius(@border-radius @border-radius 0 0); .material-box-shadow(@editor-shadow-level, -1); } } @media (min-width: @screen-md) { .fr-box.fr-document { min-width: 21cm; .fr-wrapper { text-align: left; padding: 30px; min-width: 21cm; background: #EFEFEF; .fr-element { text-align: left; background: #FFF; width: 21cm; margin: auto; min-height: 26cm !important; padding: 1cm 2cm; .material-box-shadow(@editor-shadow-level); overflow: visible; z-index: auto; hr { margin-left: -2cm; margin-right: -2cm; background: #EFEFEF; height: 1cm; outline: none; border: none; } img { z-index: 1; } } } } } /***** tooltip.less *****/ .fr-tooltip { position: absolute; top: 0; left: 0; padding: 0 8px; .border-radius(@border-radius); .material-box-shadow(((@editor-shadow-level + 1) * min(@editor-shadow-level, 1))); background: @tooltip-bg; color: @tooltip-text; font-size: @tooltip-font-size; line-height: @tooltip-line-height; font-family: @font-family; .transition(opacity @transition-timing); .opacity(0); left: -3000px; .user-select(none); z-index: 2147483647; text-rendering: optimizelegibility; .font-smoothing(); &.fr-visible { .opacity(1); } } /***** ui/buttons.less *****/ // Command button. .fr-toolbar, .fr-popup { .fr-btn-wrap { float: left; white-space: nowrap; position: relative; &.fr-hidden { display: none; } } .fr-command.fr-btn { background: transparent; color: @btn-text; -moz-outline: 0; outline: 0; border: 0; line-height: 1; cursor: pointer; text-align: left; margin: 0px @btn-margin; .transition(background @transition-timing); .border-radius(0); z-index: 2; position: relative; .box-sizing(border-box); text-decoration: none; .user-select(none); float: left; padding: 0; width: @btn-width; height: @btn-height; &::-moz-focus-inner { border: 0; padding: 0 } &.fr-btn-text { width: auto; } i, svg { display: block; font-size: @btn-font-size; width: @btn-font-size; margin: ((@btn-height - @btn-font-size) / 2) ((@btn-width - @btn-font-size) / 2); text-align: center; float: none; } // Used for accessibility instead of aria-label. span.fr-sr-only { .hide-by-clipping(); } span { font-size: @ui-font-size; display: block; line-height: (@ui-font-size + 3px); min-width: (@btn-width - 2 * @btn-margin); float: left; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; height: (@btn-font-size + 3px); font-weight: bold; padding: 0 @btn-margin; } img { margin: ((@btn-height - @btn-font-size) / 2) ((@btn-width - @btn-font-size) / 2); width: @btn-font-size; } // Button is active. &.fr-active { color: @btn-active-text; background: @btn-active-bg; } &.fr-dropdown { &.fr-selection { width: auto; span { font-weight: normal; } } i, span, img, svg { margin-left: (((@btn-width - @btn-font-size) / 2) - @dropdown-arrow-width); margin-right: (((@btn-width - @btn-font-size) / 2) + @dropdown-arrow-width); } // Dropdown is visible. &.fr-active { color: @btn-text; background: @btn-selected-bg; &:hover, &:focus { background: @btn-selected-bg !important; color: @btn-selected-text !important; &::after { border-top-color: @btn-selected-text !important; } } } &::after { position: absolute; width: 0; height: 0; border-left: @dropdown-arrow-width solid transparent; border-right: @dropdown-arrow-width solid transparent; border-top: @dropdown-arrow-width solid @btn-text; right: (((@btn-width - @btn-font-size) / 2 - @dropdown-arrow-width) / 2); top: ((@btn-height - @dropdown-arrow-width) / 2); content: ""; } } &.fr-disabled { color: @btn-disabled-color; cursor: default; &::after { border-top-color: @btn-disabled-color !important; } } &.fr-hidden { display: none; } } &.fr-disabled { .fr-btn, .fr-btn.fr-active { color: @btn-disabled-color; &.fr-dropdown::after { border-top-color: @btn-disabled-color; } } } &.fr-rtl { .fr-command.fr-btn, .fr-btn-wrap { float: right; } } } .fr-toolbar.fr-inline { > .fr-command.fr-btn:not(.fr-hidden), > .fr-btn-wrap:not(.fr-hidden) { .display-inline-flex(); float: none; } } .fr-desktop { .fr-command { // Hover. &:hover, &:focus, &.fr-btn-hover, &.fr-expanded { outline: 0; color: @btn-hover-text; background: @btn-hover-bg; &::after { border-top-color: @btn-hover-text !important; } } // Button is selected. &.fr-selected { color: @btn-selected-text; background: @btn-selected-bg; } &.fr-active { &:hover, &:focus, &.fr-btn-hover, &.fr-expanded { color: @btn-active-hover-text; background: @btn-active-hover-bg; } &.fr-selected { color: @btn-active-selected-text; background: @btn-active-selected-bg; } } &.fr-disabled { &:hover, &:focus, &.fr-selected { background: transparent; } } } &.fr-disabled { .fr-command { &:hover, &:focus, &.fr-selected { background: transparent; } } } } .fr-toolbar.fr-mobile, .fr-popup.fr-mobile { .fr-command.fr-blink { background: @btn-active-bg; } } /***** ui/dropdown.less *****/ .fr-command.fr-btn { &.fr-options { width: @dropdown-options-width; margin-left: @dropdown-options-margin-left; &.fr-btn-hover, &:hover, &:focus { border-left: @dropdown-options-border-left; } } + .fr-dropdown-menu { display: inline-block; position: absolute; right: auto; bottom: auto; height: auto; z-index: 4; -webkit-overflow-scrolling: touch; overflow: hidden; zoom: 1; .border-radius(0 0 @border-radius @border-radius); &.test-height { .fr-dropdown-wrapper { .transition(none); height: auto; max-height: @dropdown-max-height; } } .fr-dropdown-wrapper { background: @ui-bg; padding: 0; margin: auto; display: inline-block; text-align: left; position: relative; .box-sizing(border-box); .transition(max-height @transition-timing); margin-top: 0; float: left; max-height: 0; height: 0; margin-top: 0 !important; .fr-dropdown-content { overflow: auto; position: relative; max-height: @dropdown-max-height; ul.fr-dropdown-list { list-style-type: none; margin: 0; padding: 0; li { padding: 0; margin: 0; font-size: 15px; a { padding: 0 24px; line-height: 200%; display: block; cursor: pointer; white-space: nowrap; color: inherit; text-decoration: none; &.fr-active { background: @dropdown-item-active-bg; } &.fr-disabled { color: @btn-disabled-color; cursor: default; } .fr-shortcut { float: right; margin-left: 32px; font-weight: bold; .opacity(0.75); } } } } } } } &:not(.fr-active) { + .fr-dropdown-menu { left: -3000px !important; } } &.fr-active { + .fr-dropdown-menu { display: inline-block; .material-box-shadow(((@editor-shadow-level + 1) * min(@editor-shadow-level, 1))); .fr-dropdown-wrapper { height: auto; max-height: @dropdown-max-height; } } } } .fr-bottom > .fr-command.fr-btn { + .fr-dropdown-menu { .border-radius(@border-radius @border-radius 0 0); .material-box-shadow((@editor-shadow-level + 1) * min(@editor-shadow-level, 1), -1); } } .fr-toolbar, .fr-popup { &.fr-rtl { .fr-dropdown-wrapper { text-align: right !important; } } } /***** ui/modal.less *****/ body.prevent-scroll { overflow: hidden; &.fr-mobile { position: fixed; -webkit-overflow-scrolling: touch; } } .fr-modal { color: @ui-text; font-family: @font-family; position: fixed; overflow-x: auto; overflow-y: scroll; top: 0; left: 0; bottom: 0; right: 0; width: 100%; z-index: 2147483640; text-rendering: optimizelegibility; .font-smoothing(); text-align: center; line-height: 1.2; &.fr-middle { .fr-modal-wrapper { margin-top: 0; margin-bottom: 0; margin-left: auto; margin-right: auto; top: 50%; left: 50%; .transform(translate(-50%, -50%)); position: absolute; } } .fr-modal-wrapper { .border-radius(@border-radius); margin: 20px auto; display: inline-block; background: @modal-bg; min-width: 300px; .material-box-shadow(((@editor-shadow-level + 2) * min(@editor-shadow-level, 1))); border: @editor-border; border-top: @ui-border-top; overflow: hidden; width: 90%; position: relative; @media (min-width: @screen-sm) and (max-width: @screen-sm-max) { margin: 30px auto; width: 70%; } @media (min-width: @screen-md) { margin: 50px auto; width: 960px; } .fr-modal-head { background: @ui-bg; .material-box-shadow(((@editor-shadow-level + 1) * min(@editor-shadow-level, 1))); border-bottom: @editor-border; overflow: hidden; position: absolute; width: 100%; min-height: 42px; z-index: 3; .transition(height @transition-timing); .fr-modal-close { padding: 12px; width: 20px; font-size: 30px; cursor: pointer; line-height: 18px; color: @ui-text; .box-sizing(content-box); position: absolute; top: 0; right: 0; .transition(color @transition-timing); } h4 { font-size: 18px; padding: 12px 10px; margin: 0; font-weight: 400; line-height: 18px; display: inline-block; float: left; } } div.fr-modal-body { height: 100%; min-height: 150px; overflow-y: scroll; padding-bottom: 10px; &:focus { outline: 0; } button.fr-command { height: 36px; line-height: 1; color: @ui-color; padding: 10px; cursor: pointer; text-decoration: none; border: none; background: none; font-size: 16px; outline: none; .transition(background @transition-timing); .border-radius(@border-radius); + button { margin-left: 24px; } &:hover, &:focus { background: @ui-hover-color; color: @ui-color; } &:active { background: @ui-focused-color; color: @ui-color; } } button::-moz-focus-inner { border: 0; } } } } &.fr-desktop .fr-modal-wrapper { .fr-modal-head { i:hover { background: @ui-hover-color; } } } // Overlay that appears with modal. .fr-overlay { position: fixed; top: 0; bottom: 0; left: 0; right: 0; background: @modal-overlay-color; .opacity(0.5); z-index: 2147483639; } /***** ui/popup.less *****/ .fr-popup { position: absolute; display: none; color: @ui-text; background: @ui-bg; .material-box-shadow(@editor-shadow-level); .border-radius(@border-radius); font-family: @font-family; .box-sizing(border-box); .user-select(none); margin-top: 10px; z-index: 2147483635; text-align: left; border: @editor-border; border-top: @ui-border-top; text-rendering: optimizelegibility; .font-smoothing(); line-height: 1.2; .fr-input-focus { background: @ui-hover-light-color; } &.fr-above { margin-top: -10px; border-top: 0; border-bottom: @ui-border-top; .material-box-shadow(@editor-shadow-level, -1); } &.fr-active { display: block; } &.fr-hidden { .opacity(0); } &.fr-empty { display: none !important; } .fr-hs { display: block !important; &.fr-hidden { display: none !important; } } .fr-input-line { position: relative; padding: 8px 0; input[type="text"], textarea { width: 100%; margin: 0px 0 1px 0; border: none; border-bottom: solid 1px @input-border-color; color: @ui-text; font-size: 14px; padding: 6px 0 2px; background: rgba(0, 0, 0, 0); position: relative; z-index: 2; .box-sizing(border-box); &:focus { border-bottom: solid 2px @ui-color; margin-bottom: 0px; } } input + label, textarea + label { position: absolute; top: 0; left: 0; font-size: 12px; color: rgba(0, 0, 0, 0); .transition(color @transition-timing); z-index: 3; width: 100%; display: block; background: @ui-bg; } input.fr-not-empty:focus + label, textarea.fr-not-empty:focus + label { color: @ui-color; } input.fr-not-empty + label, textarea.fr-not-empty + label { color: @input-label-color; } } input, textarea { .user-select(text); .border-radius(0); outline: none; } textarea { resize: none; } .fr-buttons { .clearfix(); .material-box-shadow(@editor-shadow-level); padding: 0 @btn-margin; white-space: nowrap; line-height: 0; border-bottom: @editor-border; .fr-btn { display: inline-block; float: none; i { float: left; } } .fr-separator { display: inline-block; float: none; } } .fr-layer { width: (@popup-layer-width * 0.75); @media (min-width: @screen-sm) { width: @popup-layer-width; } .box-sizing(border-box); margin: 10px; display: none; &.fr-active { display: inline-block; } } .fr-action-buttons { z-index: 7; height: 36px; text-align: right; button.fr-command { height: 36px; line-height: 1; color: @ui-color; padding: 10px; cursor: pointer; text-decoration: none; border: none; background: none; font-size: 16px; outline: none; .transition(background @transition-timing); .border-radius(@border-radius); + button { margin-left: 24px; } &:hover, &:focus { background: @ui-hover-color; color: @ui-color; } &:active { background: @ui-focused-color; color: @ui-color; } } button::-moz-focus-inner { border: 0; } } .fr-checkbox { position: relative; display: inline-block; width: 16px; height: 16px; line-height: 1; .box-sizing(content-box); vertical-align: middle; svg { margin-left: 2px; margin-top: 2px; display: none; width: 10px; height: 10px; } span { border: solid 1px @ui-text; .border-radius(@border-radius); width: 16px; height: 16px; display: inline-block; position: relative; z-index: 1; .box-sizing(border-box); .transition(background @transition-timing, border-color @transition-timing;); } input { position: absolute; z-index: 2; .opacity(0); border: 0 none; cursor: pointer; height: 16px; margin: 0; padding: 0; width: 16px; top: 1px; left: 1px; &:checked + span { background: @ui-color; border-color: @ui-color; svg { display: block; } } &:focus + span { border-color: @ui-color; } } } .fr-checkbox-line { font-size: 14px; line-height: 1.4px; margin-top: 10px; label { cursor: pointer; margin: 0 5px; vertical-align: middle; } } &.fr-rtl { direction: rtl; text-align: right; .fr-action-buttons { text-align: left; } .fr-input-line { input + label, textarea + label { left: auto; right: 0; } } .fr-buttons .fr-separator.fr-vs { float: right; } } .fr-arrow { width: 0; height: 0; border-left: @arrow-size solid transparent; border-right: @arrow-size solid transparent; border-bottom: @arrow-size solid @ui-border-color; position: absolute; top: ((-@arrow-size * 2) + 1); left: 50%; margin-left: (-@arrow-size); display: inline-block; } &.fr-above { .fr-arrow { top: auto; bottom: ((-@arrow-size * 2) + 1); border-bottom: 0; border-top: @arrow-size solid @ui-border-color; } } } /***** ui/text_edit.less *****/ .fr-text-edit-layer { width: 250px; .box-sizing(border-box); display: block !important; } /***** ui/toolbar.less *****/ .fr-toolbar { color: @ui-text; background: @ui-bg; position: relative; z-index: 4; font-family: @font-family; .clearfix(); .box-sizing(border-box); .user-select(none); padding: 0 @btn-margin; .border-radius(@border-radius); .material-box-shadow(@editor-shadow-level); text-align: left; border: @editor-border; border-top: @ui-border-top; text-rendering: optimizelegibility; .font-smoothing(); line-height: 1.2; &.fr-rtl { text-align: right; } &.fr-inline { display: none; white-space: nowrap; position: absolute; margin-top: 10px; .fr-arrow { width: 0; height: 0; border-left: @arrow-size solid transparent; border-right: @arrow-size solid transparent; border-bottom: @arrow-size solid @ui-border-color; position: absolute; top: ((-@arrow-size * 2) + 1); left: 50%; margin-left: (-@arrow-size); display: inline-block; } &.fr-above { margin-top: -10px; .material-box-shadow(@editor-shadow-level, -1); border-bottom: @ui-border-top; border-top: 0; .fr-arrow { top: auto; bottom: ((-@arrow-size * 2) + 1); border-bottom: 0; border-top-color: inherit; border-top-style: solid; border-top-width: @arrow-size; } } } &.fr-top { top: 0; .border-radius(@border-radius @border-radius 0 0); .material-box-shadow(@editor-shadow-level); } &.fr-bottom { bottom: 0; .border-radius(0 0 @border-radius @border-radius); .material-box-shadow(@editor-shadow-level); } } .fr-separator { background: @separator-color; display: block; vertical-align: top; float: left; + .fr-separator { display: none; } &.fr-vs { height: (@btn-height - 2 * @btn-margin); width: @separator-size; margin: @btn-margin; } &.fr-hs { clear: both; height: @separator-size; width: calc(100% - (2 * @btn-margin)); margin: 0 @btn-margin; } &.fr-hidden { display: none !important; } } .fr-rtl .fr-separator { float: right; } .fr-toolbar.fr-inline .fr-separator.fr-hs { float: none; } .fr-toolbar.fr-inline .fr-separator.fr-vs { float: none; display: inline-block; } /***** helpers.less *****/ .fr-visibility-helper { display: none; margin-left: 0px !important; @media (min-width: @screen-sm) { margin-left: 1px !important; } @media (min-width: @screen-md) { margin-left: 2px !important; } @media (min-width: @screen-lg) { margin-left: 3px !important; } } .fr-opacity-0 { .opacity(0); } .fr-box { position: relative; } /** * Postion sticky hacks. */ .fr-sticky { position: -webkit-sticky; position: -moz-sticky; position: -ms-sticky; position: -o-sticky; position: sticky; } .fr-sticky-off { position: relative; } .fr-sticky-on { position: fixed; &.fr-sticky-ios { position: absolute; left: 0; right: 0; width: auto !important; } } .fr-sticky-dummy { display: none; } .fr-sticky-on + .fr-sticky-dummy, .fr-sticky-box > .fr-sticky-dummy { display: block; } // Used for accessibility instead of aria-label. span.fr-sr-only { .hide-by-clipping(); } /***** plugins/colors.less *****/ .fr-popup { .fr-colors-tabs { .material-box-shadow(@editor-shadow-level); margin-bottom: 5px; line-height: 16px; margin-left: -2px; margin-right: -2px; .fr-colors-tab { display: inline-block; width: 50%; cursor: pointer; text-align: center; color: @ui-text; font-size: 13px; padding: 8px 0; position: relative; &:hover, &:focus { color: @ui-color; } &[data-param1="background"]::after { position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; background: @ui-color; content: ''; .transition(transform @transition-timing); } &.fr-selected-tab { color: @ui-color; &[data-param1="text"] ~ [data-param1="background"]::after { .transform(translate3d(-100%,0,0)); } } } } .fr-color-hex-layer { width: 100%; margin: 0px; padding: 10px; .fr-input-line { float: left; width: calc(100% - 50px); padding: 8px 0 0; } .fr-action-buttons { float: right; width: 50px; } .fr-action-buttons { button.fr-command { background-color: @ui-color; color: #FFF !important; .border-radius(@border-radius); font-size: 13px; height: 32px; &:hover { background-color: darken(@ui-color, 10%); color: #FFF; } } } } .fr-separator + .fr-colors-tabs { .material-box-shadow(0, 0); margin-left: 2px; margin-right: 2px; } .fr-color-set { line-height: 0; display: none; &.fr-selected-set { display: block; } > span { display: inline-block; width: 32px; height: 32px; position: relative; z-index: 1; > i, > svg { text-align: center; line-height: 32px; height: 32px; width: 32px; font-size: 13px; position: absolute; bottom: 0; cursor: default; left: 0; } .fr-selected-color { color: @white; font-family: FontAwesome; font-size: 13px; font-weight: 400; line-height: 32px; position: absolute; top: 0; bottom: 0; right: 0; left: 0; text-align: center; cursor: default; } &:hover, &:focus { outline: 1px solid @ui-text; z-index: 2; } } } } .fr-rtl .fr-popup { .fr-colors-tabs { .fr-colors-tab { &.fr-selected-tab { &[data-param1="text"] ~ [data-param1="background"]::after { .transform(translate3d(100%,0,0)); } } } } } /***** plugins/draggable.less *****/ .fr-drag-helper { background: @drag-helper-bg; height: 2px; margin-top: -1px; .opacity(0.2); position: absolute; z-index: 2147483640; display: none; &.fr-visible { display: block; } } .fr-dragging { .opacity(0.4); } /***** plugins/file.less *****/ .fr-popup { .fr-file-upload-layer { border: dashed 2px @ui-disabled-color; padding: 25px 0; position: relative; font-size: 14px; letter-spacing: 1px; line-height: 140%; .box-sizing(border-box); text-align: center; &:hover { background: @ui-hover-color; } &.fr-drop { background: @ui-hover-color; border-color: @ui-color; } .fr-form { .opacity(0); position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: 2147483640; overflow: hidden; margin: 0 !important; padding: 0 !important; width: 100% !important; input { cursor: pointer; position: absolute; right: 0px; top: 0px; bottom: 0px; width: 500%; height: 100%; margin: 0px; font-size: 400px; } } } .fr-file-progress-bar-layer { .box-sizing(border-box); > h3 { font-size: 16px; margin: 10px 0; font-weight: normal; } > div.fr-action-buttons { display: none; } > div.fr-loader { background: mix(@white, @ui-color, 70%); height: 10px; width: 100%; margin-top: 20px; overflow: hidden; position: relative; span { display: block; height: 100%; width: 0%; background: @ui-color; .transition(width @transition-timing); } &.fr-indeterminate { span { width: 30% !important; position: absolute; top: 0; .animation(loading 2s linear infinite); } } } &.fr-error { > div.fr-loader { display: none; } > div.fr-action-buttons { display: block; } } } } @keyframes loading { from {left: -25%;} to {left: 100%} } @-webkit-keyframes loading { from {left: -25%;} to {left: 100%} } @-moz-keyframes loading { from {left: -25%;} to {left: 100%} } @-o-keyframes loading { from {left: -25%;} to {left: 100%} } /***** plugins/image.less *****/ .fr-element img { cursor: pointer; } .fr-image-resizer { position: absolute; border: solid 1px @ui-color; display: none; .user-select(none); .box-sizing(content-box); &.fr-active { display: block; } .fr-handler { display: block; position: absolute; background: @ui-color; border: solid 1px @white; z-index: 4; .box-sizing(border-box); &.fr-hnw { cursor: nw-resize; } &.fr-hne { cursor: ne-resize; } &.fr-hsw { cursor: sw-resize; } &.fr-hse { cursor: se-resize; } } .handler-size(@handler-size); @media(min-width: @screen-lg) { .handler-size(@handler-size-lg); } } .fr-image-overlay { position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 2147483640; display: none; } .fr-popup { .fr-image-upload-layer { border: dashed 2px @ui-disabled-color; padding: 25px 0; position: relative; font-size: 14px; letter-spacing: 1px; line-height: 140%; text-align: center; &:hover { background: @ui-hover-color; } &.fr-drop { background: @ui-hover-color; border-color: @ui-color; } .fr-form { .opacity(0); position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: 2147483640; overflow: hidden; margin: 0 !important; padding: 0 !important; width: 100% !important; input { cursor: pointer; position: absolute; right: 0px; top: 0px; bottom: 0px; width: 500%; height: 100%; margin: 0px; font-size: 400px; } } } .fr-image-progress-bar-layer { > h3 { font-size: 16px; margin: 10px 0; font-weight: normal; } > div.fr-action-buttons { display: none; } > div.fr-loader { background: mix(@white, @ui-color, 70%); height: 10px; width: 100%; margin-top: 20px; overflow: hidden; position: relative; span { display: block; height: 100%; width: 0%; background: @ui-color; .transition(width @transition-timing); } &.fr-indeterminate { span { width: 30% !important; position: absolute; top: 0; .animation(loading 2s linear infinite); } } } &.fr-error { > div.fr-loader { display: none; } > div.fr-action-buttons { display: block; } } } } .fr-image-size-layer { .fr-image-group { .fr-input-line { width: calc(50% - 5px); display: inline-block; + .fr-input-line { margin-left: 10px; } } } } .fr-uploading { .opacity(0.4); } @keyframes loading { from {left: -25%;} to {left: 100%} } @-webkit-keyframes loading { from {left: -25%;} to {left: 100%} } @-moz-keyframes loading { from {left: -25%;} to {left: 100%} } @-o-keyframes loading { from {left: -25%;} to {left: 100%} } /***** plugins/table.less *****/ .fr-element { table { td.fr-selected-cell, th.fr-selected-cell { border: 1px double @ui-color; } // Prevent Firefox selection. tr { .user-select(none); } td, th { .user-select(text); } } // Prevent Firefox selection. .fr-no-selection { table { td, th { .user-select(none); } } } } .fr-table-resizer { cursor: col-resize; position: absolute; z-index: 3; display: none; &.fr-moving { z-index: 2; } div { .opacity(0); border-right: @table-resizer; } } .fr-no-selection { .user-select(none); } // Table popups. .fr-popup { .fr-table-colors-hex-layer { width: 100%; margin: 0px; padding: 10px; .fr-input-line { float: left; width: calc(100% - 50px); padding: 8px 0 0; } .fr-action-buttons { float: right; width: 50px; } .fr-action-buttons { button { background-color: @ui-color; color: #FFF; .border-radius(@border-radius); font-size: 13px; height: 32px; &:hover { background-color: darken(@ui-color, 10%); color: #FFF; } } } } // Insert table. .fr-table-size { .fr-table-size-info { text-align: center; font-size: 14px; padding: 8px; } .fr-select-table-size { line-height: 0; padding: 0 5px 5px; white-space: nowrap; > span { display: inline-block; padding: 0px 4px 4px 0; background: transparent; > span { display: inline-block; width: 18px; height: 18px; border: @insert-table-grid; } &.hover { background: transparent; > span { background: rgba(red(@ui-color), green(@ui-color), blue(@ui-color), 0.3); border: solid 1px @xf-uix_primaryColor; } } } .new-line { .clearfix(); } } } &.fr-above { .fr-table-size { .fr-select-table-size { > span { display: inline-block !important; } } } } // Table colors. .fr-table-colors-buttons { margin-bottom: 5px; } .fr-table-colors { line-height: 0; display: block; > span { display: inline-block; width: 32px; height: 32px; position: relative; z-index: 1; > i { text-align: center; line-height: 32px; height: 32px; width: 32px; font-size: 13px; position: absolute; bottom: 0; cursor: default; left: 0; } &:focus { outline: 1px solid @ui-text; z-index: 2; } } } } .fr-popup.fr-desktop .fr-table-size .fr-select-table-size > span > span { width: 12px; height: 12px; } .fr-insert-helper { position: absolute; z-index: 9999; white-space: nowrap; } /***** plugins/video.less *****/ .fr-element { .fr-video { .user-select(none); &::after { position: absolute; content: ''; z-index: 1; top: 0; left: 0; right: 0; bottom: 0; cursor: pointer; display: block; background: rgba(0,0,0,0); } &.fr-active > * { z-index: 2; position: relative; } > * { .box-sizing(content-box); max-width: 100%; border: none; } } } .fr-box .fr-video-resizer { position: absolute; border: solid 1px @ui-color; display: none; .user-select(none); &.fr-active { display: block; } .fr-handler { display: block; position: absolute; background: @ui-color; border: solid 1px @white; z-index: 4; .box-sizing(border-box); &.fr-hnw { cursor: nw-resize; } &.fr-hne { cursor: ne-resize; } &.fr-hsw { cursor: sw-resize; } &.fr-hse { cursor: se-resize; } } .handler-size(@handler-size); @media(min-width: @screen-lg) { .handler-size(@handler-size-lg); } } .fr-popup { .fr-video-size-layer { .fr-video-group { .fr-input-line { width: calc(50% - 5px); display: inline-block; + .fr-input-line { margin-left: 10px; } } } } .fr-video-upload-layer { border: dashed 2px @ui-disabled-color; padding: 25px 0; position: relative; font-size: 14px; letter-spacing: 1px; line-height: 140%; text-align: center; &:hover { background: @ui-hover-color; } &.fr-drop { background: @ui-hover-color; border-color: @ui-color; } .fr-form { .opacity(0); position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: 2147483640; overflow: hidden; margin: 0 !important; padding: 0 !important; width: 100% !important; input { cursor: pointer; position: absolute; right: 0px; top: 0px; bottom: 0px; width: 500%; height: 100%; margin: 0px; font-size: 400px; } } } .fr-video-progress-bar-layer { > h3 { font-size: 16px; margin: 10px 0; font-weight: normal; } > div.fr-action-buttons { display: none; } > div.fr-loader { background: mix(@white, @ui-color, 70%); height: 10px; width: 100%; margin-top: 20px; overflow: hidden; position: relative; span { display: block; height: 100%; width: 0%; background: @ui-color; .transition(width @transition-timing); } &.fr-indeterminate { span { width: 30% !important; position: absolute; top: 0; .animation(loading 2s linear infinite); } } } &.fr-error { > div.fr-loader { display: none; } > div.fr-action-buttons { display: block; } } } } .fr-video-overlay { position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 2147483640; display: none; } /* Files: froala.less, plugins/colors.less, plugins/draggable.less, plugins/file.less, plugins/image.less, plugins/table.less, plugins/video.less */]]>

</template>


-<template title="find_threads_list" version_string="2.1.0 Beta 5" version_id="2010035" addon_id="XF" type="public">

<![CDATA[<xf:if is="$pageSelected == 'started'"> <xf:title page="{$page}">{{ phrase('threads_started_by_x', {'username': $user.username}) }}</xf:title> <xf:elseif is="$pageSelected == 'contributed'" /> <xf:title page="{$page}">{{ phrase('threads_with_posts_by_x', {'username': $user.username}) }}</xf:title> <xf:else /> <xf:title page="{$page}">{{ phrase('threads_with_no_replies') }}</xf:title> <xf:head option="metaNoindex"><meta name="robots" content="noindex" /></xf:head> </xf:if> <xf:macro name="navigation" arg-pageSelected="{$pageSelected}" /> <xf:if is="$threads is not empty"> <xf:if is="$canInlineMod"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <div class="block" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="thread" data-href="{{ link('inline-mod') }}"> <xf:if contentcheck="true"> <div class="block-outer"> <xf:contentcheck> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="find-threads/{$pageSelected}" wrapperclass="block-outer-main" /> <xf:if is="$canInlineMod"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:macro template="inline_mod_macros" name="button" /> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <div class="block-container"> <div class="block-body"> <div class="structItemContainer"> <xf:foreach loop="$threads" value="$thread"> <xf:set var="$extra" value=""/> <xf:macro template="thread_list_macros" name="item" arg-thread="{$thread}" arg-allowEdit_xxx="{{ false }}" /> </xf:foreach> </div> </div> </div> <xf:if contentcheck="true"> <xf:contentcheck> <xf:pagenav link="find-threads/{$pageSelected}" page="{$page}" perpage="{$perPage}" total="{$total}" wrapperclass="block-outer block-outer--after" /> </xf:contentcheck> </xf:if> </div> <xf:else /> <div class="blockMessage">{{ phrase('there_no_threads_to_display') }}</div> </xf:if> <xf:macro name="navigation" arg-pageSelected="!"> <xf:if is="property('findThreadsNavStyle') == 'tabs'"> <div class="tabs tabs--standalone"> <div class="hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <xf:macro name="links" arg-pageSelected="{$pageSelected}" arg-baseClass="tabs-tab" arg-selectedClass="is-active" /> </span> </div> </div> <xf:else /> <xf:sidenav> <div class="block"> <div class="block-container"> <h3 class="block-header">{{ phrase('thread_lists') }}</h3> <div class="block-body"> <xf:macro name="links" arg-pageSelected="{$pageSelected}" arg-baseClass="blockLink" arg-selectedClass="is-selected" /> </div> </div> </div> <xf:widgetpos id="find_threads_sidenav" /> </xf:sidenav> <xf:page option="sideNavTitle">{{ phrase('thread_lists') }}</xf:page> </xf:if> </xf:macro> <xf:macro name="links" arg-pageSelected="!" arg-baseClass="!" arg-selectedClass="!"> <a class="{$baseClass} {{ $pageSelected == 'started' ? {$selectedClass} : '' }}" href="{{ link('find-threads/started') }}" rel="nofollow">{{ phrase('your_threads') }}</a> <a class="{$baseClass} {{ $pageSelected == 'contributed' ? {$selectedClass} : '' }}" href="{{ link('find-threads/contributed') }}" rel="nofollow">{{ phrase('threads_with_your_posts') }}</a> <a class="{$baseClass} {{ $pageSelected == 'unanswered' ? {$selectedClass} : '' }}" href="{{ link('find-threads/unanswered') }}" rel="nofollow">{{ phrase('unanswered_threads') }}</a> <a class="{$baseClass} {{ $pageSelected == 'watched' ? {$selectedClass} : '' }}" href="{{ link('watched/threads') }}" rel="nofollow">{{ phrase('watched_threads') }}</a> </xf:macro>]]>

</template>


-<template title="forum_list" version_string="2.1.0 Beta 5" version_id="2010035" addon_id="XF" type="public">

<![CDATA[<xf:h1>{{ phrase('forum_list') }}</xf:h1> <xf:if is="{$xf.options.forumsDefaultPage} != 'forums'"> <xf:title>{{ phrase('forum_list') }}</xf:title> </xf:if> <xf:page option="uix_mainTabSets" value="forum" /> <xf:page option="uix_mainTabActive" value="forum_list" /> <xf:macro template="metadata_macros" name="metadata" arg-description="{$xf.options.boardDescription}" arg-canonicalUrl="{{ link('canonical:' . $selfRoute) }}" /> <xf:wrap template="forum_overview_wrapper"> <xf:set var="$pageSelected">forums</xf:set> </xf:wrap> <xf:widgetpos id="forum_list_sidebar" position="sidebar" /> <xf:widgetpos id="forum_list_above_nodes" /> <div class="uix_nodeList block"> <xf:macro name="node_list" arg-children="{$nodeTree}" arg-extras="{$nodeExtras}" /> </div> <xf:widgetpos id="forum_list_below_nodes" /> <xf:head option="rss_forum"><link rel="alternate" type="application/rss+xml" title="{{ phrase('rss_feed_for_x', {'title': $xf.options.boardTitle})|for_attr }}" href="{{ link('forums/index.rss', '-') }}" /></xf:head> <xf:macro name="node_list_entry" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <xf:css src="node_list.less" /> <xf:set var="$nodeTemplate" value="{{ $node.getNodeTemplateRenderer($depth) }}" /> <xf:if is="$nodeTemplate.macro"> <xf:macro template="{$nodeTemplate.template}" name="{$nodeTemplate.macro}" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> <xf:elseif is="{$nodeTemplate.template}" /> <xf:include template="{$nodeTemplate.template}" /> </xf:if> </xf:macro> <xf:macro name="node_list" arg-children="!" arg-extras="!" arg-depth="1"> <xf:css src="node_list.less" /> <xf:foreach loop="$children" key="$id" value="$child"> <xf:macro name="node_list_entry" arg-node="{$child.record}" arg-extras="{$extras.{$id}}" arg-children="{$child.children}" arg-childExtras="{$extras}" arg-depth="{$depth}" /> </xf:foreach> </xf:macro> <xf:macro name="sub_node_list" arg-children="!" arg-childExtras="!" arg-depth="3"> <xf:if contentcheck="true"> <ol> <xf:contentcheck> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:contentcheck> </ol> </xf:if> </xf:macro> <xf:macro name="sub_nodes_flat" arg-children="!" arg-childExtras="!" arg-depth="3"> <xf:css src="node_list.less" /> <xf:if contentcheck="true"> <div class="node-subNodesFlat"> <span class="node-subNodesLabel">{{ phrase('sub_forums:') }}</span> <ol class="node-subNodeFlatList"> <xf:contentcheck> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:contentcheck> </ol> </div> </xf:if> </xf:macro> <xf:macro name="sub_nodes_menu" arg-children="!" arg-childExtras="!" arg-depth="3"> <xf:css src="node_list.less" /> <xf:if contentcheck="true"> <div class="node-subNodeMenu"> <a class="menuTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true"> <span>{{ phrase('sub_forums') }}</span> <xf:fa icon="fa-folder" class=" uix_icon uix_icon--folder" /> </a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('sub_forums') }}</h4> <ol class="subNodeMenu"> <xf:contentcheck> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:contentcheck> </ol> </div> </div> </div> </xf:if> </xf:macro>]]>

</template>


-<template title="forum_new_posts" version_string="2.0.6" version_id="2000670" addon_id="XF" type="public">

<![CDATA[<xf:h1>{{ phrase('new_posts') }}</xf:h1> <xf:if is="{$xf.options.forumsDefaultPage} != 'new_posts'"> <xf:title page="{$page}">{{ phrase('new_posts') }}</xf:title> </xf:if> <xf:page option="uix_mainTabSets" value="forum" /> <xf:page option="uix_mainTabActive" value="new_posts" /> <xf:macro template="metadata_macros" name="metadata" arg-description="{$xf.options.boardDescription}" /> <xf:if is="$page > 1 OR $originalFindNewId"> <xf:head option="metaNoindex"><meta name="robots" content="noindex" /></xf:head> </xf:if> <xf:if is="$page <= 1"> <xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:' . $selfRoute) }}" /> </xf:if> <xf:wrap template="forum_overview_wrapper"> <xf:set var="$pageSelected">new_posts</xf:set> </xf:wrap> <xf:widgetpos id="forum_new_posts_sidebar" position="sidebar" /> <xf:if is="$canInlineMod"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <div class="block" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="thread" data-href="{{ link('inline-mod') }}"> <xf:comment> <xf:if is="$findNew.result_count"> <div class="block-outer"><xf:trim> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$findNew.result_count}" link="forums/new-posts" params="{{ {'f': $findNew.find_new_id} }}" wrapperclass="block-outer-main" /> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:macro template="whats_new_posts" name="buttons" arg-findNew="{$findNew}" arg-canInlineMod="{$canInlineMod}" /> </xf:contentcheck> </div> </div> </xf:if> </xf:trim></div> </xf:if> </xf:comment> <div class="block-container"> <xf:macro template="whats_new_posts" name="filter_bar" arg-findNew="{$findNew}" arg-rerunRoute="forums/new-posts" arg-rerunQuery="{{ {'f': $findNew.find_new_id} }}" arg-filterRoute="forums/new-posts" /> <xf:macro template="whats_new_posts" name="results" arg-findNew="{$findNew}" arg-threads="{$threads}" arg-latestRoute="forums/new-posts" /> </div> <xf:if is="$findNew.result_count"> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$findNew.result_count}" link="forums/new-posts" params="{{ {'f': $findNew.find_new_id} }}" wrapperclass="block-outer-main" /> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:macro template="whats_new_posts" name="buttons" arg-findNew="{$findNew}" arg-canInlineMod="{$canInlineMod}" /> </xf:contentcheck> </div> </div> </xf:if> <xf:showignored wrapperclass="block-outer-opposite" /> </div> </xf:if> </div>]]>

</template>


-<template title="forum_overview_wrapper" version_string="2.1.0 Beta 3" version_id="2010033" addon_id="XF" type="public">

<![CDATA[<xf:ad position="forum_overview_top" /> <xf:widgetpos id="forum_overview_top" /> <xf:if is="{{ property('uix_removeIndexPageTitle')}}"> <xf:page option="uix_hidePageTitle">1</xf:page> </xf:if> <xf:pageaction> <xf:if is="!property('uix_removeWhatsNewButtons')"> <xf:if is="$pageSelected == 'new_posts' "> <xf:button href="{{ link('forums/list') }}" icon="list"> {{ phrase('forum_list') }} </xf:button> <xf:else /> <xf:button href="{{ $xf.options.forumsDefaultPage == 'new_posts' ? link('forums/new-posts') : link('whats-new/posts') }}" icon="bolt"> {{ phrase('new_posts') }} </xf:button> </xf:if> </xf:if> <xf:if is="$xf.visitor.canCreateThread()"> <xf:button href="{{ link('forums/create-thread') }}" class="button--cta" icon="write" overlay="true"> {{ phrase('post_thread...') }} </xf:button> </xf:if> </xf:pageaction> {$innerContent|raw} <xf:ad position="forum_overview_bottom" /> <xf:widgetpos id="forum_overview_bottom" />]]>

</template>


-<template title="forum_view" version_string="2.1.7" version_id="2010770" addon_id="XF" type="public">

<![CDATA[<xf:title page="{$page}">{$forum.Node.title}</xf:title> <xf:description>{$forum.Node.description|raw}</xf:description> <xf:css src="structured_list.less" /> <xf:page option="uix_mainTabSets" value="forum" /> <xf:page option="uix_mainTabActive" value="forum_list" /> <xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:forums', $forum, $canonicalFilters + {'page': $page}) }}" /> <xf:head option="rss_forum"><link rel="alternate" type="application/rss+xml" title="{{ phrase('rss_feed_for_x', {'title': $forum.title})|for_attr }}" href="{{ link('forums/index.rss', $forum) }}" /></xf:head> <xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" /> <xf:breadcrumb source="$forum.getBreadcrumbs(false)" /> <xf:pageaction if="$forum.canCreateThread()"> <xf:button href="{{ link('forums/post-thread', $forum) }}" class="button--cta uix_quickPost--button" icon="write"> {{ phrase('post_thread') }} </xf:button> </xf:pageaction> <xf:if is="$pendingApproval"> <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div> </xf:if> <xf:if is="$nodeTree"> <xf:ad position="forum_view_above_node_list" arg-forum="{$forum}" /> <div class="block uix_nodeList block"> <div class="block-container"> <div class="block-body"> <xf:macro template="forum_list" name="node_list" arg-children="{$nodeTree}" arg-extras="{$nodeExtras}" arg-depth="2" /> </div> </div> </div> <xf:ad position="forum_view_below_node_list" arg-forum="{$forum}" /> </xf:if> <xf:if is="$canInlineMod"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <xf:ad position="forum_view_above_thread_list" arg-forum="{$forum}" /> <div class="block" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="thread" data-href="{{ link('inline-mod') }}"> <div class="block-outer"><xf:trim> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="forums" data="{$forum}" params="{$filters}" wrapperclass="block-outer-main" /> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$canInlineMod"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> <xf:if is="$xf.visitor.user_id"> <xf:button href="{{ link('forums/mark-read', $forum, {'date': $xf.time}) }}" class="button--link" overlay="true"> {{ phrase('mark_read') }} </xf:button> </xf:if> <xf:if is="$forum.canWatch()"> <xf:button href="{{ link('forums/watch', $forum) }}" class="button--link" data-xf-click="switch-overlay" data-sk-watch="{{ phrase('watch') }}" data-sk-unwatch="{{ phrase('unwatch') }}"> <xf:if is="{$forum.Watch.{$xf.visitor.user_id}}">{{ phrase('unwatch') }}<xf:else />{{ phrase('watch') }}</xf:if> </xf:button> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:trim></div> <xf:set var="$dateLimits" value="{{ { '-1': phrase('any_time'), '7': phrase('x_days', {'days': '7'}), '14': phrase('x_days', {'days': '14'}), '30': phrase('x_days', {'days': '30'}), '60': phrase('x_months', {'months': '2'}), '90': phrase('x_months', {'months': '3'}), '182': phrase('x_months', {'months': '6'}), '365': phrase('1_year') } }}" /> <xf:set var="$sortOrders" value="{{ { 'last_post_date': phrase('last_message'), 'post_date': phrase('first_message'), 'title': phrase('title'), 'reply_count': phrase('replies'), 'view_count': phrase('views'), 'first_post_reaction_score': phrase('first_message_reaction_score') } }}" /> <div class="block-container uix_discussionList"> <div class="block-filterBar"> <div class="filterBar"> <xf:if contentcheck="true"> <ul class="filterBar-filters"> <xf:contentcheck> <xf:if is="$filters.prefix_id"> <li><a href="{{ link('forums', $forum, $filters|replace('prefix_id', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('prefix:') }}</span> {{ prefix_title('thread', $filters.prefix_id) }}</a></li> </xf:if> <xf:if is="$filters.starter_id AND $starterFilter"> <li><a href="{{ link('forums', $forum, $filters|replace('starter_id', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('started_by:') }}</span> {$starterFilter.username}</a></li> </xf:if> <xf:if is="$filters.last_days AND {$dateLimits.{$filters.last_days}}"> <li><a href="{{ link('forums', $forum, $filters|replace('last_days', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('last_updated:') }}</span> {$dateLimits.{$filters.last_days}}</a></li> </xf:if> <xf:if is="$filters.order AND {$sortOrders.{$filters.order}}"> <li><a href="{{ link('forums', $forum, $filters|replace({'order': null, 'direction': null})) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('return_to_default_order')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('sort_by:') }}</span> {$sortOrders.{$filters.order}} <xf:fa icon="{{ $filters.direction == 'asc' ? 'fa-angle-up' : 'fa-angle-down' }}" /> <span class="u-srOnly"><xf:if is="$filters.direction == 'asc'">{{ phrase('ascending') }}<xf:else />{{ phrase('descending') }}</xf:if></span> </a></li> </xf:if> </xf:contentcheck> </ul> </xf:if> <a class="filterBar-menuTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('filters') }}</a> <div class="menu menu--wide" data-menu="menu" aria-hidden="true" data-href="{{ link('forums/filters', $forum, $filters) }}" data-load-target=".js-filterMenuBody"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('show_only:') }}</h4> <div class="js-filterMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> </div> </div> </div> </div> <xf:set var="$qtPos">{{ ($sortInfo.order == 'last_post_date' && $sortInfo.direction == 'asc') ? 'bottom' : 'top' }}</xf:set> <div class="block-body"> <div class="structItemContainer"> <xf:macro template="thread_list_macros" name="quick_thread" arg-forum="{$forum}" arg-page="{$page}" arg-order="{$sortInfo.order}" arg-direction="{$sortInfo.direction}" /> <xf:if is="$stickyThreads is not empty OR $threads is not empty"> <xf:if is="$stickyThreads is not empty"> <xf:if is="{{ property('uix_separateThreads') }} && $stickyThreads is not empty AND $threads is not empty"> <h3 class="block-minorHeader uix_threadListSeparator"> {{ phrase('th_sticky_threads') }} <xf:if is="{{ property('uix_collapsibleStickyThreads') }}"> <span class="uix_threadCollapseTrigger {{ !is_toggled('thuixfst-'.$forum.node_id) ? 'is-active' : '' }}" data-xf-click="toggle" data-target="< :up :next" data-xf-init="toggle-storage" data-storage-key="thuixfst-{$forum.node_id}"> <xf:fa icon="fa-chevron-down" class="uix_icon uix_icon--chevron-down" /> </span> </xf:if> </h3> </xf:if> <div class="uix_stickyContainerOuter {{ !is_toggled('thuixfst-'.$forum.node_id) ? 'is-active' : '' }}"> <div class="uix_stickyContainerInner"> <div class="structItemContainer-group structItemContainer-group--sticky"> <xf:foreach loop="$stickyThreads" value="$thread"> <xf:macro template="thread_list_macros" name="item" arg-thread="{$thread}" arg-forum="{$forum}" /> </xf:foreach> </div> </div> </div> <xf:ad position="forum_view_below_stickies" arg-forum="{$forum}" /> </xf:if> <xf:if is="{{ property('uix_separateThreads') }} && $stickyThreads is not empty AND $threads is not empty"> <h3 class="block-minorHeader uix_threadListSeparator">{{ phrase('th_normal_threads') }}</h3> </xf:if> <div class="structItemContainer-group js-threadList"> <xf:if is="$threads is not empty"> <xf:foreach loop="$threads" value="$thread"> <xf:macro template="thread_list_macros" name="item" arg-thread="{$thread}" arg-forum="{$forum}" /> </xf:foreach> <xf:if is="$showDateLimitDisabler"> <div class="structItem structItem--note"> <div class="structItem-cell"> <a href="{{ link('forums', $forum, {'page': $page, 'no_date_limit': 1} + $filters) }}"> {{ phrase('show_older_items') }} </a> </div> </div> </xf:if> </xf:if> </div> <xf:elseif is="$filters" /> <div class="structItemContainer-group js-threadList"> <div class="structItem js-emptyThreadList"> <div class="structItem-cell">{{ phrase('there_no_threads_matching_your_filters') }}</div> </div> </div> <xf:else /> <div class="structItemContainer-group js-threadList"> <div class="structItem js-emptyThreadList"> <div class="structItem-cell">{{ phrase('there_no_threads_in_this_forum') }}</div> </div> </div> </xf:if> </div> </div> </div> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="forums" data="{$forum}" params="{$filters}" wrapperclass="block-outer-main" /> <xf:showignored wrapperclass="block-outer-opposite" /> <xf:if is="!$forum.canCreateThread()"> <div class="block-outer-opposite"> <xf:if is="$xf.visitor.user_id"> <span class="button is-disabled"> {{ phrase('no_permission_to_post') }} <!-- this is not interactive so shouldn't be a button element --> </span> <xf:else /> <xf:button href="{{ link('login') }}" class="button--link button--wrap" overlay="true"> {{ phrase('log_in_or_register_to_post') }} </xf:button> </xf:if> </div> </xf:if> </div> </div> <xf:ad position="forum_view_below_thread_list" arg-forum="{$forum}" /> <xf:widgetpos id="forum_view_sidebar" context-forum="{$forum}" position="sidebar" />]]>

</template>


-<template title="helper_js_global" version_string="2.1.6" version_id="2010570" addon_id="XF" type="public">

<![CDATA[<xf:macro name="head" arg-app="!"> <xf:set var="$cssUrls" value="{{ ['public:normalize.css', 'public:core.less', $app . ':app.less'] }}" /> <xf:include template="font_awesome_setup" /> <xf:if is="is_addon_active('ThemeHouse/UIX') && is_addon_active('ThemeHouse/UIX') >= 2000490"> <xf:set var="$cssUrls" value="{{ uix_extra_css_urls($cssUrls) }}" /> </xf:if> <link rel="stylesheet" href="{{ css_url($cssUrls) }}" /> <xf:if is="{{property('uix_iconFontFamily')}} == 'material'"> <xf:if is="{{ property('uix_localMaterialIcons')}}"> <link rel="stylesheet" href="{{ base_url(property('uix_imagePath')) }}/fonts/icons/material-icons/css/materialdesignicons.min.css" /> <xf:else /> <link rel="stylesheet" href="//cdn.materialdesignicons.com/4.4.95/css/materialdesignicons.min.css"> </xf:if> </xf:if> <!--XF:CSS--> <xf:if is="property('uix_googleFonts')"> <link href='//fonts.googleapis.com/css?family={{ property('uix_googleFonts') }}' rel='stylesheet' type='text/css'> </xf:if> <xf:if is="$xf.fullJs"> <script src="{{ js_url('xf/preamble.js') }}"></script> <xf:else /> <script src="{{ js_url('xf/preamble.min.js') }}"></script> </xf:if> <meta name="apple-mobile-web-app-capable" content="yes"> </xf:macro> <xf:macro name="body" arg-app="!" arg-jsState="{{ null }}"> <xf:corejs /> <!--XF:JS--> <xf:if is="property('uix_buttonRipple')"><xf:js src="themehouse/{{property('uix_jsPath')}}/ripple.js" min="themehouse/{{property('uix_jsPath')}}/ripple.min.js" /></xf:if> <xf:include template="uix_js" /> <xf:if is="property('uix_parallax')"> <xf:js src="themehouse/{{property('uix_jsPath')}}/vendor/parallax/parallax.js" min="themehouse/uix/vendor/parallax/parallax.min.js" /> </xf:if> <xf:js src="themehouse/{{property('uix_jsPath')}}/vendor/hover-intent/jquery.hoverIntent.js" min="themehouse/uix/vendor/hover-intent/jquery.hoverIntent.min.js" /> <xf:if is="property('uix_backstretch')"> <xf:js src="themehouse/{{property('uix_jsPath')}}/vendor/backstretch/jquery.backstretch.js" min="themehouse/uix/vendor/backstretch/jquery.backstretch.min.js" /> </xf:if> <script> jQuery.extend(true, XF.config, { // <!--[XF:js_global:xf_extend_start]--> userId: {$xf.visitor.user_id}, enablePush: {{ $xf.options.enablePush ? 'true' : 'false' }}, pushAppServerKey: '{$xf.options.pushKeysVAPID.publicKey}', url: { fullBase: '{{ base_url(null, true)|escape("js") }}', basePath: '{{ base_url(null, false)|escape("js") }}', css: '{{ css_url(["__SENTINEL__"], false)|escape("js") }}', keepAlive: '{{ link_type($app, "login/keep-alive")|escape("js") }}' }, cookie: { path: '{{ $xf.cookie.path|escape("js") }}', domain: '{{ $xf.cookie.domain|escape("js") }}', prefix: '{{ $xf.cookie.prefix|escape("js") }}', secure: {{ $xf.cookie.secure ? 'true' : 'false' }} }, csrf: '{{ csrf_token()|escape("js") }}', js: {'<!--XF:JS:JSON-->'}, css: {'<!--XF:CSS:JSON-->'}, time: { now: {$xf.time}, today: {$xf.timeDetails.today}, todayDow: {$xf.timeDetails.todayDow}, tomorrow: {$xf.timeDetails.tomorrow}, yesterday: {$xf.timeDetails.yesterday}, week: {$xf.timeDetails.week} }, borderSizeFeature: '{{ property('borderSizeFeature') }}', fontAwesomeWeight: '{{ fa_weight() }}', enableRtnProtect: {{ $xf.enableRtnProtect ? 'true' : 'false' }}, enableFormSubmitSticky: {{ property('formSubmitSticky') ? 'true' : 'false' }}, uploadMaxFilesize: {$xf.uploadMaxFilesize}, allowedVideoExtensions: {$xf.allowedVideoExtensions|json|raw}, shortcodeToEmoji: {{ $xf.options.shortcodeToEmoji ? 'true' : 'false' }}, visitorCounts: { conversations_unread: '{$xf.visitor.conversations_unread|number}', alerts_unread: '{$xf.visitor.alerts_unread|number}', total_unread: '{{ ($xf.visitor.conversations_unread + $xf.visitor.alerts_unread)|number }}', title_count: {{ in_array($xf.options.displayVisitorCount, ['title_count', 'title_and_icon']) ? 'true' : 'false' }}, icon_indicator: {{ in_array($xf.options.displayVisitorCount, ['icon_indicator', 'title_and_icon']) ? 'true' : 'false' }} }, jsState: {{ $jsState ? $jsState|json|raw : '{}' }}, publicMetadataLogoUrl: '{{ property('publicMetadataLogoUrl') ? base_url(property('publicMetadataLogoUrl'), true) : '' }}', publicPushBadgeUrl: '{{ property('publicPushBadgeUrl') ? base_url(property('publicPushBadgeUrl'), true) : '' }}' }); jQuery.extend(XF.phrases, { // <!--[XF:js_global:xf_phrase_start]--> date_x_at_time_y: "{{ phrase('date_x_at_time_y')|escape('js') }}", day_x_at_time_y: "{{ phrase('day_x_at_time_y')|escape('js') }}", yesterday_at_x: "{{ phrase('yesterday_at_x')|escape('js') }}", x_minutes_ago: "{{ phrase('x_minutes_ago')|escape('js') }}", one_minute_ago: "{{ phrase('one_minute_ago')|escape('js') }}", a_moment_ago: "{{ phrase('a_moment_ago')|escape('js') }}", today_at_x: "{{ phrase('today_at_x')|escape('js') }}", in_a_moment: "{{ phrase('in_a_moment')|escape('js') }}", in_a_minute: "{{ phrase('in_a_minute')|escape('js') }}", in_x_minutes: "{{ phrase('in_x_minutes')|escape('js') }}", later_today_at_x: "{{ phrase('later_today_at_x')|escape('js') }}", tomorrow_at_x: "{{ phrase('tomorrow_at_x')|escape('js') }}", day0: "{{ phrase('day_sunday')|escape('js') }}", day1: "{{ phrase('day_monday')|escape('js') }}", day2: "{{ phrase('day_tuesday')|escape('js') }}", day3: "{{ phrase('day_wednesday')|escape('js') }}", day4: "{{ phrase('day_thursday')|escape('js') }}", day5: "{{ phrase('day_friday')|escape('js') }}", day6: "{{ phrase('day_saturday')|escape('js') }}", dayShort0: "{{ phrase('day_sunday_short')|escape('js') }}", dayShort1: "{{ phrase('day_monday_short')|escape('js') }}", dayShort2: "{{ phrase('day_tuesday_short')|escape('js') }}", dayShort3: "{{ phrase('day_wednesday_short')|escape('js') }}", dayShort4: "{{ phrase('day_thursday_short')|escape('js') }}", dayShort5: "{{ phrase('day_friday_short')|escape('js') }}", dayShort6: "{{ phrase('day_saturday_short')|escape('js') }}", month0: "{{ phrase('month_1')|escape('js') }}", month1: "{{ phrase('month_2')|escape('js') }}", month2: "{{ phrase('month_3')|escape('js') }}", month3: "{{ phrase('month_4')|escape('js') }}", month4: "{{ phrase('month_5')|escape('js') }}", month5: "{{ phrase('month_6')|escape('js') }}", month6: "{{ phrase('month_7')|escape('js') }}", month7: "{{ phrase('month_8')|escape('js') }}", month8: "{{ phrase('month_9')|escape('js') }}", month9: "{{ phrase('month_10')|escape('js') }}", month10: "{{ phrase('month_11')|escape('js') }}", month11: "{{ phrase('month_12')|escape('js') }}", active_user_changed_reload_page: "{{ phrase('active_user_changed_reload_page')|escape('js') }}", server_did_not_respond_in_time_try_again: "{{ phrase('server_did_not_respond_in_time_try_again')|escape('js') }}", oops_we_ran_into_some_problems: "{{ phrase('oops_we_ran_into_some_problems')|escape('js') }}", oops_we_ran_into_some_problems_more_details_console: "{{ phrase('oops_we_ran_into_some_problems_more_details_console')|escape('js') }}", file_too_large_to_upload: "{{ phrase('file_too_large_to_upload')|escape('js') }}", uploaded_file_is_too_large_for_server_to_process: "{{ phrase('uploaded_file_is_too_large_for_server_to_process')|escape('js') }}", files_being_uploaded_are_you_sure: "{{ phrase('files_being_uploaded_are_you_sure')|escape('js') }}", attach: "{{ phrase('button.attach')|escape('js') }}", rich_text_box: "{{ phrase('rich_text_box')|escape('js') }}", close: "{{ phrase('close')|escape('js') }}", link_copied_to_clipboard: "{{ phrase('link_copied_to_clipboard')|escape('js') }}", text_copied_to_clipboard: "{{ phrase('text_copied_to_clipboard')|escape('js') }}", loading: "{{ phrase('loading...')|escape('js') }}", processing: "{{ phrase('processing')|escape('js') }}", 'processing...': "{{ phrase('processing...')|escape('js') }}", showing_x_of_y_items: "{{ phrase('showing_x_of_y_items')|escape('js') }}", showing_all_items: "{{ phrase('showing_all_items')|escape('js') }}", no_items_to_display: "{{ phrase('no_items_to_display')|escape('js') }}", push_enable_notification_title: "{{ phrase('push_enable_notification_title', {'boardTitle': $xf.options.boardTitle})|escape('js') }}", push_enable_notification_body: "{{ phrase('push_enable_notification_body')|escape('js') }}" }); </script> <form style="display:none" hidden="hidden"> <input type="text" name="_xfClientLoadTime" value="" id="_xfClientLoadTime" title="_xfClientLoadTime" tabindex="-1" /> </form> <xf:if is="$xf.visitor.canSearch() && $xf.request.getFullRequestUri() === link('full:index')"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "url": "{{ link('canonical:index')|escape('js') }}", "potentialAction": { "@type": "SearchAction", "target": "{{ link('canonical:search/search')|escape('js') . ($xf.options.useFriendlyUrls ? '?' : '&') . 'keywords={search_keywords}' }}", "query-input": "required name=search_keywords" } } </script> </xf:if> </xf:macro>]]>

</template>


-<template title="io.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[// VARIABLES @io-primaryGradient: linear-gradient(-270deg, @xf-uix_primaryColor 0%, xf-diminish(@xf-uix_primaryColor, 15%) 100%); @io-nodeColor1: desaturate(lighten(@xf-uix_primaryColor, 5%, relative), 30%, relative); .m-io_catGradient (@color, @spin) { background: linear-gradient(to left, spin(@color, @spin), spin(@color, (@spin + 30%)) ); } .m-io_catGradient (@color, @spin) when (luma(spin(@color, @spin)) >= 43%) { @darkColor: darken(@color, 10%); background: linear-gradient(to left, spin(@darkColor, @spin), spin(@darkColor, (@spin + 30%)) ); } .m-io_catColor (@color, @spin) { color: spin(@color, @spin); } .m-io_catColor (@color, @spin) when (luma(spin(@color, @spin)) >= 43%) { @darkColor: darken(@color, 20%); color: spin(@darkColor, @spin); } // HEADER @media (max-width: @xf-responsiveMedium) { .uix_headerContainer--stickyFix {display: none;} .p-nav-inner {height: @xf-uix_stickyNavHeight !important;} .p-header-logo--image img { transition: none !important; max-height: calc(@xf-uix_stickyNavHeight - (@xf-uix_navLogoVertSpacing * 2)) !important; } } @media (max-width: @xf-uix_search_maxResponsiveWidth) { .uix_searchForm .uix_searchInput {box-shadow: none;} } .p-account {font-size: @xf-fontSizeSmall;} .m-io_navLine() { position: absolute; bottom: 10px; left: @xf-publicNavPaddingH - 4px; right: @xf-publicNavPaddingH - 4px; height: 4px; border-radius: @xf-borderRadiusLarge; background: @xf-borderColor; display: block; transition: ease-in .2s right; } .p-nav-list .p-navEl { position: relative; &:after {right: 100%;} &:hover:after { .m-io_navLine(); } &.is-selected:after { .m-io_navLine(); background: @io-primaryGradient; } } // NODES .category--collapsed .block-header { border-bottom-left-radius: @xf-borderRadiusLarge; border-bottom-right-radius: @xf-borderRadiusLarge; } .block.block--category { .block-header { text-shadow: 0 0 1px rgba(0,0,0,.7); position: relative; transition: ease-in .15s border-bottom-left-radius, ease-in .15s border-bottom-right-radius; &:after { content: ''; background: url(@xf-uix_imagePath/io/images/swirl.png); background-size: cover; background-position: center; position: absolute; height: 100%; width: 100%; z-index: 1; top: 0; bottom: 0; left: 0; right: 0; display: block; mix-blend-mode: overlay; pointer-events: none; } } <xf:if is="property('io_nodeGradients')"> &:nth-child(1n) { .block-header {.m-io_catGradient(@io-nodeColor1, 0%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 0%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 30%);} } &:nth-child(2n) { .block-header {.m-io_catGradient(@io-nodeColor1, 60%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 60%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 90%);} } &:nth-child(3n) { .block-header {.m-io_catGradient(@io-nodeColor1, 120%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 120%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 150%);} } &:nth-child(4n) { .block-header {.m-io_catGradient(@io-nodeColor1, 180%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 180%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 210%);} } &:nth-child(5n) { .block-header {.m-io_catGradient(@io-nodeColor1, 240%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 240%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 270%);} } &:nth-child(6n) { .block-header {.m-io_catGradient(@io-nodeColor1, 300%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 300%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 330%);} } <xf:else /> &.io-spin1 { .block-header {.m-io_catGradient(@io-nodeColor1, 0%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 0%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 30%);} } &.io-spin2 { .block-header {.m-io_catGradient(@io-nodeColor1, 60%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 60%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 90%);} } &.io-spin3 { .block-header {.m-io_catGradient(@io-nodeColor1, 120%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 120%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 150%);} } &.io-spin4 { .block-header {.m-io_catGradient(@io-nodeColor1, 180%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 180%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 210%);} } &.io-spin5 { .block-header {.m-io_catGradient(@io-nodeColor1, 240%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 240%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 270%);} } &.io-spin6 { .block-header {.m-io_catGradient(@io-nodeColor1, 300%);} .node--unread .node-icon i {.m-io_catGradient(@io-nodeColor1, 300%);} .block-body a:hover {.m-io_catColor(@io-nodeColor1, 330%);} } </xf:if> } .block-body .node + .node {border: none;} .node--unread .node-icon i { background: @io-primaryGradient; } .has-flexbox .node .node-body .node-icon { display: inline-flex; align-items: center; justify-content: center; } .block-body .node { &:first-child .node-body { border-top-left-radius: @xf-borderRadiusMedium; border-top-right-radius: @xf-borderRadiusMedium; } &:last-child .node-body { border-bottom-left-radius: @xf-borderRadiusMedium; border-bottom-right-radius: @xf-borderRadiusMedium; } } // WELCOME SECTION body .uix_welcomeSection:before { background-size: cover; background-position: center; mix-blend-mode: overlay; } .uix_welcomeSection .button.button--cta { background: #fff; color: @xf-uix_primaryColor; &:hover, &:active, &:focus { color: #fff; } } // SIDEBAR @supports not (display: contents) { .uix_sidebarInner:not(.offCanvasMenu-content) .block { .block-minorHeader, .block-header { position: absolute; transform: translateY(-100%); width: 100%; height: 30px; padding-top: 0; + .block-body { margin-top: 60px; } } &:first-child { <xf:if is="property('uix_stickySidebar') == 'sticky'"> .block-minorHeader + .block-body {margin-top: 155px;} <xf:else /> .block-minorHeader + .block-body {margin-top: 30px;} </xf:if> } } } @supports (display: contents) { .uix_sidebarInner:not(.offCanvasMenu-content) .block { .block-container { display: contents; } .block-minorHeader { } .block-body { .xf-contentBase(); .xf-blockBorder() border-radius: @xf-blockBorderRadius; .xf-uix_blockContainer(); .xf-uix_sidebarWidgetWrapper(); &:not(:last-child) { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } } } } // FOOTER .uix_extendedFooter { position: relative; &:before { position: absolute; top: 0; width: 100%; content: ''; display: block; height: 4px; background: @io-primaryGradient; } } // DISCUSSION LIST body .structItem {border: none;} .block-container .structItemContainer { padding: @xf-paddingLarge; display: block; .structItemContainer-group {display: block;} } .block-body .block-minorHeader.uix_threadListSeparator { position: relative; padding-bottom: @xf-uix_structPaddingV + 4px; &:before { content: " "; display: table; background: @io-primaryGradient; position: absolute; bottom: 0; left: 0; right: 0; height: 4px; display: block; border-radius: 8px; } } // Post Comments .p-body-inner .block--messages .message .thpostcomments_commentsContainer { border-top: none; border-radius: @xf-borderRadiusLarge; background: @xf-contentAltBg; padding: 1px 0 @xf-messagePadding; margin: @xf-messagePadding; margin-top: 0px; .message {background: none;} } .p-body-inner .thpostcomments_commentsContainer .message:after {display: none;} // MESSAGES .structItem.structItem--note {margin-bottom: @xf-paddingMedium;} .block-container .message + .message, .message.message--bordered {border-top: none;} .message:last-child {padding-bottom: 1px; magin-bottom: -1px;} .block.block--messages .block-container, .block.js-quickReply .block-container { box-shadow: @xf-uix_elevation1; border-radius: @xf-borderRadiusMedium; } .actionBar-action .iconic--checkbox i:before {color: @xf-textColorMuted;} .message:not(:last-child) { position: relative; padding-bottom: 4px; &:after { content: ''; position: absolute; bottom: 0; left: @xf-messagePadding; right: @xf-messagePadding; height: 4px; border-radius: @xf-borderRadiusLarge; background: @xf-borderColor; display: block; } } .message-responses { .js-replyNewMessageContainer { border-top-left-radius: @xf-borderRadiusLarge; border-top-right-radius: @xf-borderRadiusLarge; overflow: hidden; .message-responseRow {margin: 0 !important;} + .message-responseRow { border-bottom-left-radius: @xf-borderRadiusLarge; border-bottom-right-radius: @xf-borderRadiusLarge; } } .message-responseRow {border: none} /* border-radius: @xf-borderRadiusLarge; overflow: hidden; .message-responseRow {border: none} .message-responseRow { &:first-child { border-top-left-radius: @xf-borderRadiusLarge; border-top-right-radius: @xf-borderRadiusLarge; } &:last-child { border-bottom-left-radius: @xf-borderRadiusLarge; border-bottom-right-radius: @xf-borderRadiusLarge; } &.toggleTarget { border-radius: @xf-borderRadiusLarge; } } */ } // FOOTER .uix_extendedFooterRow .blockLink { padding-left: 0; padding-right: 0; } .pageNav-page { &:first-child { border-top-left-radius: @xf-borderRadiusSmall; border-bottom-left-radius: @xf-borderRadiusSmall; } &:last-child { border-top-right-radius: @xf-borderRadiusSmall; border-bottom-right-radius: @xf-borderRadiusSmall; } } .pageNav-jump {border-radius: @xf-borderRadiusSmall;} .pageNav-page.pageNav-page--current { box-shadow: none; background: @xf-uix_primaryColor; color: #fff; border-color: @xf-uix_primaryColor; } .p-account .fa.fa-bookmark:before{content: "\f0c3";} .node .pairs > dd { font-size: @xf-fontSizeNormal; } .uix_tabList { background: @io-primaryGradient; .uix_tabItem {color: rgba(255,255,255,.7);} } // Icons <xf:comment> .p-nav-opposite .p-navgroup-link { i:after {font-family: 'fontello';} &--conversations i:after { content: '\e820'; } &--alerts i:after { content: '\e802'; } &--bookmarks i:before { font-family: 'fontello'; content: '\e814' !important; } &--search i:after { content: '\e846'; } .mdi-dots-vertical:before { font-family: 'fontello'; content: '\e83a'; } } .uix_tabList .uix_icon { &:before {font-family: 'fontello';} &--inbox:before {content: '\e820';} &--user:before {content: '\e84c';} &--comment-alert:before {content: '\e804';} &--alert:before {content: '\e802';} } .node.node--category .node-icon i:before { font-family: 'fontello'; content: '\e826'; } .node.node--forum .node-icon i:before { font-family: 'fontello'; content: '\e834'; } .node.node--link .node-icon i:before { font-family: 'fontello'; content: '\e810'; } .node.node--page .node-icon i:before { font-family: 'fontello'; content: '\e83e'; } .uix_categoryStrip__icon .uix_icon--folder:before { font-family: 'fontello'; content: '\e826'; } .uix_postThreadWidget .mdi-forum:before { font-family: 'fontello'; content: '\e834'; } .p-nav .p-nav-menuTrigger i:after { font-family: 'fontello'; content: '\e852'; } </xf:comment> .p-header-logo--image img {transition: ease-in .1s max-height;} .menu-content { position: relative; padding-top: 4px; &:before { content: ''; background: @io-primaryGradient; left: 0; right: 0; top: 0; height: 4px; display: block; border-top-left-radius: @xf-borderRadiusLarge; border-top-right-radius: @xf-borderRadiusLarge; position: absolute; } }]]>

</template>


-<template title="iodark.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[.uix_welcomeSection .uix_welcomeSection__inner .button.button--cta {box-shadow: none;}]]>

</template>


-<template title="login" version_string="2.1.6" version_id="2010570" addon_id="XF" type="public">

<![CDATA[<xf:js src="xf/login_signup.js" min="1" /> <xf:page option="uix_hideExtendedFooter" value="1" /> <xf:page option="uix_hideNotices" value="1" /> <xf:page option="uix_hideBreadcrumb" value="1" /> <xf:comment><xf:page option="uix_hideNavigation" value="1" /></xf:comment> <xf:title>{{ phrase('log_in') }}</xf:title> <xf:head option="robots"><meta name="robots" content="noindex" /></xf:head> <xf:if contentcheck="true"> <div class="blockMessage blockMessage--error blockMessage--iconic"> <xf:contentcheck>{$error}</xf:contentcheck> </div> </xf:if> <div class="blocks"> <xf:form action="{{ link('login/login') }}" class="block"> <div class="block-container"> <div class="block-body"> <xf:if is="$uix_loginPreventAutoFocus"> <xf:textboxrow name="login" value="{$login}" autocomplete="username" label="{{ phrase('your_name_or_email_address') }}" /> <xf:else/> <xf:textboxrow name="login" value="{$login}" autofocus="autofocus" autocomplete="username" label="{{ phrase('your_name_or_email_address') }}" /> </xf:if> <xf:passwordboxrow name="password" autocomplete="current-password" label="{{ phrase('password') }}"> <xf:html> <a class="uix_forgotPassWord__link" href="{{ link('lost-password') }}" data-xf-click="overlay">{{ phrase('forgot_your_password') }}</a> </xf:html> </xf:passwordboxrow> <xf:if is="$captcha"> <xf:captcharow label="{{ phrase('verification') }}" force="true" force-visible="true" /> </xf:if> <xf:checkboxrow> <xf:option name="remember" selected="true">{{ phrase('stay_logged_in') }}</xf:option> </xf:checkboxrow> <xf:hiddenval name="_xfRedirect">{$redirect}</xf:hiddenval> </div> <xf:submitrow icon="login" /> </div> <xf:if is="$xf.options.registrationSetup.enabled"> <div class="block-outer block-outer--after uix_login__registerLink"> <div class="block-outer-middle"> {{ phrase('dont_have_account_question') }} <a href="{{ link('register') }}">{{ phrase('register_now') }}</a> </div> </div> </xf:if> </xf:form> <xf:if is="$providers is not empty"> <div class="blocks-textJoiner"><span></span><em>{{ phrase('or_separator') }} {{ phrase('log_in_using') }}</em><span></span></div> <div class="block uix_loginProvider__row"> <div class="block-container"> <div class="block-body"> <xf:formrow rowtype="button"> <ul class="listHeap"> <xf:foreach loop="$providers" value="$provider"> <li> <xf:macro template="connected_account_macros" name="button" arg-provider="{$provider}" /> </li> </xf:foreach> </ul> </xf:formrow> </div> </div> </div> </xf:if> </div>]]>

</template>


-<template title="member.less" version_string="2.1.0 Beta 6" version_id="2010036" addon_id="XF" type="public">

<![CDATA[@_memberHeader-padding: @xf-paddingLarge; @_memberHeader-avatarSize: @avatar-l; @_memberHeader-avatarSizeShrunk: @avatar-m; .uix_memberHeader__extra { display: flex; flex-wrap: wrap; align-items: center; .memberHeader-buttons {margin-left: auto;} .memberHeader-blurb {margin-right: @xf-paddingMedium;} } .memberHeader { .m-clearFix(); } .memberHeader-main { .xf-memberHeader(); } .memberHeader-avatar { float: left; padding: @_memberHeader-padding; } .memberHeader-content { padding: @_memberHeader-padding; padding-left: ((@_memberHeader-padding) * 2 + (@_memberHeader-avatarSize)); } .memberHeader-actionTop { float: right; } .memberHeader-name { margin: 0; margin-top: -.15em; padding: 0; font-weight: @xf-fontWeightNormal; .xf-memberHeaderName(); } .memberHeader-banners, .memberHeader-blurb { margin-top: @xf-paddingSmall; } .memberHeader-separator { margin: @_memberHeader-padding 0; border: none; border-top: @xf-borderSize solid @xf-borderColorLight; } .memberHeader-stats { font-size: @xf-fontSizeLarge; .pairs.pairs--row { min-width: 100px; } } @media (max-width: @xf-responsiveMedium) { .memberHeader-avatar .avatar { .m-avatarSize(@_memberHeader-avatarSizeShrunk); } .memberHeader-content { padding-left: ((@_memberHeader-padding) * 2 + (@_memberHeader-avatarSizeShrunk)); } } @media (max-width: @xf-responsiveNarrow) { .memberHeader-avatar { display: block; float: none; padding-bottom: 0; text-align: center; } .memberHeader-avatar .avatarWrapper-update { font-size: @xf-fontSizeSmall; } .memberHeader-content { padding-left: @_memberHeader-padding; } .memberHeader-main .memberHeader-content { display: flex; flex-direction: column; padding-top: 0; min-height: 0; text-align: center; } .memberHeader-name { text-align: center; margin-top: 0; } .memberHeader-actionTop { float: none; order: 2; margin-top: @xf-paddingSmall; } .memberHeader-buttons { text-align: center; } .memberHeader-banners, .memberHeader-blurb { text-align: inherit; } } .block-tabHeader.block-tabHeader--memberTabs { border-bottom: none; } .memberOverviewBlocks { .m-listPlain(); display: flex; flex-wrap: wrap; align-items: stretch; > li { width: 33.3%; max-width: 100%; padding: @xf-blockPaddingV @xf-blockPaddingH; @media (max-width: 1150px) { width: 50%; } @media (max-width: 580px) { width: 100%; } } } .memberOverviewBlock { display: flex; flex-direction: column; } .memberOverviewBlock-list { .m-listPlain(); > li { margin: @xf-paddingMedium 0; } } .memberOverviewBlock-seeMore { .xf-minorBlockContent(); padding: @xf-paddingSmall; text-align: center; // pushes this to the bottom with flex box margin-top: auto; }]]>

</template>


-<template title="member_notable" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ $active ? $active.title : phrase('notable_members') }}</xf:title> <xf:wrap template="member_wrapper"> <xf:set var="$pageSelected" value="{{ $active ? $active.member_stat_key : 'overview' }}" /> </xf:wrap> <xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:members') }}" /> <xf:css src="member.less" /> <xf:if is="$userNotFound"> <div class="blockMessage blockMessage--error blockMessage--iconic">{{ phrase('specified_member_cannot_be_found_enter_entire_name') }}</div> </xf:if> <xf:if is="$memberStats is empty"> <div class="blockMessage">{{ phrase('no_notable_members_can_currently_be_shown') }}</div> <xf:else /> <section class="block"> <div class="block-container"> <xf:if is="$active"> <ol class="block-body"> <xf:foreach loop="{$resultsData.{$active.member_stat_key}}" key="$userId" value="$data"> <li class="block-row block-row--separated"> <xf:macro template="member_list_macros" name="item" arg-user="{$data.user}" arg-extraData="{$data.value}" arg-extraDataBig="{{ true }}" /> </li> <xf:else /> <li class="block-row">{{ phrase('no_users_match_specified_criteria') }}</li> </xf:foreach> </ol> <xf:else /> <div class="block-body"> <ol class="memberOverviewBlocks"> <xf:foreach loop="$memberStats" key="$key" value="$memberStat"> <xf:macro name="overview_block" arg-memberStat="{$memberStat}" arg-results="{$resultsData.{$key}}" /> </xf:foreach> </ol> </div> </xf:if> </div> </section> </xf:if> <xf:macro name="overview_block" arg-memberStat="!" arg-results="!" arg-showTitle="{{ true }}" arg-showFooter="{{ true }}"> <xf:if contentcheck="true"> <li class="memberOverviewBlock"> <xf:if is="$showTitle"> <h3 class="block-textHeader"> <a href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}" class="memberOverViewBlock-title">{$memberStat.title}</a> </h3> </xf:if> <ol class="memberOverviewBlock-list"> <xf:contentcheck> <xf:foreach loop="$results" key="$userId" value="$data"> <li> <xf:macro name="overview_row" arg-data="{$data}" /> </li> </xf:foreach> </xf:contentcheck> </ol> <xf:if is="$showFooter"> <div class="memberOverviewBlock-seeMore"> <a href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}">{{ phrase('see_more...') }}</a> </div> </xf:if> </li> </xf:if> </xf:macro> <xf:macro name="overview_row" arg-data="!"> <div class="contentRow contentRow--alignMiddle"> <div class="contentRow-figure"> <xf:avatar user="$data.user" size="xs" /> </div> <div class="contentRow-main"> <xf:if is="$data.value"> <div class="contentRow-extra contentRow-extra--large">{$data.value}</div> </xf:if> <h3 class="contentRow-title"><xf:username user="$data.user" rich="true" /></h3> </div> </div> </xf:macro>]]>

</template>


-<template title="member_recent_content" version_string="2.0.0 Release Candidate 3" version_id="2000053" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('recent_content_by_x', {'name': $user.username}) }}</xf:title> <xf:head option="metaNoindex"><meta name="robots" content="noindex" /></xf:head> <xf:breadcrumb href="{{ link('members', $user) }}">{$user.username}</xf:breadcrumb> <xf:css src="search_results.less" /> <xf:if is="$resultCount"> <div class="block"> <div class="block-container"> <ol class="block-body"> <xf:foreach loop="$results" value="$result"> {{ $result.render()|raw }} </xf:foreach> </ol> <div class="block-footer"> <span class="block-footer-controls"><xf:button href="{{ link('search/member', null, {'user_id': $user.user_id}) }}" rel="nofollow"> {{ phrase('see_more') }} </xf:button></span> </div> </div> </div> <xf:else /> <div class="block-container"> <div class="block-row">{{ phrase('x_has_not_posted_any_content_recently', {'name': $user.username}) }}</div> </div> </xf:if>]]>

</template>


-<template title="member_tooltip.less" version_string="2.1.0 Beta 1" version_id="2010031" addon_id="XF" type="public">

<![CDATA[@_memberTooltip-padding: @xf-paddingMedium; @_memberTooltip-avatarSize: @avatar-m; .memberTooltip-header { display: table; table-layout: fixed; width: 100%; padding: @_memberTooltip-padding; .xf-memberTooltipHeader(); } .memberTooltip-avatar { // display: table-cell; // width: ((@_memberTooltip-padding) * 2 + (@_memberTooltip-avatarSize)); vertical-align: top; padding-right: @_memberTooltip-padding; } .memberTooltip-headerInfo { // display: table-cell; vertical-align: top; flex-grow: 1; } .memberTooltip-name { margin: 0; margin-top: -.15em; padding: 0; font-weight: @xf-fontWeightNormal; line-height: .8 * (@xf-lineHeightDefault); .xf-memberTooltipName(); .m-hiddenLinks(); } .memberTooltip-headerAction { float: right; } .memberTooltip-banners { margin: -2px; .userBanner {margin: 2px;} } .memberTooltip-banners, .memberTooltip-blurb { margin-top: .25em; } .memberTooltip-blurb { font-size: @xf-fontSizeSmall; } .memberTooltip-stats { font-size: @xf-fontSizeSmall; dl.pairs.pairs--rows > dt { font-size: @xf-fontSizeSmaller; } } .memberTooltip-info, .memberTooltip-actions { padding: @_memberTooltip-padding; .button { .xf-uix_buttonSmall; } } .memberTooltip-separator { margin: -@xf-borderSize @_memberTooltip-padding 0; border: none; border-top: @xf-borderSize solid @xf-borderColorLight; } @media (max-width: @xf-responsiveNarrow) { .memberTooltip-avatar { width: ((@_memberTooltip-padding) * 2 + (@_memberTooltip-avatarSize * 2 / 3)); .avatar { .m-avatarSize(@_memberTooltip-avatarSize * 2 / 3); } } }]]>

</template>


-<template title="member_view" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[<xf:title page="{$page}">{$user.username}</xf:title> <xf:h1 hidden="true" /> <xf:if is="$xf.visitor.user_id == $user.user_id"> <xf:page option="uix_myAccountLinks" value="profile" /> </xf:if> <xf:macro template="metadata_macros" name="metadata" arg-shareUrl="{{ link('canonical:members', $user) }}" arg-canonicalUrl="{{ link('canonical:members', $user, {'page': $page}) }}" arg-imageUrl="{$user.getAvatarUrl('o', null, true)}" /> <xf:page option="ldJsonHtml"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Person", "name": "{$user.username|escape('json')}", "image": "{$user.getAvatarUrl('o', null, true)|escape('json')}" } </script> </xf:page> <xf:css src="member.less" /> <div class="block"> <div class="block-container"> <div class="block-body"> <div class="memberHeader"> <div class="memberHeader-main"> <span class="memberHeader-avatar"> <span class="avatarWrapper"> <xf:avatar user="{$user}" size="l" href="{{ $user.getAvatarUrl('o') ?: '' }}" /> <xf:if is="$user.user_id == $xf.visitor.user_id && $xf.visitor.canUploadAvatar()"> <a class="avatarWrapper-update" href="{{ link('account/avatar') }}" data-xf-click="overlay"><span>{{ phrase('edit') }}</span></a> </xf:if> </span> </span> <div class="memberHeader-content memberHeader-content--info"> <xf:if contentcheck="true"> <div class="memberHeader-actionTop"> <xf:contentcheck> <!--[XF:action_top_start]--> <xf:if contentcheck="true"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$user.canBeReported()"> <xf:button href="{{ link('members/report', $user) }}" class="button--link" overlay="true"> {{ phrase('report_verb') }} </xf:button> </xf:if> <xf:if contentcheck="true"> <div class="buttonGroup-buttonWrapper"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator_tools') }}</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('moderator_tools') }}</h3> <xf:contentcheck> <xf:macro template="member_macros" name="moderator_menu_actions" arg-user="{$user}" arg-context="profile" /> </xf:contentcheck> </div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <!--[XF:action_top_end]--> </xf:contentcheck> </div> </xf:if> <h1 class="memberHeader-name"><xf:username user="{$user}" rich="true" href="" /></h1> <xf:if contentcheck="true"> <div class="memberHeader-banners"> <xf:contentcheck><xf:userbanners user="$user" /></xf:contentcheck> </div> </xf:if> <xf:userblurb user="$user" tag="div" class="memberHeader-blurb" /> <xf:comment> <div class="memberHeader-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('joined') }}</dt> <dd><xf:date time="$user.register_date" /></dd> </dl> </div> <xf:if contentcheck="true"> <div class="memberHeader-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('last_seen') }}</dt> <dd dir="auto"> <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck> </dd> </dl> </div> </xf:if> </xf:comment> </div> </div> <div class="memberHeader-content"> <div class="memberHeader-stats"> <div class="pairJustifier"> <xf:macro template="member_macros" name="member_stat_pairs" arg-user="{$user}" arg-context="profile" /> </div> </div> <xf:if contentcheck="true"> <hr class="memberHeader-separator" /> <div class="uix_memberHeader__extra"> <div class="memberHeader-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('joined') }}</dt> <dd><xf:date time="$user.register_date" /></dd> </dl> </div> <xf:if contentcheck="true"> <div class="memberHeader-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('last_seen') }}</dt> <dd dir="auto"> <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck> </dd> </dl> </div> </xf:if> <div class="memberHeader-buttons"> <xf:contentcheck> <xf:macro template="member_macros" name="member_action_buttons" arg-user="{$user}" arg-context="profile" /> </xf:contentcheck> </div> </div> </xf:if> </div> </div> </div> </div> </div> <xf:ad position="member_view_below_tabs" arg-user="{$user}" /> <h2 class="block-tabHeader block-tabHeader--memberTabs tabs hScroller" data-xf-init="tabs h-scroller" data-panes=".js-memberTabPanes" data-state="replace" role="tablist"> <span class="hScroller-scroll"> <!--[XF:tabs:start]--> <xf:if is="$user.canViewPostsOnProfile()"> <a href="{{ link('members', $user) }}" class="tabs-tab is-active" role="tab" aria-controls="profile-posts">{{ phrase('profile_posts') }}</a> </xf:if> <xf:if is="$user.canViewLatestActivity()"> <a href="{{ link('members/latest-activity', $user) }}" rel="nofollow" class="tabs-tab" id="latest-activity" role="tab">{{ phrase('latest_activity') }}</a> </xf:if> <a href="{{ link('members/recent-content', $user) }}" rel="nofollow" class="tabs-tab" id="recent-content" role="tab">{{ phrase('postings') }}</a> <!--[XF:tabs:after_recent_content]--> <a href="{{ link('members/about', $user) }}" class="tabs-tab" id="about" role="tab">{{ phrase('about') }}</a> <xf:if is="$xf.visitor.canViewWarnings() && $user.warning_count"> <a href="{{ link('members/warnings', $user) }}" class="tabs-tab" id="warnings" role="tab">{{ phrase('warnings') }}</a> </xf:if> <!--[XF:tabs:end]--> </span> </h2> <ul class="tabPanes js-memberTabPanes"> <!--[XF:tab_panes:start]--> <xf:if is="$user.canViewPostsOnProfile()"> <li class="is-active" role="tabpanel" id="profile-posts"> <xf:js src="xf/inline_mod.js" min="1" /> <div class="block block--messages" data-xf-init="inline-mod" data-type="profile_post" data-href="{{ link('inline-mod') }}"> <div class="block-container"> <div class="block-body js-replyNewMessageContainer"> <xf:if is="$user.canPostOnProfile()"> <xf:set var="$firstProfilePost" value="{$profilePosts|first}" /> <xf:macro template="profile_post_macros" name="quick_post" arg-user="{$user}" arg-lastDate="{{ $firstProfilePost.post_date ?: 0 }}" arg-containerSelector="< .js-replyNewMessageContainer" /> </xf:if> <xf:if is="$profilePosts is not empty"> <xf:foreach loop="$profilePosts" value="$profilePost"> <xf:macro template="profile_post_macros" name="{{ $profilePost.message_state == 'deleted' ? 'profile_post_deleted' : 'profile_post' }}" arg-profilePost="{$profilePost}" /> </xf:foreach> <xf:else /> <div class="block-row js-replyNoMessages">{{ phrase('there_no_messages_on_xs_profile_yet', {'name': $user.username}) }}</div> </xf:if> </div> </div> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="members" data="{$user}" wrapperclass="block-outer-main" /> <div class="block-outer-opposite"> <xf:showignored /> <xf:if is="$canInlineMod"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> </div> </div> </div> </li> </xf:if> <xf:if is="$user.canViewLatestActivity()"> <li data-href="{{ link('members/latest-activity', $user) }}" role="tabpanel" aria-labelledby="latest-activity"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> </xf:if> <li data-href="{{ link('members/recent-content', $user) }}" role="tabpanel" aria-labelledby="recent-content"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> <!--[XF:tab_panes:after_recent_content]--> <li data-href="{{ link('members/about', $user) }}" role="tabpanel" aria-labelledby="about"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> <xf:if is="$xf.visitor.canViewWarnings() && $user.warning_count"> <li data-href="{{ link('members/warnings', $user) }}" role="tabpanel" aria-labelledby="warnings"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> </xf:if> <!--[XF:tab_panes:end]--> </ul> <xf:widgetpos id="member_view_sidebar" context-user="{$user}" position="sidebar" />]]>

</template>


-<template title="message.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[@_message-actionColumnWidth: 40px; @_messageSimple-userColumnWidth: 70px; .message { + .message, &.message--bordered { border-top: @xf-borderSize solid @xf-borderColor; } } .message, .block--messages .message { &.is-mod-selected { background: @xf-inlineModHighlightColor; .message-cell--user { background: @xf-inlineModHighlightColor; } .message-userArrow:after { border-right-color: @xf-inlineModHighlightColor; } } } .message-inner { display: flex; } .message-cell { display: block; vertical-align: top; padding: @xf-messagePadding; .message--quickReply & { //padding-bottom: 35px; // for the submit row > .formRow:last-child { > dd { padding-bottom: 0; } } } &.message-cell--closer { padding: @xf-messagePaddingSmall; &.message-cell--user { .m-fixedWidthFlex((@xf-messageUserBlockWidth) + 2 * (@xf-messagePaddingSmall)); .message--simple & { .m-fixedWidthFlex(@_messageSimple-userColumnWidth + 2 * (@xf-messagePaddingSmall)); } } &.message-cell--action { .m-fixedWidthFlex((@_message-actionColumnWidth) + 2 * (@xf-messagePaddingSmall)); } } &.message-cell--user, &.message-cell--action { position: relative; .xf-messageUserBlock(no-border); border-right: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; min-width: 0; } &.message-cell--user { .m-fixedWidthFlex((@xf-messageUserBlockWidth) + 2 * (@xf-messagePadding)); .message--simple & { .m-fixedWidthFlex(@_messageSimple-userColumnWidth + 2 * @xf-messagePaddingSmall); // width: auto; // min-width: auto; // background: none; // border: none; padding-right: 0; } } &.message-cell--action { .m-fixedWidthFlex((@_message-actionColumnWidth) + 2 * (@xf-messagePadding)); } &.message-cell--main { flex: 1 1 auto; width: 100%; // display: flex; min-width: 0; .xf-uix_messageMain(); &.is-editing { padding: 0; } .block { margin: 0; } .block-container { margin: 0; border: none; } } &.message-cell--alert { font-size: @xf-fontSizeSmall; flex: 1 1 auto; width: 100%; min-width: 0; .xf-contentAccentBase(); a { .xf-contentAccentLink(); } } &.message-cell--extra { .m-fixedWidthFlex(180 + 2 * (@xf-messagePadding)); border-left: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; background: @xf-contentAltBg; .formRow-explain { margin: @xf-paddingMedium 0 0; .xf-formExplain(); .m-textColoredLinks(); font-size: 80%; } } } .message-main { height: 100%; display: flex; flex-direction: column; width: 100%; min-width: 0; } .message-content { flex: 1 1 auto; // IE11 flex bug min-height: 1px; max-width: 100%; } .message-footer { margin-top: auto; } form.message--simple .message-cell--main { flex-direction: column; padding: @xf-paddingLarge; } .message--quickReply .message-cell--main { flex-direction: column; padding: @xf-messagePadding; } @media (max-width: @xf-messageSingleColumnWidth) { .message:not(.message--forceColumns) { .message-inner { display: block; } .message-cell { display: block; .m-clearFix(); &.message-cell--user { width: auto; border-right: none; border-bottom: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; } &.message-cell--main { // padding-left: @xf-messagePadding; } &.message-cell--extra { width: auto; border-left: none; border-top: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; } } } .message--simple:not(.message--forceColumns), .message--quickReply:not(.message--forceColumns) { .message-cell.message-cell--user { display: none; } } } // ######################## USER COLUMN ######################### .message-userArrow { position: absolute; top: (@xf-messagePadding) * 2; right: -1px; .m-triangleLeft(xf-default(@xf-messageUserBlock--border-color, transparent), @xf-messagePadding); <xf:if is="property('uix_removeMessageArrow')"> display: none; </xf:if> &:after { position: absolute; top: -(@xf-messagePadding - 1px); right: -@xf-messagePadding; content: ""; <xf:if is="property('uix_messageMain--background-color')"> .m-triangleLeft(@xf-uix_messageMain--background-color, @xf-messagePadding - 1px); <xf:else /> .m-triangleLeft(xf-default(@xf-contentBg, transparent), @xf-messagePadding - 1px); </xf:if> } } .message-avatar { text-align: center; .avatar { vertical-align: bottom; max-width: @xf-messageUserBlockWidth; max-height: @xf-messageUserBlockWidth; } } .message-avatar-wrapper { position: relative; display: inline-block; vertical-align: bottom; margin-bottom: .5em; .message-avatar-online { position: absolute; // center bottom position left: 50%; margin-left: -.615em; bottom: -.5em; &:before { .m-faBase(); .m-faContent(@fa-var-user-circle); line-height: 1; font-weight: bold; color: rgb(127, 185, 0); background: @xf-contentBg; border: @xf-contentBg solid 2px; background: @xf-uix_message--background-color; border-color: @xf-uix_message--background-color; background: @xf-messageUserBlock--background-color; border-color: @xf-messageUserBlock--background-color; border-radius: 50%; display: inline-block; } } } .message-name { font-weight: @xf-fontWeightHeavy; font-size: inherit; text-align: center; margin: 0; } .message-userTitle { font-size: @xf-fontSizeSmaller; font-weight: normal; text-align: center; margin: 0; } .message-userBanner.userBanner { @media (min-width: @xf-messageSingleColumnWidth) { display: block; } margin-top: 3px; } .message-userExtras { // margin-top: 3px; font-size: @xf-fontSizeSmaller; <xf:if is="property('uix_postBitIcons')"> dl.pairs dt:after {content:'';} .pairs { display: flex; align-items: center; i {font-size: 18px;} dd { min-width: 0; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; } } </xf:if> } .message--deleted { .message-userDetails { display: none; } .message-avatar .avatar { .m-avatarSize(@avatar-s); } } @media (min-width: @xf-messageSingleColumnWidth) { .message-userDetails {text-align: center;} } @media (max-width: @xf-messageSingleColumnWidth) { .uix_messagePostBitWrapper { display: flex; flex-grow: 1; flex-direction: column; min-width: 0; max-width: 100%; } .message:not(.message--forceColumns) { .message-userArrow { top: auto; right: auto; bottom: -1px; left: ((@avatar-s) / 2); border: none; .m-triangleUp(xf-default(@xf-messageUserBlock--border-color, transparent), @xf-messagePadding); &:after { top: auto; right: auto; left: -(@xf-messagePadding - 1px); bottom: -@xf-messagePadding; border: none; .m-triangleUp(@xf-contentBg, @xf-messagePadding - 1px); } } &.is-mod-selected { .message-userArrow:after { border-color: transparent; border-bottom-color: @xf-inlineModHighlightColor; } } .message-user { display: flex; } .message-avatar { margin-bottom: 0; .avatar { .m-avatarSize(@avatar-s); & + .message-avatar-online { left: auto; right: 0; } } } .message-userDetails { flex: 1; min-width: 0; padding-left: @xf-messagePadding; width: 100%; } .message-userExtras { display: flex; flex-wrap: wrap; align-items: center; padding-left: @xf-messagePadding; padding-top: @xf-paddingSmall; .pairs { margin-right: @xf-paddingMedium; line-height: 1.3; } } .message-name { text-align: left; } .message-userTitle, .message-userBanner.userBanner { display: inline-block; text-align: left; margin: 0; } .message--deleted { .message-userDetails { display: block; } } } } // ####################### MAIN COLUMN #################### .message-content { position: relative; .js-selectToQuoteEnd { height: 0; font-size: 0; overflow: hidden; } .message--multiQuoteList & { min-height: 80px; max-height: 120px; overflow: hidden; .message-body { pointer-events: none; } } } .message-attribution { color: @xf-textColorMuted; font-size: @xf-fontSizeSmaller; border-bottom: @xf-borderSize solid @xf-borderColorFaint; padding-bottom: 3px; // .m-clearFix(); .xf-uix_messageMeta; &.message-attribution--plain { border-bottom: none; font-size: inherit; // padding-bottom: 0; } &.message-attribution--split { display: flex; align-items: flex-end; .message-attribution-opposite { margin-left: auto; } } } .message-attribution-main { float: left; } .message-attribution-opposite { float: right; &.message-attribution-opposite--list { display: flex; .m-listPlain(); > li { margin-left: 14px; &:first-child { margin-left: 0; } } a { display: inline-block; margin: -3px -7px; padding: 3px 7px; } } a { color: inherit; &:hover { text-decoration: none; color: @xf-linkHoverColor; } } } .message-attribution-source { font-size: @xf-fontSizeSmaller; margin-bottom: @xf-paddingSmall; } .message-attribution-user { font-weight: @xf-fontWeightHeavy; .avatar { display: none; } .attribution { display: inline; font-size: inherit; font-weight: inherit; margin: 0; } } .message-newIndicator { .xf-messageNewIndicator(); } .message-minorHighlight { font-size: @xf-fontSizeSmall; color: @xf-textColorFeature; padding-left: @xf-messagePadding; padding-right: @xf-messagePadding; } .message-fields { margin: @xf-messagePadding 0; .xf-uix_threadField(); dt, dd {vertical-align: top;} .pairs dd {display: inline-block;} } .message-body { margin: @xf-messagePadding 0; font-family: @xf-fontFamilyBody; .m-clearFix(); .xf-uix_messageBody(); .message--simple & { // margin-top: @xf-messagePaddingSmall; margin-bottom: @xf-messagePaddingSmall; } &:last-child { margin-bottom: 0; } .message-title { // basically replicates .structItem-title font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; margin: 0 0 @xf-messagePadding 0; padding: 0; } } .message-attachments { margin: .5em 0; .xf-uix_messageAttachments(); } .message-attachments-list { .m-listPlain(); } .message-lastEdit { margin-top: .5em; color: @xf-textColorMuted; font-size: @xf-fontSizeSmallest; text-align: right; padding: 0 @xf-messagePadding @xf-messagePadding; } .message-signature { margin-top: @xf-messagePadding; .xf-messageSignature(); } .message-actionBar .actionBar-set { // margin-top: @xf-messagePadding; font-size: @xf-fontSizeSmall; // padding: calc( @xf-messagePadding / 2 ); .message--simple & { // margin-top: @xf-messagePaddingSmall; } } .message .likesBar { // .xf-minorBlockContent(); // font-size: @xf-fontSizeSmaller; margin-top: @xf-messagePadding; padding: @xf-messagePaddingSmall; .xf-uix_messageLikes(); } .message .reactionsBar { margin-top: @xf-messagePadding; padding: @xf-messagePaddingSmall; .xf-uix_messageLikes(); } .message-historyTarget { margin-top: @xf-messagePadding; } .message-gradient { position: absolute; bottom: 0; left: 0; right: 0; height: 60px; .m-gradient(fade(@xf-contentBg, 0%), @xf-contentBg, @xf-contentBg, 0%, 90%); } .message-responses { margin-top: @xf-messagePaddingSmall; font-size: @xf-fontSizeSmall; .editorPlaceholder { .input { font-size: inherit; } } } .message-responseRow { margin-top: -@xf-minorBlockContent--border-width; .xf-minorBlockContent(); padding: @xf-messagePadding; // note that border radiuses are very difficult to do here due to a lot of dynamic showing/hiding &.message-responseRow--likes, &.message-responseRow--reactions { .m-transitionFadeDown(); } } @media (max-width: @xf-messageSingleColumnWidth) { .message:not(.message--forceColumns) { .message-attribution-user .avatar { display: inline-flex; .m-avatarSize((@xf-fontSizeNormal) * (@xf-lineHeightDefault)); } .message-content { // this is 1px to workaround an IE11 issue - see #139187 min-height: 1px; } } } @media (max-width: @xf-responsiveNarrow) { .message-signature { display: none; } } // MESSAGE MENU .message-menuGroup { display: inline-block; } .message-menuTrigger { display: inline-block; &:after { .m-menuGadget(); // 1em text-align: right; } &:hover:after { color: black; } } .message-menu-section { &--editDelete { .menu-linkRow { font-weight: @xf-fontWeightHeavy; font-size: @xf-fontSizeNormal; } } } .message-menu-link { &--delete i:after { .m-faContent(@fa-var-trash-alt); } &--edit i:after { .m-faContent(@fa-var-edit); } &--report i:after { .m-faContent(@fa-var-frown); } &--warn i:after { .m-faContent(@fa-var-exclamation-triangle); } &--spam i:after { .m-faContent(@fa-var-ban); } &--ip i:after { .m-faContent(@fa-var-sitemap); } &--history i:after { .m-faContent(@fa-var-history); } &--follow i:after { .m-faContent(@fa-var-user-plus); } &--ignore i:after { .m-faContent(@fa-var-user-times); } &--share i:after { .m-faContent(@fa-var-share-alt); } } // ############################# COMMENTS ############### .comment { } .comment-inner { display: table; table-layout: fixed; width: 100%; } .comment-avatar { display: table-cell; width: 24px; vertical-align: top; .avatar, img { vertical-align: bottom; } } .comment-main { display: table-cell; padding-left: @xf-messagePadding; vertical-align: top; } .comment-contentWrapper { margin-bottom: @xf-messagePaddingSmall; } .message-responses .comment-actionBar.actionBar {padding: 0;} .message-responses .comment-actionBar .actionBar-set.actionBar-set--internal {padding: 0;} .comment-user { font-weight: @xf-fontWeightHeavy; } .comment-body { display: inline; } .comment-input { display: block; height: 2.34em; margin-bottom: @xf-messagePaddingSmall; } .comment-actionBar .actionBar-set { // margin-top: @xf-messagePaddingSmall; color: @xf-textColorMuted; } .comment-likes, .comment-reactions { .m-transitionFadeDown(); margin-top: @xf-messagePaddingSmall; font-size: @xf-fontSizeSmaller; } // ######################### ACTION BAR ####################### .actionBar { .m-clearFix(); .xf-uix_messageActionBar(); } .actionBar-set { &.actionBar-set--internal { float: left; margin-left: -3px; > .actionBar-action:first-child { margin-left: 0; } } &.actionBar-set--external { float: right; margin-right: -3px; > .actionBar-action:last-child { margin-right: 0; } } } // ################################## MESSAGE QUICK REPLY ADDITIONS ############# .formSubmitRow.formSubmitRow--messageQr { .formSubmitRow-controls { text-align: center; padding-left: 0; padding-right: 0; margin-left: @xf-messagePadding; margin-right: @xf-messagePadding; @media (max-width: @xf-formResponsive) { text-align: right; } .menu & {text-align: right;} } } // ################################## MESSAGE NOTICES ############################# .messageNotice { margin: @xf-messagePaddingSmall 0; padding: @xf-messagePaddingSmall @xf-messagePadding; .xf-contentAccentBase(); font-size: @xf-fontSizeSmaller; border-left: @xf-borderSizeMinorFeature solid @xf-borderColorAttention; .xf-uix_messageNotice(); &.messageNotice--nested { border-left-width: @xf-borderSize; } &:not(.messageNotice--highlighted) { a, a:hover { .xf-contentAccentLink(); } } &:before { display: inline-block; .m-faBase(); padding-right: .2em; font-size: 125%; color: @xf-textColorAttention; vertical-align: middle; font-size: @xf-uix_iconSize !important; } &.messageNotice--highlighted { .xf-contentHighlightBase(); border-left-color: @xf-borderColorFeature; &:before { color: @xf-textColorFeature; } } &.messageNotice--deleted:before { .m-faContent(@fa-var-trash-alt, .79em); <xf:macro template="uix_icons.less" name="content" arg-icon="delete" />} &.messageNotice--moderated:before { .m-faContent(@fa-var-shield, .72em); <xf:macro template="uix_icons.less" name="content" arg-icon="moderate" />} &.messageNotice--warning:before { .m-faContent(fa-var-exclamation-triangle, 1em); <xf:macro template="uix_icons.less" name="content" arg-icon="warning" />} &.messageNotice--ignored:before { .m-faContent(@fa-var-microphone-slash, .79em); <xf:macro template="uix_icons.less" name="content" arg-icon="ignored" />} } // ##################### MESSAGE VARIANTS/RESPONSIVE ################## @media (min-width: @xf-responsiveEdgeSpacerRemoval) { .block:not(.block--messages) { @{block-noStripSel} > .block-body:first-child > .message:first-child, .block-topRadiusContent.message, .block-topRadiusContent > .message:first-child { .message-cell:first-child { border-top-left-radius: @block-borderRadius-inner; } .message-cell:last-child { border-top-right-radius: @block-borderRadius-inner; } } @{block-noStripSel} > .block-body:last-child > .message:last-child, .block-bottomRadiusContent.message, .block-bottomRadiusContent > .message:last-child { .message-cell:first-child { border-bottom-left-radius: @block-borderRadius-inner; } .message-cell:last-child { border-bottom-right-radius: @block-borderRadius-inner; } } } } .block--messages, .js-quickReply { .block-container { background: none; border: none; box-shadow: none; border-radius: 0; overflow: visible; padding: 0; } .message, .block-row { .xf-contentBase(); .xf-blockBorder(); border-radius: @xf-blockBorderRadius; .xf-uix_message(); &:first-child { border-top-left-radius: @xf-borderRadiusLarge; border-top-right-radius: @xf-borderRadiusLarge; } &:last-child { border-bottom-left-radius: @xf-borderRadiusLarge; border-bottom-right-radius: @xf-borderRadiusLarge; } + .message, + .block-row { margin-top: @xf-blockPaddingV; // Changed for iO margin-top:0; } } .message-spacer { + .message, + .block-row { margin-top: @xf-blockPaddingV; } } .message-cell { &:first-child { border-radius: 0; border-top-left-radius: @block-borderRadius-inner; border-bottom-left-radius: @block-borderRadius-inner; } &:last-child { border-radius: 0; border-top-right-radius: @block-borderRadius-inner; border-bottom-right-radius: @block-borderRadius-inner; } &:first-child:last-child { border-radius: @block-borderRadius-inner; } } @media (max-width: @xf-messageSingleColumnWidth) { .message:not(.message--forceColumns) { .message-cell { &:first-child { border-radius: 0; border-top-left-radius: @block-borderRadius-inner; border-top-right-radius: @block-borderRadius-inner; } &:last-child { border-radius: 0; border-bottom-left-radius: @block-borderRadius-inner; border-bottom-right-radius: @block-borderRadius-inner; } &:first-child:last-child { border-radius: @block-borderRadius-inner; } } } .message--simple:not(.message--forceColumns) .message-cell--user + .message-cell { border-radius: 0; border-top-left-radius: @block-borderRadius-inner; border-top-right-radius: @block-borderRadius-inner; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .message, .block-row { border-left: none; border-right: none; border-radius: 0; } .message-cell { border-radius: 0; &:first-child, &:last-child { border-radius: 0; } } .message--simple .message-cell--user + .message-cell { border-radius: 0; } .message-container { padding: @xf-paddingMedium 0 0 0; .message-container-header { text-align: center; } .message { border-bottom: 0; } } } }]]>

</template>


-<template title="message_macros" version_string="2.1.4" version_id="2010470" addon_id="XF" type="public">

<![CDATA[<xf:macro name="user_info" arg-user="!" arg-threadUserId="" arg-fallbackName=""> <section itemscope itemtype="https://schema.org/Person" class="message-user {{ !$__globals.uix_postbitCollapsed ? 'userExtra--expand' : ''}}"> <div class="message-avatar {{ ($xf.options.showMessageOnlineStatus && $user && $user.isOnline()) ? 'message-avatar--online' : '' }}"> <div class="message-avatar-wrapper"> <xf:if is="property('uix_postBitAvatarSize') == 'small'"> <xf:avatar user="$user" size="s" defaultname="{$fallbackName}" itemprop="image" /> <xf:elseif is="property('uix_postBitAvatarSize') == 'medium'" /> <xf:avatar user="$user" size="m" defaultname="{$fallbackName}" itemprop="image" /> <xf:elseif is="property('uix_postBitAvatarSize') == 'large'" /> <xf:avatar user="$user" size="l" defaultname="{$fallbackName}" itemprop="image" /> </xf:if> <xf:if is="$xf.options.showMessageOnlineStatus && $user && $user.isOnline()"> <span class="message-avatar-online" tabindex="0" data-xf-init="tooltip" data-trigger="auto" title="{{ phrase('online_now')|for_attr }}"></span> </xf:if> </div> </div> <div class="uix_messagePostBitWrapper"> <div class="message-userDetails"> <h4 class="message-name"><xf:username user="$user" rich="true" defaultname="{$fallbackName}" itemprop="name" /></h4> <xf:usertitle user="$user" tag="h5" class="message-userTitle" banner="true" itemprop="jobTitle" /> <xf:if is="$xf.options.showMessageOnlineStatus && $user && $user.isOnline() && ( {{ property('uix_onlineIndicator') }} == 'userbanner')"> <div class="userBanner message-userBanner uix_userBanner--online"> <span class="userBanner-before"></span> <strong>{{ phrase('online_now')}}</strong> <span class="userBanner-after"></span> </div> </xf:if> <xf:if is="($user.user_id == $threadUserId) && (property('uix_originalPoster') != 'none')"> <xf:if is="property('uix_originalPoster') == 'userbanner'"> <div class="userBanner message-userBanner uix_userBanner--op"> <span class="userBanner-before"></span> <strong>{{ phrase('th_original_poster')}}</strong> <span class="userBanner-after"></span> </div> <xf:elseif is="property('uix_originalPoster') == 'icon'" /> <div class="uix_originalPoster__icon" data-xf-init="tooltip" title="{{ phrase('th_original_poster') }}"> <xf:fa icon="fa-user-edit" class="mdi mdi-account-edit" /> </div> </xf:if> </xf:if> <xf:userbanners user="$user" tag="div" class="message-userBanner" itemprop="jobTitle" /> <xf:if is="{$dateHtml}"><div class="message-date">{$dateHtml}</div></xf:if> </div> <xf:if is="{$linkHtml}"><div class="message-permalink">{$linkHtml}</div></xf:if> <xf:if is="$user.user_id"> <xf:set var="$extras" value="{{ property('messageUserElements') }}" /> <xf:if contentcheck="true"> <xf:if is="{{ property('uix_collapseExtraInfo')}}"> <div class="thThreads__message-userExtras"> </xf:if> <div class="message-userExtras"> <xf:contentcheck> <xf:if is="$extras.register_date"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('joined') }}"> <xf:fa icon="fa-user" class=" uix_icon uix_icon--user" /> </span> </dt> <xf:else /> <dt>{{ phrase('joined') }}</dt> </xf:if> <dd>{{ date($user.register_date) }}</dd> </dl> </xf:if> <xf:if is="$extras.message_count"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('messages') }}"> <xf:fa icon="fa-comments" class=" uix_icon uix_icon--messages" /> </span> </dt> <xf:else /> <dt>{{ phrase('messages') }}</dt> </xf:if> <dd>{$user.message_count|number}</dd> </dl> </xf:if> <xf:if is="$extras.reaction_score"> <xf:if is="{{ is_addon_active('ThemeHouse/Reactions') }}"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('threact_reactions') }}"> <xf:fa icon="fa-thumbs-up" class=" uix_icon uix_icon--like" /> </span> </dt> <xf:else /> <dt>{{ phrase('threact_reactions') }}</dt> </xf:if> <dd>{$user.getReactTotalCount()|number}</dd> </dl> <xf:else /> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('likes') }}"> <xf:fa icon="fa-thumbs-up" class=" uix_icon uix_icon--like" /> </span> </dt> <xf:else /> <dt>{{ phrase('reaction_score') }}</dt> </xf:if> <dd>{$user.reaction_score|number}</dd> </dl> </xf:if> </xf:if> <xf:if is="$extras.trophy_points && $xf.options.enableTrophies"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('points') }}"> <xf:fa icon="fa-trophy" class=" uix_icon uix_icon--trophy" /> </span> </dt> <xf:else /> <dt>{{ phrase('points') }}</dt> </xf:if> <dd>{$user.trophy_points|number}</dd> </dl> </xf:if> <xf:if is="$extras.age && $user.Profile.age"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('age') }}"> <xf:fa icon="fa-birthday-cake" class=" uix_icon uix_icon--birthday" /> </span> </dt> <xf:else /> <dt>{{ phrase('age') }}</dt> </xf:if> <dd>{$user.Profile.age}</dd> </dl> </xf:if> <xf:if is="$extras.location && $user.Profile.location"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('location') }}"> <xf:fa icon="fa-map-marker" class=" uix_icon uix_icon--location" /> </span> </dt> <xf:else /> <dt>{{ phrase('location') }}</dt> </xf:if> <dd data-xf-init="tooltip" title="{$user.Profile.location}"> <xf:if is="$xf.options.geoLocationUrl"> <a href="{{ link('misc/location-info', '', {'location': $user.Profile.location}) }}" rel="nofollow noreferrer" target="_blank" class="u-concealed">{$user.Profile.location}</a> <xf:else /> {$user.Profile.location} </xf:if> </dd> </dl> </xf:if> <xf:if is="$extras.website && $user.Profile.website"> <dl class="pairs pairs--justified"> <xf:if is="property('uix_postBitIcons')"> <dt> <span data-xf-init="tooltip" title="{{ phrase('website') }}"> <xf:fa icon="fa-browser" class=" uix_icon uix_icon--web" /> </span> </dt> <xf:else /> <dt>{{ phrase('website') }}</dt> </xf:if> <dd data-xf-init="tooltip" title="{$user.Profile.website|url('host', phrase('visit_site'))}"><a href="{$user.Profile.website}" rel="nofollow" target="_blank">{$user.Profile.website|url('host', phrase('visit_site'))}</a></dd> </dl> </xf:if> <xf:if is="$extras.custom_fields"> <xf:macro template="custom_fields_macros" name="custom_fields_values" arg-type="users" arg-group="personal" arg-set="{$user.Profile.custom_fields}" arg-additionalFilters="{{ ['message'] }}" arg-valueClass="pairs pairs--justified" /> <xf:if is="$user.canViewIdentities()"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="users" arg-group="contact" arg-set="{$user.Profile.custom_fields}" arg-additionalFilters="{{ ['message'] }}" arg-valueClass="pairs pairs--justified" /> </xf:if> </xf:if> </xf:contentcheck> </div> <xf:if is="{{ property('uix_collapseExtraInfo')}}"> </div> <div class="thThreads__userExtra--toggle"> <span class="thThreads__userExtra--trigger" data-xf-click="ththreads-userextra-trigger"></span> </div> </xf:if> </xf:if> </xf:if> </div> <span class="message-userArrow"></span> </section> </xf:macro> <xf:macro name="user_info_simple" arg-user="!" arg-fallbackName=""> <header itemscope itemtype="https://schema.org/Person" class="message-user"> <meta itemprop="name" content="{{ $user.username ?: $fallbackName }}"> <div class="message-avatar"> <div class="message-avatar-wrapper"> <xf:avatar user="$user" size="s" defaultname="{$fallbackName}" itemprop="image" /> </div> </div> <span class="message-userArrow"></span> </header> </xf:macro> <xf:macro name="attachments" arg-attachments="!" arg-message="!" arg-canView="!"> <xf:if contentcheck="true"> <xf:css src="attachments.less" /> <section class="message-attachments"> <h4 class="block-textHeader">{{ phrase('attachments') }}</h4> <ul class="attachmentList"> <xf:contentcheck> <xf:foreach loop="$attachments" value="$attachment" if="!$message.isAttachmentEmbedded($attachment)"> <xf:macro template="attachment_macros" name="attachment_list_item" arg-attachment="{$attachment}" arg-canView="{$canView}" /> </xf:foreach> </xf:contentcheck> </ul> </section> </xf:if> </xf:macro> <xf:macro name="signature" arg-user="!"> <xf:if is="$xf.visitor.Option.content_show_signature AND $user.Profile.signature"> <xf:if contentcheck="true"> <aside class="message-signature"> <div class="uix_signatureExpand">{{ phrase('th_uix_expand_signature')}}</div> <xf:contentcheck> {{ bb_code($user.Profile.signature, 'user:signature', $user) }} </xf:contentcheck> </aside> </xf:if> </xf:if> </xf:macro>]]>

</template>


-<template title="node_list.less" version_string="2.1.4" version_id="2010470" addon_id="XF" type="public">

<![CDATA[@_nodeList-statsCellBreakpoint: @xf-uix_viewportCollapseStats; @_iconWidth: {{ property('uix_nodeIconWidth') + property('paddingLarge') }}px; .block--category { .block-header { display: flex; align-items: center; .xf-uix_categoryStrip(); <xf:if is="property('uix_categoryStripOutsideWrapper')"> .m-uix_removePageSpacer(); </xf:if> &.uix_stickyCategoryStrips {position: sticky;} .uix_categoryStrip__icon { align-self: flex-start; i { .xf-uix_categoryIconStyle(); vertical-align: middle; &:before { .m-faBase(); .xf-uix_iconFont(); .m-faContent(@fa-var-folder); content: '@xf-uix_glyphForumIcon'; } } } .node-description { .xf-uix_categoryDescription(); } .categoryCollapse--trigger { font-size: @xf-uix_iconSizeLarge; // padding-right: @xf-paddingMedium; margin-left: auto; } } } .uix_nodeList { .block-container {.xf-uix_nodeContainer();} .block-body {.xf-uix_nodeBlockBody();} } .block-body { .node { &:first-child .node-body { border-top-left-radius: @xf-uix_nodeBlockBody--border-radius; border-top-right-radius: @xf-uix_nodeBlockBody--border-radius; } &:last-child .node-body { border-bottom-left-radius: @xf-uix_nodeBlockBody--border-radius; border-bottom-right-radius: @xf-uix_nodeBlockBody--border-radius; } } } .node { & + .node { border-top: @xf-borderSize solid @xf-borderColorFaint; } } .node-body { display: table; table-layout: fixed; width: 100%; transition: all @uix_move .15s; .xf-uix_nodeBody(); &:hover { .xf-uix_nodeBodyHover; <xf:if is="property('uix_nodeClickable')"> cursor: pointer; </xf:if> } <xf:if is="property('uix_nodeStatsHover')"> .node-meta, .node-stats { opacity: 0; transition: @uix_moveOut all .15s; left: -6px; position: relative; } &:hover { .node-meta, .node-stats { transition: @uix_moveIn all .15s; opacity: 1; left: 0; } } </xf:if> } .node--depth2:nth-child(even) .node-body{ background-color: @xf-uix_nodeBodyEven; &:hover { .xf-uix_nodeBodyHover; } } .node-body { display: flex; .node-icon, .node-main {display: inline-block;} .node-main { flex-grow: 1; width: calc(~"100% - {{ property('uix_nodeIconWidth') + property('uix_nodePadding') }}px"); } @media (max-width: @xf-responsiveMedium) { flex-wrap: wrap; .node-extra { width: 100%; padding-left: {{ property('uix_nodeIconWidth') + property('uix_nodePadding') }}px; } } } .node-icon { display: table-cell; vertical-align: top; text-align: center; width: 46px; width: @xf-uix_nodeIconWidth; padding: @xf-uix_nodePadding 0 @xf-uix_nodePadding @xf-uix_nodePadding; flex-shrink: 0; i { display: block; line-height: 1; font-size: 32px; .xf-uix_nodeIconStyle(); &:before { .m-faBase(); <xf:if is="property('uix_iconFontFamily') != 'fontawesome'"> .xf-uix_iconFont(); </xf:if> color: @xf-nodeIconReadColor; .node--unread & { opacity: 1; color: @xf-nodeIconUnreadColor; } } .node--category &:before { .m-faContent(@fa-var-folder); content: '@xf-uix_glyphForumIcon'; } .node--forum &:before { .m-faContent(@fa-var-comments); content: '@xf-uix_glyphForumIcon'; } .node--page &:before { .m-faContent(@fa-var-file-alt); content: '@xf-uix_glyphPageIcon'; } .node--link &:before { .m-faContent(@fa-var-link); content: '@xf-uix_glyphLinkIcon'; } <xf:if is="property('uix_nodeIconImages')"> .xf-uix_imageIcon(); &:before {display: none !important;} </xf:if> } } <xf:if is="property('uix_nodeIconImages')"> .node--category .node-icon i, .node--forum .node-icon i {.xf-uix_imageForumIcon();} .node--forum.node--unread .node-icon i {.xf-uix_imageForumUnreadIcon();} .node--link .node-icon i {.xf-uix_imageLinkIcon();} .node--page .node-icon i {.xf-uix_imagePageIcon();} </xf:if> /* .node--forum &:before { .m-faContent(@fa-var-comments, 1em); content: '@xf-uix_glyphForumIcon'; } .node--page &:before { .m-faContent(@fa-var-file-text, .86em); content: '@xf-uix_glyphPageIcon'; } .node--link &:before { .m-faContent(@fa-var-link, .93em); content: '@xf-uix_glyphLinkIcon'; } */ .node-main { display: table-cell; vertical-align: middle; padding: @xf-uix_nodePadding; } .node-stats { // display: table-cell; display: inline-flex; align-items: center; width: 140px; min-width: 140px; vertical-align: middle; text-align: center; padding: @xf-uix_nodePadding 0; .pairs {line-height: 1.5;} > dl.pairs.pairs--rows { width: 50%; float: left; margin: 0; padding: 0 @xf-paddingMedium/2; border-right: 1px solid @xf-borderColor; &:first-child { padding-left: 0; } &:last-child { padding-right: 0; border-right: 0; } } &.node-stats--single { width: 100px; > dl.pairs.pairs--rows { width: 100%; float: none; } } &.node-stats--triple { width: 240px; > dl.pairs.pairs--rows { width: 33.333%; } } <xf:if is="property('uix_viewportCollapseStats') == '100%'"> display: none; </xf:if> @media (max-width: @_nodeList-statsCellBreakpoint) { display: none; } } @_nodeExtra-avatarSize: 36px; .node-extra { // display: table-cell; display: flex; vertical-align: middle; width: 280px; min-width: 230px; padding: @xf-uix_nodePadding; display: inline-flex; //flex-direction: column; //justify-content: center; align-items: center; font-size: @xf-fontSizeSmall; a:not(:hover) {color: inherit;} .node-extra-title:not(:hover) {color: @xf-textColor;} .uix_nodeExtra__rows { display: flex; flex-wrap: wrap; min-width: 0; max-width: 100%; flex-direction: column; width: 100%; } } .node-extra-row { .m-overflowEllipsis(); color: @xf-textColorMuted; max-width: 100%; .listInline {.m-overflowEllipsis();} } .node-extra-icon { padding-right: @xf-uix_nodePadding; float: left; .avatar { .m-avatarSize(@_nodeExtra-avatarSize); } } .node-extra-title { padding-right: .5em; font-weight: @xf-fontWeightHeavy; } .node-extra-placeholder { font-style: italic; } .node-title { /* -- Changed to Style Property -- Ian -- margin: 0; padding: 0; font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; */ .xf-uix_nodeTitle(); a {color: inherit;} .node--unread & { font-weight: @xf-fontWeightHeavy; .xf-uix_nodeTitle__unread(); } } .node-description { /* UI.X Style property -- Ian font-size: @xf-fontSizeSmall; color: @xf-textColorDimmed; */ .xf-uix_nodeDescription(); &.node-description--tooltip { .has-js:not(.has-touchevents) & { display: none; } } } .node-meta { display: inline; } .node-statsMeta { display: none; .pairs {padding-right: .4em;} dt, dt:after {display: none;} <xf:if is="property('uix_viewportCollapseStats') == '100%'"> display: inline; </xf:if> @media (max-width: @_nodeList-statsCellBreakpoint) { display: inline; } } .node-bonus { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; text-align: right; } .node-subNodesFlat { font-size: @xf-fontSizeSmall; margin-top: .3em; .node-subNodesLabel { display: none; } } .node-subNodeMenu { display: inline; i {display: none;} <xf:if is="property('uix_viewportCollapseStats') == '100%'"> i {display: inline-block;} span {display: none;} </xf:if> @media (max-width: @_nodeList-statsCellBreakpoint) { i {display: inline-block;} span {display: none;} } .menuTrigger { color: @xf-textColorMuted; } } @media (max-width: @xf-responsiveMedium) { .node-main { display: block; width: auto; .node--link &, .node--page & { // #168882: we only display the title for these types // so keep these as table-cells for vertical alignment display: table-cell; } } .node-extra { display: flex; // align-items: center; width: auto; // this gives an equivalent of medium padding between main and extra, with main still having large margin-top: (@xf-paddingMedium - @xf-paddingLarge); padding-top: 0; } .node-extra-row { display: inline-block; vertical-align: top; max-width: 100%; } .node-extra-icon { display: none; } .node-description, .node-subNodesFlat { display: none; } } @media (max-width: @xf-responsiveNarrow) { .node-subNodeMenu { // display: none; } } .subNodeLink { &:before { display: inline-block; .m-faBase(); <xf:if is="property('uix_iconFontFamily') != 'fontawesome'"> .xf-uix_iconFont(); </xf:if> width: 1em; padding-right: .3em; text-decoration: none; color: @xf-textColorMuted; } &:hover:before { text-decoration: none; } &.subNodeLink--unread { font-weight: @xf-fontWeightHeavy; &:before { color: @xf-nodeIconUnreadColor; } } &.subNodeLink--forum:before { .m-faContent(@fa-var-comments); content: '@xf-uix_glyphForumIcon'; } &.subNodeLink--category:before { .m-faContent(@fa-var-folder); content: '@xf-uix_glyphCategoryIcon'; } &.subNodeLink--page:before { .m-faContent(@fa-var-file-alt); content: '@xf-uix_glyphPageIcon'; } &.subNodeLink--link:before { .m-faContent(@fa-var-link); content: '@xf-uix_glyphLinkIcon'; } } .node-subNodeFlatList { .m-listPlain(); .m-clearFix(); > li { display: inline-block; margin-right: 1em; &:last-child { margin-right: 0; } a { .xf-uix_subForumTitle(); } } ol, ul, .node-subNodes { display: none; } } .subNodeMenu { .m-listPlain(); ol, ul { .m-listPlain(); } .subNodeLink { display: block; padding: (@xf-blockPaddingV / 2) @xf-blockPaddingH; text-decoration: none; cursor: pointer; &:hover { text-decoration: none; background: @xf-contentHighlightBg; } } li li .subNodeLink { padding-left: 1.5em; } li li li .subNodeLink { padding-left: 3em; } li li li li .subNodeLink { padding-left: 4.5em; } li li li li li .subNodeLink { padding-left: 6em; } li li li li li li .subNodeLink { padding-left: 7.5em; } }]]>

</template>


-<template title="node_list_category" version_string="2.1.4" version_id="2010470" addon_id="XF" type="public">

<![CDATA[<xf:macro name="depth1" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="block block--category block--category{$node.node_id} <xf:if is="$node.isCollapsed_uix()">category--collapsed</xf:if>"> <span class="u-anchorTarget" id="{$node.Data.getCategoryAnchor()}"></span> <xf:if is="property('uix_categoryStripOutsideWrapper')"> <h2 class="block-header js-nodeMain{{ property('uix_stickyCategoryStrips') ? ' uix_stickyCategoryStrips' : '' }}"> <xf:if is="property('uix_categoryStripIcons')"> <div class="uix_categoryStrip__icon"> <i class="uix_icon uix_icon--category"></i> </div> </xf:if> <div class="uix_categoryStrip-content"> <xf:comment><a href="{{ link('categories', $node) }}">{$node.title}</a></xf:comment> <xf:comment><xf:if is="{$node.description}"><div class="block-desc">{$node.description|raw}</div></xf:if></xf:comment> <xf:set var="$uix_categoryDescriptionDisplay" value="{{ property('uix_categoryDescriptionDisplay') }}" /> <a href="{{ link('categories', $node) }}" class="uix_categoryTitle" data-xf-init="{{ $uix_categoryDescriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a> <xf:if is="$uix_categoryDescriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $uix_categoryDescriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div> </xf:if> </div> <xf:if is="{{ property('uix_categoryCollapse') && $xf.visitor->hasPermission('th_uix', 'collapseCategories') }}"> <a class="u-ripple categoryCollapse--trigger" rel="nofollow"><xf:fa icon="fa-chevron-up" class=" uix_icon uix_icon--chevron-up" /></a> </xf:if> </h2> </xf:if> <div class="block-container"> <xf:if is="!property('uix_categoryStripOutsideWrapper')"> <h2 class="block-header js-nodeMain {{ property('uix_stickyCategoryStrips') ? ' uix_stickyCategoryStrips' : '' }}"> <xf:if is="property('uix_categoryStripIcons')"> <div class="uix_categoryStrip__icon"> <i class="uix_icon uix_icon--category"></i> </div> </xf:if> <div class="uix_categoryStrip-content"> <xf:comment><a href="{{ link('categories', $node) }}">{$node.title}</a></xf:comment> <xf:comment><xf:if is="{$node.description}"><span class="block-desc">{$node.description|raw}</span></xf:if></xf:comment> <xf:set var="$uix_categoryDescriptionDisplay" value="{{ property('uix_categoryDescriptionDisplay') }}" /> <a href="{{ link('categories', $node) }}" class="uix_categoryTitle" data-xf-init="{{ $uix_categoryDescriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a> <xf:if is="$uix_categoryDescriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $uix_categoryDescriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div> </xf:if> </div> <xf:if is="{{ property('uix_categoryCollapse') && $xf.visitor->hasPermission('th_uix', 'collapseCategories') }}"> <a class="u-ripple categoryCollapse--trigger" rel="nofollow"><xf:fa icon="fa-chevron-up" class=" uix_icon uix_icon--chevron-up" /></a> </xf:if> </h2> </xf:if> <div class="uix_block-body--outer"> <div class="block-body"> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </div> </div> </div> </div> </xf:macro> <xf:macro name="depth2" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="node below--xl node--id{$node.node_id} node--depth{$depth} node--category {{ $extras.hasNew ? 'node--unread' : 'node--read' }}"> <div class="node-body"> <span class="node-icon" aria-hidden="true"><i></i></span> <div class="node-main js-nodeMain"> <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" /> <h3 class="node-title"> <a href="{{ link('categories', $node) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a> <xf:if is="{$extras.hasNew} && property('uix_newNodeMarker')"><span class="uix_newIndicator">{{ phrase('new') }}</span></xf:if> </h3> <xf:if is="$descriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div> </xf:if> <xf:if is="!property('uix_hideNodeStats')"> <div class="node-meta"> <xf:if is="!{$extras.privateInfo}"> <div class="node-statsMeta"> <dl class="pairs pairs--inline"> <xf:if is="property('uix_nodeStatsIcons')"> <dt><xf:fa icon="fa-comment" class=" uix_icon uix_icon--post" /></dt> <xf:else /> <dt>{{ phrase('threads') }}</dt> </xf:if> <dd>{$extras.discussion_count|number_short(1)}</dd> </dl> <dl class="pairs pairs--inline"> <xf:if is="property('uix_nodeStatsIcons')"> <dt><xf:fa icon="fa-comments" class=" uix_icon uix_icon--messages" /></dt> <xf:else /> <dt>{{ phrase('messages') }}</dt> </xf:if> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </div> </xf:if> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'menu'"> <xf:macro template="forum_list" name="sub_nodes_menu" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> </xf:if> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'flat'"> <xf:macro template="forum_list" name="sub_nodes_flat" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> <xf:if is="!{$extras.privateInfo} && !property('uix_hideNodeStats')"> <div class="node-stats"> <dl class="pairs pairs--rows"> <dd>{$extras.discussion_count|number_short(1)}</dd> <dt>{{ phrase('threads') }}</dt> </dl> <dl class="pairs pairs--rows"> <dd>{$extras.message_count|number_short(1)}</dd> <dt>{{ phrase('messages') }}</dt> </dl> </div> </xf:if> <xf:if is="!property('uix_hideNodeLastPost')"> <div class="node-extra"> <xf:if is="{$extras.privateInfo}"> <span class="node-extra-placeholder">{{ phrase('private') }}</span> <xf:elseif is="{$extras.LastThread}" /> <div class="node-extra-icon"> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <xf:avatar user="{{ null }}" size="xs" /> <xf:else /> <xf:avatar user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" size="xs" /> </xf:if> </div> <div class="uix_nodeExtra__rows"> <div class="node-extra-row"> <xf:if is="$extras.LastThread.isUnread()"> <a href="{{ link('threads/unread', $extras.LastThread) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> <xf:else /> <a href="{{ link('threads/post', $extras.LastThread, {'post_id': $extras.last_post_id}) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> </xf:if> </div> <div class="node-extra-row"> <ul class="listInline listInline--bullet"> <li class="node-extra-date"><xf:date time="{$extras.last_post_date}" /></li> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <li class="node-extra-user">{{ phrase('ignored_member') }}</li> <xf:else /> <li class="node-extra-user"><xf:username user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" /></li> </xf:if> </ul> </div> </div> <xf:else /> <span class="node-extra-placeholder">{{ phrase('none') }}</span> </xf:if> </div> </xf:if> </div> </div> </xf:macro> <xf:macro name="depthN" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <li> <a href="{{ link('categories', $node) }}" class="subNodeLink subNodeLink--category {{ $extras.hasNew ? 'subNodeLink--unread' : '' }}">{$node.title}</a> <xf:macro template="forum_list" name="sub_node_list" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </li> </xf:macro>]]>

</template>


-<template title="node_list_forum" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[<xf:macro name="depth1" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:macro name="forum" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> </div> </div> </div> </xf:macro> <xf:macro name="depth2" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <xf:macro name="forum" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> </xf:macro> <xf:macro name="depthN" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <li> <a href="{{ link('forums', $node) }}" class="subNodeLink subNodeLink--forum {{ $extras.hasNew ? 'subNodeLink--unread' : '' }}">{$node.title}</a> <xf:macro template="forum_list" name="sub_node_list" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </li> </xf:macro> <xf:macro name="forum" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="!" arg-chooseName="" arg-bonusInfo=""> <div class="node node--id{$node.node_id} node--depth{$depth} node--forum {{ $extras.hasNew ? 'node--unread' : 'node--read' }}"> <div class="node-body"> <span class="node-icon" aria-hidden="true"><i></i></span> <div class="node-main js-nodeMain"> <xf:if is="$chooseName"> <xf:checkbox standalone="true"> <xf:option labelclass="u-pullRight" class="js-chooseItem" name="{$chooseName}[]" value="{$node.node_id}" /> </xf:checkbox> </xf:if> <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" /> <h3 class="node-title"> <a href="{{ link('forums', $node) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a> <xf:if is="{$extras.hasNew} && property('uix_newNodeMarker')"><span class="uix_newIndicator">{{ phrase('new') }}</span></xf:if> </h3> <xf:if is="$descriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div> </xf:if> <xf:if is="!property('uix_hideNodeStats')"> <div class="node-meta"> <xf:if is="!{$extras.privateInfo}"> <div class="node-statsMeta"> <dl class="pairs pairs--inline"> <dd>{$extras.discussion_count|number_short(1)}</dd> <xf:if is="property('uix_nodeStatsIcons')"> <dt><xf:fa icon="fa-comment" class=" uix_icon uix_icon--post" /></dt> <xf:else /> <dt>{{ phrase('threads') }}</dt> </xf:if> </dl> <dl class="pairs pairs--inline"> <dd>{$extras.message_count|number_short(1)}</dd> <xf:if is="property('uix_nodeStatsIcons')"> <dt><xf:fa icon="fa-comments" class=" uix_icon uix_icon--messages" /></dt> <xf:else /> <dt>{{ phrase('messages') }}</dt> </xf:if> </dl> </div> </xf:if> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'menu'"> <xf:macro template="forum_list" name="sub_nodes_menu" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> </xf:if> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'flat'"> <xf:macro template="forum_list" name="sub_nodes_flat" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> <xf:if is="$bonusInfo is not empty"> <div class="node-bonus">{$bonusInfo}</div> </xf:if> </div> <xf:if is="!{$extras.privateInfo} && !property('uix_hideNodeStats')"> <div class="node-stats"> <dl class="pairs pairs--rows"> <dd>{$extras.discussion_count|number_short(1)}</dd> <dt>{{ phrase('threads') }}</dt> </dl> <dl class="pairs pairs--rows"> <dd>{$extras.message_count|number_short(1)}</dd> <dt>{{ phrase('messages') }}</dt> </dl> </div> </xf:if> <xf:if is="!property('uix_hideNodeLastPost')"> <div class="node-extra"> <xf:if is="{$extras.privateInfo}"> <span class="node-extra-placeholder">{{ phrase('private') }}</span> <xf:elseif is="{$extras.LastThread}" /> <div class="node-extra-icon"> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <xf:avatar user="{{ null }}" size="xs" /> <xf:else /> <xf:avatar user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" size="xs" /> </xf:if> </div> <div class="uix_nodeExtra__rows"> <div class="node-extra-row"> <xf:if is="$extras.LastThread.isUnread()"> <a href="{{ link('threads/unread', $extras.LastThread) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> <xf:else /> <a href="{{ link('threads/post', $extras.LastThread, {'post_id': $extras.last_post_id}) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> </xf:if> </div> <div class="node-extra-row"> <ul class="listInline listInline--bullet"> <li><xf:date time="{$extras.last_post_date}" class="node-extra-date" /></li> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <li class="node-extra-user">{{ phrase('ignored_member') }}</li> <xf:else /> <li class="node-extra-user"><xf:username user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" /></li> </xf:if> </ul> </div> </div> <xf:else /> <span class="node-extra-placeholder">{{ phrase('none') }}</span> </xf:if> </div> </xf:if> </div> </div> <xf:if is="{$depth} == 1"> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </xf:macro>]]>

</template>


-<template title="normalize.css" version_string="2.0.0" version_id="2000070" addon_id="XF" type="public">

<![CDATA[/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ button,hr,input{overflow:visible}audio,canvas,progress,video{display:inline-block}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bold}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}]]>

</template>


-<template title="notice_cookies" version_string="2.1.3" version_id="2010370" addon_id="XF" type="public">

<![CDATA[<div class=""> {{ phrase('this_site_uses_cookies_notice') }} </div> <div class="u-inputSpacer u-alignCenter uix_cookieButtonRow"> <xf:button icon="confirm" href="{{ link('account/dismiss-notice', null, {'notice_id': $notice.notice_id}) }}" class="js-noticeDismiss button--notice">{{ phrase('accept') }}</xf:button> <xf:button href="{{ link('help/cookies') }}" class="button--notice">{{ phrase('learn_more...') }}</xf:button> </div>]]>

</template>


-<template title="notice_macros" version_string="2.1.3" version_id="2010370" addon_id="XF" type="public">

<![CDATA[<xf:macro name="notice_list" arg-type="!" arg-notices="!"> <xf:if is="{$notices} is not empty"> <xf:css src="notices.less" /> <xf:js src="xf/notice.js" min="1" /> <xf:if is="$type == 'scrolling'"> <xf:css src="lightslider.less" /> <xf:js prod="xf/carousel-compiled.js" dev="vendor/lightslider/lightslider.min.js, xf/carousel.js" /> </xf:if> <ul class="notices notices--{$type} {{ count($notices) > 1 ? 'notices--isMulti' : '' }} js-notices" data-xf-init="notices" data-type="{$type}" data-scroll-interval="{{ property('noticeScrollInterval') }}"> <xf:foreach loop="{$notices}" value="$notice"> <xf:macro name="notice" arg-notice="{$notice}" arg-type="{$type}" arg-contentHtml="{$notice.message}" /> </xf:foreach> </ul> </xf:if> </xf:macro> <xf:macro name="notice" arg-notice="!" arg-type="!" arg-contentHtml="!"> <li class="notice js-notice {{ $notice.display_style == 'custom' ? $notice.css_class : 'notice--' . $notice.display_style }}{{ $notice.display_image ? ' notice--hasImage' : '' }}{{ $notice.visibility ? ' notice--hide' . $notice.visibility : '' }}" data-notice-id="{$notice.notice_id}" data-delay-duration="{$notice.delay_duration}" data-display-duration="{$notice.display_duration}" data-auto-dismiss="{$notice.auto_dismiss}" data-visibility="{$notice.visibility}"> <div class="uix_noticeInner"> <div class="uix_noticeIcon"> <xf:if is="({$notice.thuix_icon} == 'mdi mdi-information') || ({$notice.thuix_icon} == '')"> <xf:fa icon="fa-info-circle" class="mdi mdi-information" /> <xf:else /> <i class="{$notice.thuix_icon}"></i> </xf:if> </div> <xf:if is="$notice.display_image == 'avatar'"> <div class="notice-image"><xf:avatar user="$xf.visitor" size="s" href="" /></div> <xf:elseif is="$notice.display_image == 'image'" /> <div class="notice-image"><img src="{$notice.image_url}" alt="" /></div> </xf:if> <div class="notice-content"> <xf:if is="$notice.dismissible AND !$notice.custom_dismissible"> <a href="{{ link('account/dismiss-notice', null, {'notice_id': $notice.notice_id}) }}" class="notice-dismiss js-noticeDismiss" data-xf-init="tooltip" title="{{ phrase('dismiss_notice')|for_attr }}"></a> </xf:if> {$contentHtml|raw} </div> </div> </li> </xf:macro>]]>

</template>


-<template title="notices.less" version_string="2.1.0 Release Candidate 2" version_id="2010052" addon_id="XF" type="public">

<![CDATA[@_notice-darkBg: @xf-paletteColor4; @_notice-lightBg: #fff; @_notice-floatingFade: 100%; @_notice-imageSize: 48px; @_notice-padding: @xf-paddingLarge; .notices { .m-listPlain(); &.notices--block { .notice { margin-bottom: @xf-elementSpacer; } } &.notices--floating { // assumed to be within u-bottomFixer margin: 0 auto 0 @xf-elementSpacer; width: 300px; max-width: 100%; z-index: @zIndex-8; @media (max-width: 340px) { margin-right: 10px; } .notice { margin-bottom: 20px; } } .uix_noticeInner { display: flex; } .uix_noticeIcon { display: flex; align-items: center; padding: 0 8px; color: rgba(255,255,255,.5); font-size: 24px; } &.notices--scrolling { display: flex; align-items: stretch; overflow: hidden; .xf-blockBorder(); margin-bottom: ((@xf-elementSpacer) / 2); &.notices--isMulti { margin-bottom: ((@xf-elementSpacer) / 2) + 20px; } .notice { width: 100%; flex-grow: 0; flex-shrink: 0; border: none; box-shadow: none; } } } .noticeScrollContainer { margin-bottom: ((@xf-elementSpacer) / 2); box-shadow: @xf-uix_elevation1; <xf:if is="property('uix_similarScrollNotice')"> border: 2px solid @xf-uix_primaryColor; </xf:if> <xf:if is="property('uix_similarScrollNotice')"> .uix_noticeIcon {background: @xf-uix_primaryColor;} </xf:if> .lSSlideWrapper { .xf-blockBorder(); } .notices.notices--scrolling { border: none; margin-bottom: 0; } <xf:if is="property('uix_similarScrollNotice')"> .notice { &.notice--primary, &.notice--accent, &.notice--dark, &.notice--light {.xf-contentBase();} a {color: @xf-linkColor;} } </xf:if> .lSPager {.xf-contentBase();} } .notice { .m-clearFix(); position: relative; .xf-blockBorder(); .xf-contentBase(); border: 2px solid @xf-borderColor; &.notice--primary { .xf-contentBase(); border: 2px solid @xf-uix_primaryColor; .uix_noticeIcon {background: @xf-uix_primaryColor;} } &.notice--accent { border: 2px solid @xf-uix_secondaryColor; .uix_noticeIcon {background: @xf-uix_secondaryColor;} a:not(.button--notice) { .xf-contentAccentLink(); } } &.notice--dark { //background: @_notice-darkBg; background: @xf-uix_primaryColor; color: #fff; border-color: lighten(@xf-uix_primaryColor, 30%); a:not(.button--notice) { color: @xf-linkColor; } a.notice-dismiss {color: inherit;} } &.notice--light { color: rgb(20, 20, 20); background: @_notice-lightBg; .uix_noticeIcon {background: @xf-borderColor; color: @xf-textColorMuted;} a:not(.button--notice) { color: rgb(130, 130, 130); } } &.notice--enablePush { display: none; @media (max-width: @xf-responsiveWide) { padding: @xf-paddingSmall @xf-paddingSmall @xf-paddingLarge; font-size: @xf-fontSizeSmall; } } &.notice--cookie { @media (max-width: @xf-responsiveWide) { .notice-content { padding: @xf-paddingSmall @xf-paddingSmall; font-size: @xf-fontSizeSmaller; .button--notice { font-size: @xf-fontSizeSmaller; padding: @xf-paddingSmall @xf-paddingMedium; .button-text { font-size: @xf-fontSizeSmaller; } } } } } .notices--block & { font-size: @xf-fontSizeNormal; border-radius: @xf-blockBorderRadius; } .notices--floating & { font-size: @xf-fontSizeSmallest; border-radius: @xf-borderRadiusMedium; box-shadow: @xf-uix_elevation1; <xf:comment> &.notice--primary { background-color: fade(@xf-contentHighlightBase--background-color, @_notice-floatingFade); } &.notice--accent { background-color: fade(@xf-contentAccentBase--background-color, @_notice-floatingFade); } &.notice--dark { background-color: fade(@_notice-darkBg, @_notice-floatingFade); } &.notice--light { background-color: fade(@_notice-lightBg, @_notice-floatingFade); } </xf:comment> .has-js & { display: none; } } &.notice--hasImage { .notice-content { min-height: ((@_notice-imageSize) + (@_notice-padding) * 2); } } // note: visibility hidden is used by the JS to detect when responsiveness is hiding a notice @media (max-width: @xf-responsiveWide) { &.notice--hidewide:not(.is-vis-processed) { display: none; visibility: hidden; } } @media (max-width: @xf-responsiveMedium) { &.notice--hidemedium:not(.is-vis-processed) { display: none; visibility: hidden; } } @media (max-width: @xf-responsiveNarrow) { &.notice--hidenarrow:not(.is-vis-processed) { display: none; visibility: hidden; } } } .notice-image { float: left; padding: @_notice-padding 0 @_notice-padding @_notice-padding; img { max-width: @_notice-imageSize; max-height: @_notice-imageSize; } } .notice-content { padding: @_notice-padding; flex-grow: 1; // color: @xf-textColorDimmed; a.notice-dismiss { &:before { .m-faBase(); .m-faContent(@fa-var-times, .69em); } float: right; color: inherit; font-size: 16px; line-height: 1; height: 1em; box-sizing: content-box; padding: 0 0 5px 5px; opacity: .5; .m-transition(opacity); cursor: pointer; &:hover { text-decoration: none; opacity: 1; } .notices--floating & { font-size: 14px; } } }]]>

</template>


-<template title="page_style" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<style> .uix_headerContainer .p-navSticky.is-sticky { top: {{ $uix_stickyStaffBarHeight }} !important; } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar}"> @media (max-width: {{ property('uix_staffBarBreakpoint')}}) { .uix_headerContainer .p-navSticky.is-sticky { top: 0 !important; } } </xf:if> <xf:set var="$uix_stickyTabsHeight" value="0" /> <xf:if is="$uix_hasMainTabs && ({{property('uix_tabBarLocation')}} == 'header') && {{property('uix_mainTabsSticky')}}"> <xf:set var="$uix_stickyTabsHeight" value="{{ property('uix_mainTabsHeight')}}" /> </xf:if> <xf:set var="$uix_stickyNavHeightTotal" value="0" /> <xf:set var="$uix_stickyNavPrimary" value="0" /> <xf:if is="!{$uix_hideNavigation}"> <xf:if is="property('publicNavSticky') == 'primary'"> <xf:set var="$uix_stickyNavHeightTotal" value="{{property('uix_stickyNavHeight')}}" /> <xf:set var="$uix_stickyNavPrimary" value="{{property('uix_stickyNavHeight')}}" /> <xf:elseif is="property('publicNavSticky') == 'all'" /> <xf:set var="$uix_stickyNavPrimary" value="{{property('uix_stickyNavHeight')}}" /> <xf:if is="{{property('uix_viewportWidthRemoveSubNav')}} != '100%'"> <xf:set var="$uix_stickyNavHeightTotal" value="{{property('uix_stickyNavHeight') + property('uix_stickySectionLinkHeight')}}" /> <xf:else /> <xf:set var="$uix_stickyNavHeightTotal" value="{{property('uix_stickyNavHeight')}}" /> </xf:if> </xf:if> </xf:if> <xf:set var="$uix_subNavBreakpoint" value="{{ property('uix_viewportWidthRemoveSubNav')}}"/> <xf:if is="!{$uix_subNavContentStatic}"> <xf:set var="$uix_subNavBreakpoint" value="$uix_sidebarBreakpoint"/> </xf:if> <xf:if is="(!{$uix_subNavContentStatic}) || {$uix_subNavContentStatic}"> <xf:set var="$uix_stickyTotal" value="{{ $uix_stickyStaffBarHeight + $uix_stickyNavHeightTotal + property('elementSpacer') + $uix_stickyTabsHeight}}" /> .uix_mainTabBar {top: {{$uix_stickyStaffBarHeight + $uix_stickyNavHeightTotal}}px !important;} .uix_stickyBodyElement:not(.offCanvasMenu) { top: {{$uix_stickyTotal}}px !important; min-height: calc(100vh - {{$uix_stickyTotal}}px) !important; } .uix_sidebarInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .uix_sidebarInner {margin-top: -{{$uix_stickyTotal}}px;} .p-body-sideNavInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .p-body-sideNavInner {margin-top: -{{$uix_stickyTotal}}px;} .uix_stickyCategoryStrips {top: {{$uix_stickyTotal}}px !important;} #XF .u-anchorTarget { height: {{$uix_stickyTotal}}px; margin-top: -{{$uix_stickyTotal}}px; } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar}"> @media(max-width: {{ property('uix_staffBarBreakpoint') }}) { <xf:set var="$uix_stickyTotal" value="{{ $uix_stickyNavHeightTotal + property('elementSpacer') + $uix_stickyTabsHeight}}" /> .uix_mainTabBar {top: {{$uix_stickyNavHeightTotal}}px !important;} .uix_stickyBodyElement:not(.offCanvasMenu) { top: {{$uix_stickyTotal}}px !important; min-height: calc(100vh - {{$uix_stickyTotal}}px) !important; } .uix_sidebarInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .uix_sidebarInner {margin-top: -{{$uix_stickyTotal}}px;} .p-body-sideNavInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .p-body-sideNavInner {margin-top: -{{$uix_stickyTotal}}px;} .uix_stickyCategoryStrips {top: {{$uix_stickyTotal}}px !important;} #XF .u-anchorTarget { height: {{$uix_stickyTotal}}px; margin-top: -{{$uix_stickyTotal}}px; } } </xf:if> <xf:if is="{$uix_subNavBreakpoint} != '100%'"> @media (max-width: {$uix_subNavBreakpoint}) { </xf:if> .p-sectionLinks {display: none;} <xf:set var="$uix_stickyTotal" value="{{ $uix_stickyStaffBarHeight + $uix_stickyNavPrimary + property('elementSpacer') + $uix_stickyTabsHeight}}" /> .uix_mainTabBar {top: {{$uix_stickyStaffBarHeight + $uix_stickyNavPrimary}}px !important;} .uix_stickyBodyElement:not(.offCanvasMenu) { top: {{$uix_stickyTotal}}px !important; min-height: calc(100vh - {{$uix_stickyTotal}}px) !important; } .uix_sidebarInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .uix_sidebarInner {margin-top: -{{$uix_stickyTotal}}px;} .p-body-sideNavInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .p-body-sideNavInner {margin-top: -{{$uix_stickyTotal}}px;} .uix_stickyCategoryStrips {top: {{$uix_stickyTotal}}px !important;} #XF .u-anchorTarget { height: {{$uix_stickyTotal}}px; margin-top: -{{$uix_stickyTotal}}px; } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar}"> @media(max-width: {{ property('uix_staffBarBreakpoint') }}) { <xf:set var="$uix_stickyTotal" value="{{ $uix_stickyNavPrimary + property('elementSpacer') + $uix_stickyTabsHeight }}" /> .uix_mainTabBar {top: {{$uix_stickyNavPrimary}} !important;} .uix_stickyBodyElement:not(.offCanvasMenu) { top: {{$uix_stickyTotal}}px !important; min-height: calc(100vh - {{$uix_stickyTotal}}px) !important; } .uix_sidebarInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .uix_sidebarInner {margin-top: -{{$uix_stickyTotal}}px;} .p-body-sideNavInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .p-body-sideNavInner {margin-top: -{{$uix_stickyTotal}}px;} .uix_stickyCategoryStrips {top: {{$uix_stickyTotal}}px !important;} #XF .u-anchorTarget { height: {{$uix_stickyTotal}}px; margin-top: -{{$uix_stickyTotal}}px; } } </xf:if> <xf:if is="{$uix_subNavBreakpoint} != '100%'"> } </xf:if> <xf:else /> <xf:set var="$uix_stickyTotal" value="{{ $uix_stickyStaffBarHeight + $uix_stickyNavPrimary + property('elementSpacer') + $uix_stickyTabsHeight}}" /> .uix_mainTabBar {top: {{$uix_stickyStaffBarHeight + $uix_stickyNavPrimary}}px !important;} .uix_stickyBodyElement:not(.offCanvasMenu) { top: {{$uix_stickyTotal}}px !important; min-height: calc(100vh - {{$uix_stickyTotal}}px) !important; } .uix_sidebarInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .uix_sidebarInner {margin-top: -{{$uix_stickyTotal}}px;} .p-body-sideNavInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .p-body-sideNavInner {margin-top: -{{$uix_stickyTotal}}px;} .uix_stickyCategoryStrips {top: {{$uix_stickyTotal}}px !important;} #XF .u-anchorTarget { height: {{$uix_stickyTotal}}px; margin-top: -{{$uix_stickyTotal}}px; } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar}"> <xf:if is="{{ property('uix_staffBarBreakpoint')}} != '100%'"> @media(max-width: {{ property('uix_staffBarBreakpoint') }}) { </xf:if> <xf:set var="$uix_stickyTotal" value="{{ $uix_stickyNavHeightTotal + property('elementSpacer') + $uix_stickyTabsHeight}}" /> .uix_mainTabBar {top: {{$uix_stickyNavHeightTotal}} !important;} .uix_stickyBodyElement:not(.offCanvasMenu) { top: {{$uix_stickyTotal}}px !important; min-height: calc(100vh - {{$uix_stickyTotal}}px) !important; } .uix_sidebarInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .uix_sidebarInner {margin-top: -{{$uix_stickyTotal}}px;} .p-body-sideNavInner .uix_sidebar--scroller {margin-top: {{$uix_stickyTotal}}px;} .p-body-sideNavInner {margin-top: -{{$uix_stickyTotal}}px;} .uix_stickyCategoryStrips {top: {{$uix_stickyTotal}}px !important;} #XF .u-anchorTarget { height: {{$uix_stickyTotal}}px; margin-top: -{{$uix_stickyTotal}}px; } <xf:if is="{{ property('uix_staffBarBreakpoint')}} != '100%'"> } </xf:if> </xf:if> </xf:if> .uix_sidebarNav .uix_sidebar--scroller {max-height: calc(100vh - {$uix_stickyTotal}px);} <xf:if is="property('uix_scrollableSidebar')"> .uix_sidebarInner .uix_sidebar--scroller {max-height: calc(100vh - {$uix_stickyTotal}px);} </xf:if> <xf:if is="property('uix_scrollableSidenav')"> .p-body-sideNavInner .uix_sidebar--scroller {max-height: calc(100vh - {$uix_stickyTotal}px);} </xf:if> </style> <xf:if is="property('uix_stickySidebar') == 'sticky'"> <xf:js> $(".uix_sidebarInner .uix_sidebar--scroller").stick_in_parent({ parent: '.p-body-main', }); $(".p-body-sideNavInner .uix_sidebar--scroller").stick_in_parent({ parent: '.p-body-main', }); <xf:if is="{{property('uix_stickySidebarCalcDelay')}} != '0'"> $(document).ready(function() { window.setTimeout(function() { Ваш домен.руmon[20180112].resizeFire() }, {{property('uix_stickySidebarCalcDelay')}}); }) </xf:if> </xf:js> </xf:if>]]>

</template>


-<template title="post_edit_new_post" version_string="2.1.0 Release Candidate 1" version_id="2010051" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title> <xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1> <div class="block-outer js-threadStatusField"><xf:trim> <xf:if contentcheck="true"> <div class="blockStatus blockStatus--info"> <xf:contentcheck> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="threads" arg-group="thread_status" arg-onlyInclude="{$thread.Forum.field_cache}" arg-set="{$thread.custom_fields}" arg-wrapperClass="blockStatus-message" /> </xf:contentcheck> </div> </xf:if> </xf:trim></div> <xf:macro template="post_macros" name="post" arg-post="{$post}" arg-thread="{$thread}" />]]>

</template>


-<template title="post_macros" version_string="2.1.0" version_id="2010070" addon_id="XF" type="public">

<![CDATA[<xf:macro name="post" arg-post="!" arg-thread="!" arg-uix_condensed=""> <xf:css src="message.less" /> <xf:set var="$isIgnored" value="{{ $post.isIgnored() }}" /> <article class="message message--post {{ $uix_condensed ? 'uix_message--condensed' : '' }} js-post js-inlineModContainer {{ $isIgnored ? 'is-ignored' : '' }} {{ $post.isUnread() ? ' is-unread' : '' }}" data-author="{{ $post.User.username ?: $post.username }}" data-content="post-{$post.post_id}" id="js-post-{$post.post_id}"> <span class="u-anchorTarget" id="post-{$post.post_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info" arg-user="{$post.User}" arg-threadUserId="{$thread.User.user_id}" arg-fallbackName="{$post.username}"/> </div> <div class="message-cell message-cell--main"> <div class="message-main uix_messageContent js-quickEditTarget"> <header class="message-attribution message-attribution--split"> <div class="message-attribution-main"> <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="u-concealed" rel="nofollow"> <xf:date time="{$post.post_date}"/> </a> </div> <ul class="message-attribution-opposite message-attribution-opposite--list"> <xf:if is="$post.isUnread()"> <li><span class="message-newIndicator">{{ phrase('new') }}</span></li> </xf:if> <li> <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" data-xf-init="share-tooltip" data-href="{{ link('posts/share', $post) }}" rel="nofollow"> <xf:fa icon="fa-share-alt" class="uix_icon uix_icon--share" /> </a> </li> <xf:if contentcheck="true"> <li> <xf:contentcheck> <xf:macro template="bookmark_macros" name="link" arg-content="{$post}" arg-class="bookmarkLink--highlightable" arg-confirmUrl="{{ link('posts/bookmark', $post) }}" arg-showText="{{ false }}"/> </xf:contentcheck> </li> </xf:if> <xf:if is="!$hidePosition"> <li> <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" rel="nofollow"> #{{ number($post.position + 1) }} </a> </li> </xf:if> </ul> </header> <div class="message-content js-messageContent"> <xf:if is="$post.message_state == 'deleted'"> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" /> </div> <xf:elseif is="$post.message_state == 'moderated'" /> <div class="messageNotice messageNotice--moderated"> {{ phrase('this_message_is_awaiting_moderator_approval_and_is_invisible_to_normal') }} </div> </xf:if> <xf:if is="$post.warning_message"> <div class="messageNotice messageNotice--warning"> {$post.warning_message} </div> </xf:if> <xf:if is="$isIgnored"> <div class="messageNotice messageNotice--ignored"> {{ phrase('you_are_ignoring_content_by_this_member') }} <xf:showignored /> </div> </xf:if> <div class="message-userContent lbContainer js-lbContainer {{ $isIgnored ? 'is-ignored' : '' }}" data-lb-id="post-{$post.post_id}" data-lb-caption-desc="{{ $post.User ? $post.User.username : $post.username }} &middot; {{ date_time($post.post_date) }}"> <xf:if is="$post.isFirstPost()"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="threads" arg-group="before" arg-onlyInclude="{$thread.Forum.field_cache}" arg-set="{$thread.custom_fields}" arg-wrapperClass="message-fields message-fields--before" /> </xf:if> <article class="message-body js-selectToQuote"> <xf:ad position="post_above_content" arg-post="{$post}" /> {{ bb_code($post.message, 'post', $post) }} <div class="js-selectToQuoteEnd">&nbsp;</div> <xf:ad position="post_below_content" arg-post="{$post}" /> </article> <xf:if is="$post.isFirstPost()"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="threads" arg-group="after" arg-onlyInclude="{$thread.Forum.field_cache}" arg-set="{$thread.custom_fields}" arg-wrapperClass="message-fields message-fields--after" /> </xf:if> <xf:if is="$post.attach_count"> <xf:macro template="message_macros" name="attachments" arg-attachments="{$post.Attachments}" arg-message="{$post}" arg-canView="{{ $thread.canViewAttachments() }}" /> </xf:if> </div> <xf:if is="$post.last_edit_date"> <div class="message-lastEdit"> <xf:if is="$post.user_id == $post.last_edit_user_id"> {{ phrase('last_edited:') }} <xf:date time="{$post.last_edit_date}" /> <xf:else /> {{ phrase('last_edited_by_moderator:') }} <xf:date time="{$post.last_edit_date}" /> </xf:if> </div> </xf:if> <xf:macro template="message_macros" name="signature" arg-user="{$post.User}" /> </div> <div class="reactionsBar js-reactionsList {{ $post.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$post}" link="posts/reactions" /> </div> <footer class="message-footer"> <xf:if contentcheck="true"> <div class="message-actionBar actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$post}" link="posts/react" list="< .js-post | .js-reactionsList" /> <xf:if is="$thread.canReply()"> <xf:set var="$quoteLink">{{ link('threads/reply', $thread, {'quote': $post.post_id}) }}</xf:set> <xf:if is="$xf.options.multiQuote"> <a href="{$quoteLink}" class="actionBar-action actionBar-action--mq u-jsOnly js-multiQuote" title="{{ phrase('toggle_multi_quote_tooltip')|for_attr }}" data-message-id="{$post.post_id}" data-mq-action="add">{{ phrase('quote') }}</a> </xf:if> <a href="{$quoteLink}" class="actionBar-action actionBar-action--reply" title="{{ phrase('reply_quoting_this_message')|for_attr }}" data-xf-click="quote" data-quote-href="{{ link('posts/quote', $post) }}">{{ phrase('reply') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$post.canUseInlineModeration()"> <span class="actionBar-action actionBar-action--inlineMod"> <xf:checkbox standalone="true"> <xf:option value="{$post.post_id}" class="js-inlineModToggle" data-xf-init="tooltip" title="{{ phrase('select_for_moderation') }}" label="{{ phrase('select_for_moderation') }}" hiddenlabel="true" /> </xf:checkbox> </span> </xf:if> <xf:if is="$post.canReport()"> <a href="{{ link('posts/report', $post) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$post.canEdit()"> <xf:js src="xf/message.js" min="1" /> <a href="{{ link('posts/edit', $post) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem" data-xf-click="quick-edit" data-editor-target="#js-post-{$post.post_id} .js-quickEditTarget" data-menu-closer="true">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.edit_count && $post.canViewHistory()"> <a href="{{ link('posts/history', $post) }}" class="actionBar-action actionBar-action--history actionBar-action--menuItem" data-xf-click="toggle" data-target="#js-post-{$post.post_id} .js-historyTarget" data-menu-closer="true">{{ phrase('history') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canDelete('soft')"> <a href="{{ link('posts/delete', $post) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.message_state == 'deleted' AND $post.canUndelete()"> <a href="{{ link('posts/undelete', $post) }}" class="actionBar-action actionBar-action--undelete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('undelete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canCleanSpam()"> <a href="{{ link('spam-cleaner', $post) }}" class="actionBar-action actionBar-action--spam actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('spam') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() && $post.ip_id"> <a href="{{ link('posts/ip', $post) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canWarn()"> <a href="{{ link('posts/warn', $post) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$post.warning_id && $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $post.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <div class="js-historyTarget message-historyTarget toggleTarget" data-href="trigger-href"></div> </footer> </div> </div> {$extraAfterMessage|raw} </div> </article> <xf:ad position="post_below_container" arg-post="{$post}" /> </xf:macro> <xf:macro name="post_deleted" arg-post="!" arg-thread="!"> <xf:css src="message.less" /> <div class="message message--deleted message--post{{ $post.isIgnored() ? ' is-ignored' : '' }}{{ $post.isUnread() ? ' is-unread' : '' }} js-post js-inlineModContainer" data-author="{{ $post.User.username ?: $post.username }}" data-content="post-{$post.post_id}"> <span class="u-anchorTarget" id="post-{$post.post_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info" arg-user="{$post.User}" arg-fallbackName="{$post.username}" /> </div> <div class="message-cell message-cell--main"> <div class="uix_messageContent"> <div class="message-attribution"> <ul class="listInline listInline--bullet message-attribution-main"> <li><a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="u-concealed" rel="nofollow"><xf:date time="{$post.post_date}" /></a></li> <li><xf:username user="{$post.User}" defaultname="{$post.username}" class="u-concealed" /></li> </ul> </div> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" /> <a href="{{ link('posts/show', $post) }}" class="u-jsOnly" data-xf-click="inserter" data-replace="[data-content=post-{$post.post_id}]">{{ phrase('show...') }}</a> <xf:if is="$post.canUseInlineModeration()"> <span style="display: none"> <!-- this can be actioned on the full post --> <xf:checkbox standalone="true"> <xf:option value="{$post.post_id}" class="js-inlineModToggle" hiddenlabel="true" /> </xf:checkbox> </span> </xf:if> </div> </div> </div> </div> </div> <xf:ad position="post_below_container" arg-post="{$post}" /> </xf:macro>]]>

</template>


-<template title="quick_reply_macros" version_string="2.1.1" version_id="2010170" addon_id="XF" type="public">

<![CDATA[<xf:macro name="body" arg-message="" arg-attachmentData="{{ null }}" arg-forceHash="" arg-messageSelector="" arg-multiQuoteHref="" arg-multiQuoteStorageKey="" arg-simple="{{ false }}" arg-showPreviewButton="{{ true }}" arg-submitText="" arg-lastDate="0" arg-lastKnownDate="0" arg-simpleSubmit="{{ false }}" arg-minHeight="100" arg-placeholder="{{ phrase('reply_placeholder') }}" arg-deferred="{{ false }}"> <xf:css src="message.less" /> <xf:set var="$sticky" value="{{ property('messageSticky') }}" /> <div class="message message--quickReply block-topRadiusContent block-bottomRadiusContent{{ $simple ? ' message--simple' : '' }}"> <div class="message-inner"> <div class="message-cell message-cell--user"> <div class="message-user {{ $sticky.user_info ? 'is-sticky' : '' }}"> <div class="message-avatar"> <div class="message-avatar-wrapper"> <xf:set var="$user" value="{{ $xf.visitor.user_id ? $xf.visitor : null }}" /> <xf:if is="property('uix_postBitAvatarSize') == 'large'"> <xf:avatar user="$user" size="{{ $simple ? 's' : 'l' }}" defaultname="" /> <xf:else /> <xf:avatar user="$user" size="{{ $simple ? 's' : 'm' }}" defaultname="" /> </xf:if> </div> </div> <span class="message-userArrow"></span> </div> </div> <div class="message-cell message-cell--main"> <div class="message-editorWrapper"> <xf:set var="$editorHtml"> <xf:macro name="editor" arg-message="{$message}" arg-attachmentData="{$attachmentData}" arg-forceHash="{$forceHash}" arg-messageSelector="{$messageSelector}" arg-multiQuoteHref="{$multiQuoteHref}" arg-multiQuoteStorageKey="{$multiQuoteStorageKey}" arg-minHeight="{$minHeight}" arg-placeholder="{$placeholder}" arg-showPreviewButton="{$showPreviewButton}" arg-submitText="{$submitText}" arg-deferred="{$deferred}" arg-lastDate="{$lastDate}" arg-lastKnownDate="{$lastKnownDate}" arg-simpleSubmit="{$simpleSubmit}" /> </xf:set> <xf:if is="$deferred"> <div class="editorPlaceholder" data-xf-click="editor-placeholder"> <div class="editorPlaceholder-editor is-hidden">{$editorHtml|raw}</div> <div class="editorPlaceholder-placeholder"> <div class="input"><span class="u-muted"> {$placeholder}</span></div> </div> </div> <xf:else /> {$editorHtml|raw} </xf:if> </div> </div> </div> </div> </xf:macro> <xf:macro name="editor" arg-message="" arg-attachmentData="{{ null }}" arg-forceHash="" arg-messageSelector="" arg-multiQuoteHref="" arg-multiQuoteStorageKey="" arg-minHeight="100" arg-placeholder="" arg-showPreviewButton="{{ false }}" arg-submitText="" arg-deferred="{{ false }}" arg-lastDate="0" arg-lastKnownDate="0" arg-simpleSubmit="{{ false }}" > <xf:editor name="message" value="{$message}" attachments="{{ $attachmentData ? $attachmentData.attachments : [] }}" data-min-height="{$minHeight}" placeholder="{$placeholder}" previewable="0" data-deferred="{{ $deferred ? 'on' : 'off' }}" data-xf-key="{{ phrase('shortcut.quick_reply') }}" /> <xf:if is="!$xf.visitor.user_id"> <xf:textboxrow name="_xfUsername" rowtype="fullWidth noGutter" data-xf-init="guest-username" maxlength="{{ max_length($xf.visitor, 'username') }}" label="{{ phrase('name') }}" /> <xf:if is="$xf.visitor.isShownCaptcha()"> <div class="js-captchaContainer" data-row-type="fullWidth noGutter"></div> <noscript><xf:hiddenval name="no_captcha" value="1" /></noscript> </xf:if> </xf:if> <xf:if is="$attachmentData"> <xf:macro template="helper_attach_upload" name="uploaded_files_list" arg-attachments="{$attachmentData.attachments}" arg-listClass="attachUploadList--spaced" /> </xf:if> <xf:if is="$showPreviewButton"> <div class="js-previewContainer"></div> </xf:if> <div class="formButtonGroup {{ $simpleSubmit ? 'formButtonGroup--simple' : '' }}"> <div class="formButtonGroup-primary"> <xf:button type="submit" class="button--primary" icon="reply"> {{ $submitText ?: phrase('post_reply') }} </xf:button> <xf:if is="$showPreviewButton"> <xf:button class="u-jsOnly" data-xf-click="preview-click" icon="preview" /> </xf:if> </div> <xf:if contentcheck="true"> <div class="formButtonGroup-extra"> <xf:contentcheck> <xf:if is="$attachmentData"> <xf:macro template="helper_attach_upload" name="upload_link_from_data" arg-attachmentData="{$attachmentData}" arg-forceHash="{$forceHash}" /> </xf:if> <xf:if is="$xf.options.multiQuote && $multiQuoteHref"> <xf:macro template="multi_quote_macros" name="button" arg-href="{$multiQuoteHref}" arg-messageSelector="{$messageSelector}" arg-storageKey="{$multiQuoteStorageKey}" /> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:hiddenval name="last_date" autocomplete="off">{$lastDate}</xf:hiddenval> <xf:hiddenval name="last_known_date" autocomplete="off">{$lastKnownDate}</xf:hiddenval> </div> </xf:macro>]]>

</template>


-<template title="rating_stars.less" version_string="2.1.0 Beta 1" version_id="2010031" addon_id="XF" type="public">

<![CDATA[.ratingStars { display: inline-block; line-height: 1; font-size: 120%; vertical-align: sub; position: relative; &.ratingStars--larger { font-size: 140%; vertical-align: bottom; } &.ratingStars--smaller { font-size: 100%; vertical-align: top; top: .2em; } } .ratingStars-star { float: left; position: relative; margin-left: 2px; &:first-child { margin-left: 0; } &:before { .m-faBase(@faType; @faWeight-solid); .m-faContent(@fa-var-star); <xf:macro template="uix_icons.less" name="content" arg-icon="star" /> color: @xf-starEmptyColor; } &.ratingStars-star--full { &:before { color: @xf-starFullColor; } } &.ratingStars-star--half { &:after { position: absolute; top: 1px; left: 0; .m-faBase(@faType; @faWeight-solid); .m-faContent(@fa-var-star-half);; <xf:macro template="uix_icons.less" name="content" arg-icon="star-half" /> color: @xf-starFullColor; & when(@rtl) { .m-transform(scaleX(-1)); } } } } .ratingStarsRow { &.ratingStarsRow--justified { display: flex; .ratingStarsRow-text { margin-left: auto; } } &.ratingStarsRow--textBlock { display: block; .ratingStarsRow-text { display: block; } } } /** XF: override */ .br-select { display: none; } .br-theme-fontawesome-stars { .br-widget { &.br-widget--withSelected { height: 40px; .br-current-rating { display: block; font-size: 80%; } } } } /** Vendor: variables.less */ @star-default: @xf-starEmptyColor; @star-active: @xf-starFullColor; @star-selected: @xf-starFullColor; /** Vendor: fontawesome-stars.less */ .br-theme-fontawesome-stars { .br-widget { height: 28px; white-space: nowrap; a { .m-faBase(@faType; @faWeight-solid); font-size: 120%; text-decoration: none; margin-right: 2px; } a:after { .m-faContent(@fa-var-star); <xf:macro template="uix_icons.less" name="content" arg-icon="star" /> color: @star-default; } a.br-active:after { color: @star-active; } a.br-selected:after { color: @star-selected; } .br-current-rating { display: none; } } .br-readonly { a { cursor: default; } } } @media print { .br-theme-fontawesome-stars { .br-widget { a:after { .m-faContent(@fa-var-star); <xf:macro template="uix_icons.less" name="content" arg-icon="star-empty" /> color: black; } a.br-active:after, a.br-selected:after { .m-faContent(@fa-var-star); <xf:macro template="uix_icons.less" name="content" arg-icon="star" /> color: black; } } } }]]>

</template>


-<template title="register_form" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[<xf:js src="xf/login_signup.js" min="1" /> <xf:page option="uix_hideExtendedFooter" value="1" /> <xf:page option="uix_hideNotices" value="1" /> <xf:page option="uix_hideBreadcrumb" value="1" /> <xf:comment><xf:page option="uix_hideNavigation" value="1" /></xf:comment> <xf:title>{{ phrase('register') }}</xf:title> <xf:head option="robots"><meta name="robots" content="noindex" /></xf:head> <xf:if is="$providers is not empty"> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:formrow rowtype="button" label="{{ phrase('register_faster_using') }}"> <ul class="listHeap"> <xf:foreach loop="$providers" value="$provider"> <li> <xf:macro template="connected_account_macros" name="button" arg-provider="{$provider}" /> </li> </xf:foreach> </ul> </xf:formrow> </div> </div> </div> </xf:if> <xf:form action="{{ link('register/register') }}" ajax="true" class="block" data-xf-init="reg-form" data-timer="{$xf.options.registrationTimer}"> <div class="block-container"> <div class="block-body"> <xf:comment>Spam catcher field</xf:comment> <xf:macro template="register_macros" name="username_row" arg-fieldName="{{ $regForm.getFieldName('username') }}" arg-value="{$fields.username}" /> <xf:textboxrow name="username" value="" autocomplete="off" rowclass="formRow--limited" maxlength="{{ max_length($xf.visitor, 'username') }}" label="{{ phrase('user_name') }}" explain="{{ phrase('please_leave_this_field_blank') }}" /> <xf:comment>Spam catcher field</xf:comment> <xf:if is="{{ rand(0, 2) == 1 }}"> <xf:textboxrow name="{{ $regForm.getFieldName('email_hp') }}" value="" type="email" autocomplete="off" rowclass="formRow--limited" maxlength="{{ max_length($xf.visitor, 'email') }}" label="{{ phrase('email') }}" explain="{{ phrase('please_leave_this_field_blank') }}" /> </xf:if> <xf:macro template="register_macros" name="email_row" arg-fieldName="{{ $regForm.getFieldName('email') }}" arg-value="{$fields.email}" /> <xf:comment>Spam catcher field</xf:comment> <xf:if is="{{ rand(0, 2) == 1 }}"> <xf:textboxrow name="email" value="" type="email" autocomplete="off" rowclass="formRow--limited" maxlength="{{ max_length($xf.visitor, 'email') }}" label="{{ phrase('email') }}" explain="{{ phrase('please_leave_this_field_blank') }}" /> </xf:if> <xf:comment>Spam catcher field</xf:comment> <xf:if is="{{ rand(0, 2) == 1 }}"> <xf:textboxrow name="password" type="password" autocomplete="off" rowclass="formRow--limited" label="{{ phrase('password') }}" explain="{{ phrase('please_leave_this_field_blank') }}" /> </xf:if> <xf:passwordboxrow name="{{ $regForm.getFieldName('password') }}" autocomplete="new-password" label="{{ phrase('password') }}" hint="{{ phrase('required') }}" required="required" checkstrength="true" /> <xf:macro template="register_macros" name="dob_row" /> <xf:macro template="register_macros" name="location_row" arg-value="{$fields.location}" /> <xf:macro template="register_macros" name="custom_fields" /> <xf:captcharow label="{{ phrase('verification') }}" hint="{{ phrase('required') }}" /> <xf:macro template="register_macros" name="email_choice_row" /> <xf:macro template="register_macros" name="tos_row" /> </div> <xf:macro template="register_macros" name="submit_row" /> </div> <xf:hiddenval name="reg_key">{{ $regForm.getUniqueKey() }}</xf:hiddenval> <xf:hiddenval name="{{ $regForm.getFieldName('timezone') }}" value="" data-xf-init="auto-timezone" /> </xf:form>]]>

</template>


-<template title="search_form" version_string="2.1.0 Release Candidate 2" version_id="2010052" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('search') }}</xf:title> <xf:page option="uix_mobileActiveNav">{{ phrase('search') }}</xf:page> <xf:head option="robots"><meta name="robots" content="noindex" /></xf:head> <xf:if is="$type"> <xf:breadcrumb href="{{ link('full:search') }}">{{ phrase('search') }}</xf:breadcrumb> </xf:if> <xf:form action="{{ link('search/search') }}" class="block" ajax="true"> <div class="block-container"> <h2 class="block-tabHeader tabs hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <a href="{{ link('search') }}" class="tabs-tab{{ !$type ? ' is-active' : '' }}">{{ phrase('search_everything') }}</a> <xf:foreach loop="$tabs" key="$tabType" value="$tab"> <a href="{{ link('search', null, {'type': $tabType}) }}" class="tabs-tab{{ $type == $tabType ? ' is-active' : '' }}">{$tab.title}</a> </xf:foreach> <xf:if is="$xf.options.enableTagging"> <a href="{{ link('tags') }}" class="tabs-tab">{{ phrase('search_tags') }}</a> </xf:if> </span> </h2> <div class="block-body"> <xf:include template="{$formTemplateName}" /> </div> <xf:submitrow icon="search" sticky="true" /> </div> <xf:hiddenval name="search_type">{$type}</xf:hiddenval> </xf:form>]]>

</template>


-<template title="select2.less" version_string="2.1.0 Beta 1" version_id="2010031" addon_id="XF" type="public">

<![CDATA[.select2-hidden-accessible { border: 0 !important; clip: rect(0 0 0 0) !important; height: 1px !important; margin: -1px !important; overflow: hidden !important; padding: 0 !important; position: absolute !important; width: 1px !important; } .select2 { line-height: normal; *:focus { outline: none; } .select2-selection { padding: 0; margin: 0; display: block; &.input { cursor: text; } ul { list-style: none; margin: 0; padding: 0 5px; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-flex; flex-wrap: wrap; margin-bottom: 5px; > li { &.select2-selection__choice { float: left; font-size: 15px; border-radius: @xf-borderRadiusMedium; .xf-chip(); margin-right: 5px; margin-top: 5px; padding: 0 5px; cursor: default; .select2-selection__choice__remove { font-size: 0; cursor: pointer; &:before { .m-faBase(); font-size: 15px; .m-faContent("@{fa-var-times}\20"); opacity: .5; .m-transition(opacity); <xf:macro template="uix_icons.less" name="content" arg-icon="close" /> margin-right: 3px; font-size: 14px; } &:hover:before { opacity: 1; } } } } .select2-search { flex-grow: 1; min-width: 0; input {.xf-input();} &.select2-search--inline { float: left; } .select2-search__field { border: none; padding: 1px 0; margin-top: 5px; background: transparent; min-width: 100%; max-width: 100%; &:focus { outline: none; } } } } } } .select2-container { display: inline-block; &.select2-container--disabled { .input { .xf-inputDisabled(); } } &.select2-container--open { .select2-dropdown { -ltr-rtl-left: 0; &.select2-dropdown--above { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } &.select2-dropdown--below { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } } } } .select2-dropdown { border-radius: @xf-borderRadiusSmall; box-sizing: border-box; display: block; position: absolute; -ltr-rtl-left: -100000px; width: 100%; z-index: 1051; padding-top: 2px; &.select2-dropdown--above { padding-bottom: 5px; .select2-results__option.loading-results:not(:last-child) { display: none; } } } .select2-results { } .select2-results__options { .m-autoCompleteList(); display: block; overflow: auto; max-height: 150px; -webkit-overflow-scrolling: touch; } .select2-results__option { user-select: none; -webkit-user-select: none; &.select2-results__option--highlighted { background: @xf-contentHighlightBg; } }]]>

</template>


-<template title="setup.less" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[// Note that this file should never output any CSS directly. It should contain variables and mixins only. // Output should go into core.less. // ################################ VARIABLES ############################### // BLOCKS @block-borderRadius-inner: max(@xf-blockBorderRadius - 1px, 0px); @block-noStripSel: ~'.block-container:not(.block-container--noStripRadius)'; // HELPERS @zIndex-1: 1 * (@xf-zIndexMultiplier); @zIndex-2: 2 * (@xf-zIndexMultiplier); @zIndex-3: 3 * (@xf-zIndexMultiplier); @zIndex-4: 4 * (@xf-zIndexMultiplier); @zIndex-5: 5 * (@xf-zIndexMultiplier); @zIndex-6: 6 * (@xf-zIndexMultiplier); @zIndex-7: 7 * (@xf-zIndexMultiplier); @zIndex-8: 8 * (@xf-zIndexMultiplier); @zIndex-9: 9 * (@xf-zIndexMultiplier); // AVATARS @_avatarBaseSize: 96px; @avatar-xxs: (@_avatarBaseSize) / 4; @avatar-xs: (@_avatarBaseSize) / 3; @avatar-s: (@_avatarBaseSize) / 2; @avatar-m: (@_avatarBaseSize); @avatar-l: (@_avatarBaseSize) * 2; @avatar-o: (@_avatarBaseSize) * 4; @rtl: xf-isRtl; @ltr: xf-isLtr; // DEFAULT FONTAWESOME TYPE @faType: 'Pro'; // FONTAWESOME WEIGHT VALUES @faWeight-light: 300; @faWeight-regular: 400; @faWeight-solid: 900; {{ include('setup_fa.less') }} // TABLES @tablePadding: @xf-paddingSmall; // ####################################### MIXINS ################################## .m-clearFix() { &:before, &:after { content: " "; display: table; } &:after { clear: both; } } .m-hideText() { text-indent: 100%; overflow: hidden; white-space: nowrap; word-wrap: normal; } .m-overflowEllipsis() { overflow: hidden; white-space: nowrap; word-wrap: normal; text-overflow: ellipsis; } .m-appendColon() { &:after { content: "{$xf.language.label_separator}"; } &.is-sentence:after { content: ""; } } .m-tooltipArrow(@color, @size, @variation: ~'', @fillColor: false) { @{variation}.tooltip--top & { bottom: 0; left: 50%; margin-left: -@size; .m-triangleDown(@color, @size); } @{variation}.tooltip--bottom & { top: 0; left: 50%; margin-left: -@size; .m-triangleUp(@color, @size); } @{variation}.tooltip--right & { top: 50%; left: 0; margin-top: -@size; .m-triangleLeft(@color, @size); } @{variation}.tooltip--left & { top: 50%; right: 0; margin-top: -@size; .m-triangleRight(@color, @size); } & when (iscolor(@fillColor)) { @{variation} &:after { position: absolute; content: ''; } @{variation}.tooltip--top &:after { bottom: 1px; left: -@size + 1px; .m-triangleDown(@fillColor, @size - 1px); } @{variation}.tooltip--bottom &:after { top: 1px; left: -@size + 1px; .m-triangleUp(@fillColor, @size - 1px); } @{variation}.tooltip--right &:after { left: 1px; bottom: -@size + 1px; .m-triangleLeft(@fillColor, @size - 1px); } @{variation}.tooltip--left &:after { right: 1px; bottom: -@size + 1px; .m-triangleRight(@fillColor, @size - 1px); } } } .m-triangleUp(@color; @size) { border: @size solid transparent; border-top-width: 0; border-bottom-color: @color; } .m-triangleDown(@color; @size) { border: @size solid transparent; border-bottom-width: 0; border-top-color: @color; } .m-triangleLeft(@color; @size) { border: @size solid transparent; border-left-width: 0; border-right-color: @color; } .m-triangleRight(@color; @size) { border: @size solid transparent; border-right-width: 0; border-left-color: @color; } .m-dropShadow(@x: 1px; @y: 2px; @blur: 2px; @spread: 0; @alpha: 0.25) { box-shadow: @x @y @blur @spread rgba(0, 0, 0, @alpha); } .m-textOutline(@fillColor: white; @strokeColor: black; @width: 1px;) { -webkit-text-fill-color: @fillColor; -webkit-text-stroke-color: @strokeColor; -webkit-text-stroke-width: @width; } .m-gradient(@startColor; @stopColor; @fallback; @startPos: 0%; @endPos: 100%) { background: @fallback; background: linear-gradient(to bottom, @startColor @startPos, @stopColor @endPos); } .m-gradientHorizontal(@startColor; @stopColor; @fallback; @startPos: 0%; @endPos: 100%) { background: @fallback; & when(@ltr) { background: linear-gradient(to right, @startColor @startPos, @stopColor @endPos); } & when(@rtl) { background: linear-gradient(to left, @startColor @startPos, @stopColor @endPos); } } .m-tabSize(@size: 4) { -moz-tab-size: @size; tab-size: @size; } .m-transition(@props: all; @duration: @xf-animationSpeed; @timing: ease; @delay: 0; @raw-input: false) { // adapted from https://stackoverflow.com/a/20810461 @ScottS .output() when (@raw-input = false) { @propsLength: length(@props); @durationLength: length(@duration); @timingLength: length(@timing); @delayLength: length(@delay); .buildString(@i, @s: ~'') when (@i <= @propsLength) { @prop: extract(@props, @i); .setDuration() when (@i <= @durationLength) { @dur: extract(@duration, @i); } .setDuration() when (@i > @durationLength) { @dur: extract(@duration, @durationLength); } .setDuration(); .setEasing() when (@i <= @timingLength) { @time: extract(@timing, @i); } .setEasing() when (@i > @timingLength) { @time: extract(@timing, @timingLength); } .setEasing(); .setDelay() when (@i <= @delayLength) { @del: extract(@delay, @i); } .setDelay() when (@i > @delayLength) { @del: extract(@delay, @delayLength); } .setDelay(); .setDivider() when (@i > 1) { @divider: ~'@{s},'; } .setDivider() when (@i = 1) { @divider: ~''; } .setDivider(); .buildString((@i + 1), @divider @prop @dur @time); } .buildString(1); .buildString(@i, @s: ~'') when (@i > @propsLength) { .compact(@s); } } .output() when not (@raw-input = false) { .compact(@raw-input); } .compact(@string) { -webkit-transition: @string; //-moz-transition: @string; //-ms-transition: @string; //-o-transition: @string; transition: @string; } .output(); } .m-transitionProperty(@props) { -webkit-transition-property: @props; transition-property: @props; } .m-animation(@props) { -webkit-animation: @props; animation: @props; } .m-transform(@props) { -webkit-transform: @props; -ms-transform: @props; transform: @props; } .m-keyframes(@name, @rules) { @-webkit-keyframes @name { @rules(); } @keyframes @name { @rules(); } } .m-columns(@count; @breakWidth: 0; @gap: 1em) { -moz-column-count: @count; -webkit-column-count: @count; column-count: @count; -moz-column-gap: @gap; -webkit-column-gap: @gap; column-gap: @gap; & when(@breakWidth > 0) { @media (max-width: @breakWidth) { -moz-column-count: 1; -webkit-column-count: 1; column-count: 1; } } } .m-columnBreakAvoid() { -webkit-column-break-inside: avoid; break-inside: avoid-column; page-break-inside: avoid; } .m-borderLeftRadius(@radius) { border-top-left-radius: @radius; border-bottom-left-radius: @radius; } .m-borderRightRadius(@radius) { border-top-right-radius: @radius; border-bottom-right-radius: @radius; } .m-borderTopRadius(@radius) { border-top-left-radius: @radius; border-top-right-radius: @radius; } .m-borderBottomRadius(@radius) { border-bottom-left-radius: @radius; border-bottom-right-radius: @radius; } .m-hiddenLinks() { a { color: inherit; text-decoration: none; &:hover { text-decoration: underline; } } } .m-textColoredLinks() { a { color: inherit; text-decoration: underline; } } .m-placeholder(@rules) { &::-webkit-input-placeholder { @rules(); } &::-moz-placeholder { @rules(); } &:-moz-placeholder { @rules(); } &:-ms-input-placeholder { @rules(); } } .m-autoCompleteList(@wide: false) { .m-listPlain(); cursor: default; .xf-menu(); min-width: 180px; & when(@wide = true) { min-width: 250px; } max-width: 95%; border: @xf-borderSize solid @xf-borderColor; .m-dropShadow(0, 3px, 5px, 0, .3); li { padding: @xf-paddingMedium; line-height: 24px; .m-clearFix(); &.is-selected { background: @xf-contentHighlightBg; } .autoCompleteList-icon { float: left; margin-right: @xf-paddingMedium; width: 24px; height: 24px; } } } .m-listPlain() { list-style: none; margin: 0; padding: 0; } // makes direct children display: inline-block, removing white-space between elements (mostly used on ul > li) .m-inlineBlocks(@fontSize: @xf-fontSizeNormal) { font-size: 0; > * { display: inline-block; font-size: @fontSize; } } .m-tabsTogether(@fontSize: @xf-fontSizeNormal) { font-size: 0; .tabs-tab, .tabs-extra, .hScroller-action { font-size: @fontSize; } } .m-hiddenEl(@transition: true) { display: none; &.is-active { display: block; } & when(@transition = true) { .m-transitionFadeDown(); } } .m-transitionFade(@speed: @xf-animationSpeed) { display: none; opacity: 0; .m-transition(all, -xf-opacity; @speed); &.is-active { display: block; opacity: 1; } &.is-transitioning { display: block; } } .m-transitionFadeDown(@speed: @xf-animationSpeed) { .m-transitionFade(@speed); overflow-y: hidden; height: 0; .m-transitionProperty(all, -xf-height;); &.is-active { height: auto; overflow-y: visible; } &.is-transitioning { overflow-y: hidden; } } .m-visuallyHidden() { position: absolute; height: 1px; width: 1px; margin: -1px; padding: 0; border: 0; clip: rect(0 0 0 0); overflow: hidden; } .m-faBase(@type: @faType; @weight: @xf-fontAwesomeWeight) { .m-defaultFaWeight() when (@type = 'Brands') { @weight: @faWeight-regular; } // else use given @weight .m-defaultFaWeight(); font-family: 'Font Awesome 5 @{type}'; font-size: inherit; font-style: normal; font-weight: @weight; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .m-faContent(@content, @width: false, @direction: false) { & when (@direction = false) { content: @content; } & when (@direction = ltr) { -ltr-content: @content; } & when (@direction = rtl) { -rtl-content: @content; } & when (isnumber(@width)) { display: inline-block; width: @width; } } .m-faBefore(@icon, @width: false) { &:before { .m-faContent(@icon, @width); } } .m-faAfter(@icon, @width: false) { &:after { .m-faContent(@icon, @width); } } .m-menuGadget(@separate: false, @faWidth: false, @faWeight: @faWeight-solid) { .m-faBase(); .m-faContent("@{fa-var-caret-down}", @faWidth); font-weight: @faWeight; <xf:macro template="uix_icons.less" name="content" arg-icon="menu-down" /> & when (@separate = true) { margin-left: .2em; } & when (isnumber(@separate)) { margin-left: @separate; } unicode-bidi: isolate; // this is needed to ensure correct positioning in RTL with LTR text } .m-content(@content, @direction: false, @separateDirection: false, @separateWidth: false) { & when (@direction = false) { content: @content; } & when (@direction = ltr) { -ltr-content: @content; } & when (@direction = rtl) { -rtl-content: @content; } & when (@separateDirection = left) { & when (isnumber(@separateWidth)) { margin-right: @separateWidth; } & when not(isnumber(@separateWidth)) { margin-right: .2em; } } & when (@separateDirection = right) { & when (isnumber(@separateWidth)) { margin-left: @separateWidth; } & when not(isnumber(@separateWidth)) { margin-left: .2em; } } } .m-buttonIcon(@icon, @width: false) { & > .button-text { .m-faBefore(@icon, @width); } } .m-avatarSize(@avatarSize) { width: @avatarSize; height: @avatarSize; font-size: round((@avatarSize) * (@xf-avatarDynamicTextPercent / 100)); } .m-buttonBase() { display: inline-block; // maintain this just in case for old browsers display: inline-flex; align-items: center; justify-content: center; text-decoration: none; cursor: pointer; border: @xf-borderSize solid transparent; white-space: nowrap; .m-transition(background-color); .xf-buttonBase(); } .m-buttonColorVariation(@bgColor; @textColor) { color: @textColor; background-color: @bgColor; .m-buttonBorderColorVariation(@bgColor); &:hover, &:active, &:focus { background-color: saturate(xf-intensify(@bgColor, 4%), 12%); } } .m-buttonBlockColorVariationSimple(@color) { .m-buttonBorderColorVariation(@color); &:not(.button--splitTrigger), &.button--splitTrigger > .button-text, &.button--splitTrigger > .button-menu { &:hover, &:focus, &:active { // background-color: saturate(xf-intensify(@color, 4%), 12%); } } } .m-buttonBorderColorVariation(@borderColor) { // border-color: xf-diminish(@borderColor, 5%) xf-intensify(@borderColor, 5%) xf-intensify(@borderColor, 5%) xf-diminish(@borderColor, 5%); border-color: xf-intensify(@borderColor, 8%); &.button--splitTrigger { > .button-text { border-right-color: xf-intensify(@borderColor, 5%); } > .button-menu { border-left-color: xf-diminish(@borderColor, 5%); } } } // this will be replaced by the CSS renderer with the correct background-image rule .m-selectGadgetColor(@color: black) { -xf-select-gadget: @color; } .m-hScrollerActionColorVariation(@background, @text, @textHover) { color: @text; &:hover { color: @textHover; } &.hScroller-action--start { .m-gradientHorizontal(@background, fade(@background, 0%), @background, 66%, 100%); } &.hScroller-action--end { .m-gradientHorizontal(fade(@background, 0%), @background, @background, 0%, 33%); } } // Fix for iOS zoom on input focus. .m-inputZoomFix() { @media (max-width: 568px) { font-size: 16px; } } .m-checkboxAligner() { vertical-align: -2px; } .m-highResolution(@rules) { @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 144dpi) { @rules(); } } .m-fixedWidthFlex(@width) { flex: 0 0 @width; } .m-labelVariation(@color; @bg; @border: false) { color: @color; background: @bg; border-color: xf-intensify(@bg, 10%); & when (iscolor(@border)) { border-color: @border; } a&:hover, a:hover & { background: xf-intensify(@bg, 4%); border-color: xf-intensify(@bg, 14%); & when (iscolor(@border)) { border-color: xf-intensify(@border, 4%); } } } .m-tableBase() { > table { border: none; border-collapse: collapse; empty-cells: show; max-width: 100%; > thead, > tbody { > tr { > th { background: @xf-paletteColor1; border: @xf-borderSize solid @xf-borderColor; border-bottom-color: @xf-borderColorFeature; border-bottom-width: @xf-borderSizeMinorFeature; padding: @tablePadding; } > td { background: @xf-contentBg; border: @xf-borderSize solid @xf-borderColor; padding: @tablePadding; } } } } } .m-backdropFilter(@args) { backdrop-filter: @args; -webkit-backdrop-filter: @args; } // STICKY HEADER STUFF // Note that to access the height and offset, you need to call the mixin and use the variables locally. @header-navHeight: 2 * (@xf-publicNavPaddingV) + (xf-default(@xf-publicNav--font-size, @xf-fontSizeNormal) * (@xf-lineHeightDefault)); @header-subNavHeight: 2 * (@xf-publicSubNavPaddingV) + (xf-default(@xf-publicSubNav--font-size, @xf-fontSizeNormal) * (@xf-lineHeightDefault)) + xf-default(@xf-publicSubNav--border-top-width, 0) + xf-default(@xf-publicSubNav--border-bottom-width, 0); .m-stickyHeaderConfig(@type) { @_stickyHeader-offset: 10px; @_stickyHeader-height: 0; } .m-stickyHeaderConfig(@type) when(@type = primary) { @_stickyHeader-height: @header-navHeight; } .m-stickyHeaderConfig(@type) when(@type = all) { @_stickyHeader-height: @header-navHeight + @header-subNavHeight; } {{ include('setup_custom.less') }}]]>

</template>


-<template title="setup_custom.less" version_string="2.1.2" version_id="2010270" addon_id="XF" type="public">

<![CDATA[// This should be used for additional LESS setup code (that does not output anything). // setup.less customizations should be avoided when possible. // ######################## UI.X Variables ###################### // ANIMATIONS // use for incoming elements, or growing elements @uix_moveIn: cubic-bezier(0.0, 0.0, 0.2, 1); // use for exiting elements, or shrinking elements @uix_moveOut: cubic-bezier(0.4, 0.0, 1, 1); // use for growing or moving elements that dont exit/enter the page @uix_move: cubic-bezier(0.4, 0.0, 0.2, 1); // UI.X browser query variables @isIe: ~"(-ms-high-contrast: none), (-ms-high-contrast: active)"; @uix_sidebarNavBreakpoint: {{ property('pageWidthMax') + ( 2 * (property('uix_sidebarNavWidth') + property('elementSpacer')) ) }}px; <xf:set var="$uix_pageEdgeSpacer">{{ property('pageEdgeSpacer') * 2}}px</xf:set> @uix_navigationPaddingV: 8px; // UI.X MIXINS .m-uix_whiteText (@background-color, @color: #fff) when (luma(@background-color) <= 43%) { color: @color; } .m-uix_collapseOverflow() { clip-path: inset(-2px -2px -2px -2px); @media @isIe { overflow: hidden; } } .m-uix_removePageSpacer() { @media (max-width: @xf-responsiveEdgeSpacerRemoval) { margin-left: -@xf-pageEdgeSpacer * .5; margin-right: -@xf-pageEdgeSpacer * .5; border-radius: 0; border-left: none; border-right: none; } } .m-pageSpacerPadding(@defaultPadding: @xf-pageEdgeSpacer) { padding-left: @defaultPadding; padding-right: @defaultPadding; // iPhone X/Xr/Xs support /* @supports(padding: max(0px)) { & { padding-left: ~"max(@{defaultPadding}, env(safe-area-inset-left))"; padding-right: ~"max(@{defaultPadding}, env(safe-area-inset-right))"; } } */ @media (max-width: @xf-responsiveEdgeSpacerRemoval) { @defaultPadding: @xf-pageEdgeSpacer / 2; padding-left: @defaultPadding; padding-right: @defaultPadding; // iPhone X/Xr/Xs support @supports(padding: max(0px)) { & { padding-left: ~"max(@{defaultPadding}, env(safe-area-inset-left))"; padding-right: ~"max(@{defaultPadding}, env(safe-area-inset-right))"; } } } /* padding-left: @xf-pageEdgeSpacer; padding-right: @xf-pageEdgeSpacer; @media (max-width: @xf-responsiveEdgeSpacerRemoval) { padding-left: {{ property('pageEdgeSpacer') / 2 }}px; padding-right: {{ property('pageEdgeSpacer') / 2 }}px; padding-left: ~"max(10px, env(safe-area-inset-left)) !important"; padding-right: ~"max(10px, env(safe-area-inset-right)) !important"; } */ } .m-pageSpacer() { <xf:if is="property('uix_pageStyle') != 'wrapped'"> width: calc(~"100% - {{$uix_pageEdgeSpacer}}"); </xf:if> @media (max-width: @xf-responsiveEdgeSpacerRemoval) { <xf:if is="property('uix_pageStyle') == 'covered'"> width: calc(~"100% - @xf-pageEdgeSpacer"); <xf:else /> width: 100%; </xf:if> } } .m-pageWidth() { max-width: @xf-pageWidthMax; margin-left: auto; margin-right: auto; width: 100%; .m-pageSpacer(); <xf:if is="property('uix_pageStyle') != 'covered'"> .m-pageSpacerPadding(); </xf:if> transition: max-width 0.2s; @media (max-width: @xf-responsiveWide) { <xf:if is="property('uix_pageStyle') == 'covered'"> padding-left: env(safe-area-inset-left) !important; padding-right: env(safe-area-inset-right) !important; </xf:if> } .uix_page--fluid & { <xf:if is="property('uix_pageStyle') != 'wrapped'"> @media (min-width: @xf-pageWidthMax) { max-width: 100%; } <xf:else /> max-width: 100%; </xf:if> } <xf:if is="(property('uix_navigationType') == 'sidebarNav') && (property('uix_pageStyle') == 'covered')"> @media (max-width: @uix_sidebarNavBreakpoint) { .uix_page--fixed & {max-width: 100%;} #uix_widthToggle--trigger {display: none;} } </xf:if> } .m-pageInset(@defaultPadding: @xf-pageEdgeSpacer) { // here to satisfy global scope only } // Sticky sidebar/sidenav <xf:if is="(property('uix_searchPosition') == 'tablinks') && (property('uix_loginTriggerPosition ') == 'tablinks') && (property('uix_userTabsPosition ') == 'tablinks')"> <xf:set var="$uix_sectionLinkHeight">{{property('uix_sectionLinkHeight')}}</xf:set> <xf:elseif is="property('uix_viewportWidthRemoveSubNav') == '100%'" /> <xf:set var="$uix_sectionLinkHeight">0px</xf:set> <xf:else /> <xf:set var="$uix_sectionLinkHeight">{{property('uix_sectionLinkHeight')}}</xf:set> </xf:if> <xf:if is="property('publicNavSticky') == 'none'"> @uix_navHeight: {{ property('elementSpacer') }}; <xf:elseif is="property('publicNavSticky') == 'primary'" /> @uix_navHeight: {{ property('elementSpacer') + property('uix_stickyNavHeight') }}; <xf:elseif is="property('publicNavSticky') == 'all'" /> @uix_navHeight: {{ property('elementSpacer') + property('uix_stickyNavHeight')}}px + {{$uix_sectionLinkHeight }}; </xf:if>]]>

</template>


-<template title="structured_list.less" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[@_structItem-avatarSize: 36px; @_structItem-avatarSizeExpanded: 48px; @_structItem-avatarSizeEnd: @avatar-xxs; // @_structItem-cellPaddingH: ((@xf-paddingMedium) + (@xf-paddingLarge)) / 2; // average // @_structItem-cellPaddingV: @xf-paddingLarge; @_structItem-cellPaddingH: @xf-uix_structPaddingH; @_structItem-cellPaddingV: @xf-uix_structPaddingV; .structItemContainer { display: table; table-layout: fixed; border-collapse: collapse; list-style: none; margin: 0; padding: 0; width: 100%; } .structItemContainer-group { display: table-row-group; } <xf:comment> .structItemContainer > .structItem:first-child, .structItemContainer > .structItemContainer-group:first-child > .structItem:first-child { border-top: none; } } .structItemContainer--columnBreaker + .structItemContainer--connect, .structItemContainer--columnBreaker + .structItemContainer:first-child, .structItemContainer--columnBreaker + .structItemContainer > .structItemContainer-group:first-child > .structItem:first-child, .structItemContainer + .structItemContainer--columnBreaker:first-child, .structItemContainer + .structItemContainer--columnBreaker > .structItemContainer-group:first-child > .structItem:first-child { border-top: @xf-borderSize solid @xf-borderColorFaint; } </xf:comment> .block-minorHeader.uix_threadListSeparator { display: flex; align-items: center; .xf-uix_threadListSeparator(); } .structItemContainer .structItemContainer-group--sticky { .structItem--thread { .xf-uix_discussionListItemSticky(); } } .structItem--thread.is-moderated {.xf-uix_discussionListItemModerated();} .structItem--thread.is-deleted {.xf-uix_discussionListItemDeleted();} .structItem.is-mod-selected .structItem-cell--meta, .structItem--thread.is-deleted .structItem-cell--meta{background: none;} .structItem { display: table; border-top: @xf-borderSize solid @xf-borderColorFaint; list-style: none; margin: 0; padding: 0; width: 100%; .xf-uix_discussionListItem(); .pairs {line-height: inherit;} &:nth-child(even) { background-color: @xf-uix_discussionListItemEven; } &--thread:hover { background-color: @xf-uix_discussionListItemHover; <xf:if is="property('uix_discussionListItemHover')"> .structItem-cell--meta { background-color: transparent } </xf:if> } &.is-highlighted, &.is-moderated { // background: @xf-contentHighlightBg; .xf-uix_discussionListItemModerated(); } &.is-deleted { opacity: .7; .structItem-title > * { text-decoration: line-through; } } &.is-mod-selected { background: @xf-inlineModHighlightColor; opacity: 1; } &:last-child { border-bottom-left-radius: @xf-blockBorderRadius; border-bottom-right-radius: @xf-blockBorderRadius; } } .threadListSeparator { .xf-uix_threadListSeparator(); } .structItem-cell { display: table-cell; vertical-align: top; padding: @_structItem-cellPaddingV @_structItem-cellPaddingH; .structItem--middle & { vertical-align: middle; } &.structItem-cell--icon { width: ((@_structItem-avatarSize) + (@_structItem-cellPaddingH) * 2); position: relative; &.structItem-cell--iconExpanded { width: ((@_structItem-avatarSizeExpanded) + (@_structItem-cellPaddingH) * 2); } &.structItem-cell--iconEnd { width: ((@_structItem-avatarSizeEnd) + (@_structItem-cellPaddingH) * 2); padding-left: @_structItem-cellPaddingH / 2; .structItem-iconContainer { padding-top: @xf-paddingMedium /2; } } &.structItem-cell--iconFixedSmall { width: (60px + (@_structItem-cellPaddingH) * 2); } } &.structItem-cell--meta { width: 135px; .xf-uix_metaCell(); @media (max-width: @xf-responsiveMedium) { background: none; // padding: 0; border: none; .pairs {line-height: inherit;} } } &.structItem-cell--latest { width: 190px; text-align: right; font-size: @xf-fontSizeSmaller; a:not(:hover) {color: @xf-textColorMuted;} } } .structItem-iconContainer { position: relative; img { display: block; width: 100%; } .avatar { .m-avatarSize(@_structItem-avatarSize); &.avatar--xxs { .m-avatarSize(@_structItem-avatarSizeEnd); } } .structItem-secondaryIcon { position: absolute; right: -5px; bottom: -5px; .m-avatarSize(@_structItem-avatarSize / 2 + 2px); } .structItem-cell--iconExpanded & { .avatar { .m-avatarSize(@_structItem-avatarSizeExpanded); } .structItem-secondaryIcon { .m-avatarSize(@_structItem-avatarSizeExpanded / 2 - 2px); } } } .structItem-title { font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; margin: 0; padding: 0; .xf-uix_discussionListTitle(); .label { font-weight: @xf-fontWeightNormal; } a { color: inherit; &:hover {color: @xf-linkHoverColor;} } .is-unread & { font-weight: @xf-fontWeightHeavy; .xf-uix_discussionListTitleUnread(); } } .structItem-minor { font-size: @xf-fontSizeSmaller; color: @xf-textColorMuted; .structItem-cell--main & {clear: both;} .m-hiddenLinks(); } .structItem-parts { .m-listPlain(); display: inline; > li { display: inline; margin: 0; padding: 0; &:nth-child(even) { color: @xf-textColorDimmed; } &:before { content: "\00B7\20"; } &:first-child:before { content: ""; display: none; } } } .structItem-pageJump { margin-left: 8px; font-size: @xf-fontSizeSmallest; a { .xf-chip(); text-decoration: none; border-radius: @xf-borderRadiusSmall; padding: 0 3px; opacity: .5; .m-transition(); .structItem:hover &, .has-touchevents & { opacity: 1; } &:hover { text-decoration: none; .xf-chipHover(); } } } .structItem-statuses, .structItem .structItem-extraInfo { .m-listPlain(); float: right; label.iconic--checkbox i {text-align: right;} > li { float: left; margin-left: 8px; } input[type=checkbox] { .m-checkboxAligner(); } } .structItem-statuses .reactionSummary { vertical-align: -2px; } .structItem-extraInfo .reactionSummary { vertical-align: middle; } .structItem-status { .m-faBase(); display: inline-block; font-size: @xf-fontSizeNormal; color: @xf-textColorMuted; &--deleted::before { .m-faContent(@fa-var-trash-alt); <xf:macro template="uix_icons.less" name="content" arg-icon="delete" />} &--locked::before { color: #d28b00; .m-faContent(@fa-var-lock); <xf:macro template="uix_icons.less" name="content" arg-icon="lock" />} &--moderated::before { color: #00a500; .m-faContent(@fa-var-shield); <xf:macro template="uix_icons.less" name="content" arg-icon="moderate" />} &--redirect::before { color: #0026bd; .m-faContent(@fa-var-external-link); <xf:macro template="uix_icons.less" name="content" arg-icon="redirect" />} &--starred::before { .m-faContent(@fa-var-star); color: @xf-starFullColor; <xf:macro template="uix_icons.less" name="content" arg-icon="star" /> color: #fae587;} &--sticky::before { color: #ca0000; .m-faContent(@fa-var-thumbtack); <xf:macro template="uix_icons.less" name="content" arg-icon="sticky" />} &--watched::before { color: #910098; .m-faContent(@fa-var-eye); <xf:macro template="uix_icons.less" name="content" arg-icon="watched" />} &--poll::before { color: #e200ec; .m-faContent(@fa-var-chart-bar); <xf:macro template="uix_icons.less" name="content" arg-icon="poll" />} &--attention::before { .m-faContent(@fa-var-bullhorn); color: @xf-textColorAttention; <xf:macro template="uix_icons.less" name="content" arg-icon="attention" />} } .structItem.structItem--note { .xf-contentHighlightBase(); color: @xf-textColorFeature; .structItem-cell { padding-top: @_structItem-cellPaddingV / 2; padding-bottom: @_structItem-cellPaddingV / 2; font-size: @xf-fontSizeSmaller; text-align: center; } } @media (max-width: @xf-responsiveWide) { .structItem-cell { vertical-align: top; &.structItem-cell--meta { width: 115px; font-size: @xf-fontSizeSmaller; } &.structItem-cell--latest { width: 140px; font-size: @xf-fontSizeSmaller; } } } @media (max-width: @xf-uix_discussionListCollapseWidth) { .structItem-cell { //padding: (@_structItem-cellPaddingV) / 2 @_structItem-cellPaddingH; &.structItem-cell--main { display: block; padding-bottom: .2em; padding-left: 0; .structItem-minor {float: right;} } &.structItem-cell--meta { display: block; width: auto; float: left; padding-top: 0; padding-left: 0; padding-right: 0; color: @xf-textColorMuted; font-size: @xf-fontSizeSmaller; display: none; .structItem-minor { display: none; } .pairs { > dt, > dd { display: inline; float: none; margin: 0; } dt {display: none;} dd:before { .m-faBase(); .m-faContent(@fa-var-comment-alt); <xf:macro template="uix_icons.less" name="content" arg-icon="post" /> } dd:after { content: "\00A0\00B7\20"; color: @xf-textColorMuted; } } } &.structItem-cell--latest { display: block; width: auto; float: left; padding-top: 0; padding-left: 0; display: flex; align-items: center; line-height: 1; flex-wrap: wrap; a {order: 2;} .structItem-minor { order: 1; &:after {order: 2;} } .uix_mobileNodeTitle {order: 3;} &:before { // content: "\00A0\00B7\20"; color: @xf-textColorMuted; } a { color: @xf-textColorMuted; } .structItem-minor { display: inline-flex; &:before { .m-faBase(); .m-faContent(@fa-var-reply); <xf:macro template="uix_icons.less" name="content" arg-icon="reply" /> margin-right: 2px; } &:after { content: " {{ phrase('th_uix_replied') }} "; .uix_posterIsUser& { content: " {{ phrase('th_uix_posted') }} "; } white-space: pre; } } } &.structItem-cell--iconEnd { display: none; } } .structItem-pageJump, .structItem-extraInfoMinor { display: none; } .is-unread .structItem-latestDate { font-weight: @xf-fontWeightNormal; } } @media (max-width: @xf-uix_discussionListCollapseWidth) { .structItem-parts {display: none;} } @media (min-width: @xf-uix_discussionListCollapseWidth) { .uix_threadRepliesMobile { display: none; } } @media (max-width: @xf-uix_discussionListCollapseWidth) { .structItem .lastPostAv {display: none;} } /* if sidebar, then break discussion list earlier */ .p-body-main--withSidebar { @media (min-width: @xf-uix_sidebarBreakpoint) and (max-width: 1200px) { .structItem-cell { //padding: (@_structItem-cellPaddingV) / 2 @_structItem-cellPaddingH; &.structItem-cell--main { display: block; padding-bottom: .2em; padding-left: 0; .structItem-minor {float: right;} } &.structItem-cell--meta { display: block; width: auto; float: left; padding-top: 0; padding-left: 0; padding-right: 0; color: @xf-textColorMuted; font-size: @xf-fontSizeSmaller; display: none; .structItem-minor { display: none; } .pairs { > dt, > dd { display: inline; float: none; margin: 0; } dt {display: none;} dd:before { .m-faBase(); .m-faContent(@fa-var-comment-alt); <xf:macro template="uix_icons.less" name="content" arg-icon="post" /> } dd:after { content: "\00A0\00B7\20"; color: @xf-textColorMuted; } } } &.structItem-cell--latest { display: block; width: auto; float: left; padding-top: 0; padding-left: 0; display: flex; flex-wrap: wrap; align-items: center; line-height: 1; &:before { // content: "\00A0\00B7\20"; color: @xf-textColorMuted; } a { color: @xf-textColorMuted; } .structItem-minor { display: inline-block; &:before { .m-faBase(); .m-faContent(@fa-var-reply); <xf:macro template="uix_icons.less" name="content" arg-icon="reply" /> } &:after { content: ' replied '; white-space: pre; } } } } .structItem-pageJump, .structItem-extraInfoMinor { display: none; } .is-unread .structItem-latestDate { font-weight: @xf-fontWeightNormal; } } @media (min-width: @xf-uix_sidebarBreakpoint) and (max-width: 1200px) { .structItem-parts {display: none;} } @media (min-width: @xf-uix_sidebarBreakpoint) and (max-width: 1200px) { .uix_threadRepliesMobile { display: block; } } @media (min-width: @xf-uix_sidebarBreakpoint) and (max-width: 1200px) { .structItem .lastPostAv {display: none;} } } <xf:comment> @media (max-width: @xf-responsiveNarrow) { .structItem-cell.structItem-cell--main .structItem-minor {float: none;} } </xf:comment>]]>

</template>


-<template title="tag_view" version_string="2.1.0 Release Candidate 1" version_id="2010051" addon_id="XF" type="public">

<![CDATA[<xf:title page="{$page}">{$tag.tag}</xf:title> <xf:breadcrumb href="{{ link('tags') }}">{{ phrase('tags') }}</xf:breadcrumb> <xf:if is="$activeModType"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <div class="block" data-xf-init="{{ $activeModType ? 'inline-mod' : '' }}" data-type="{$activeModType}" data-href="{{ link('inline-mod') }}"> <xf:if is="$modTypes"> <div class="block-outer"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:if is="$activeModType"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> <div class="buttonGroup-buttonWrapper"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('enable_moderation') }}</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('enable_moderation') }}</h3> <xf:foreach loop="$modTypes" key="$type" value="$text"> <a href="{{ link('tags', $tag, {'mod': $type, 'page': $page}) }}" class="menu-linkRow {{ $activeModType == $type ? 'is-selected' : '' }}">{$text}</a> </xf:foreach> <xf:if is="$activeModType"> <hr class="menu-separator" /> <a href="{{ link('tags', $tag, {'page': $page}) }}" class="menu-linkRow">{{ phrase('disable') }}</a> </xf:if> </div> </div> </div> </div> </div> </div> </xf:if> <div class="block-container"> <ol class="block-body"> <xf:foreach loop="$results" value="$result"> {{ $result.render({'mod': $activeModType})|raw }} </xf:foreach> </ol> </div> <xf:if contentcheck="true"> <div class="block-outer block-outer--after"> <xf:contentcheck> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$totalResults}" link="tags" data="{$tag}" params="{{ {'mod': $activeModType} }}" wrapperclass="block-outer-main" /> <xf:showignored wrapperclass="block-outer-opposite" /> </xf:contentcheck> </div> </xf:if> </div>]]>

</template>


-<template title="th_message_macros_extras_qaForums" version_string="1.1.0" version_id="1010070" addon_id="" type="public">

<![CDATA[<xf:if is="$extras.th_best_answers_qaforums"> <dl class="pairs pairs--justified"> <xf:if is="!{{property('uix_postBitIcons')}}"> <dt>{{ phrase('th_best_answers_qaForums') }}</dt> <xf:else /> <dt data-xf-init="tooltip" title="{{ phrase('th_best_answers_qaForums') }}"> <xf:fa icon="fa-comment-exclamation" class="mdi mdi-message-alert" /> </dt> </xf:if> <dd>{$user.th_best_answers_qaforum|number}</dd> </dl> </xf:if>]]>

</template>


-<template title="th_node_list_grid_nodes.less" version_string="1.0.7 Patch Level 1" version_id="1000791" addon_id="" type="public">

<![CDATA[.node-footer--actions { a { font-size: 18px; &:not(:last-child) {padding-right: 5px;} &:before {width: auto !important;} } } @keyframes loadUp { from {bottom: 0; opacity: 0;} to {bottom: 0; opacity: 1;} } .m-uix_loadUp() { animation: loadUp; animation-duration: .8s; position: relative; } .has-js .thNodes__nodeList.thNodes__nodeList--running .block--category {.m-uix_loadUp();} <xf:if is="$xf.versionId < 2010030">.has-flexbox</xf:if> .thNodes__nodeList { display: flex; margin-left: -@xf-th_nodeGutter; margin-right: -@xf-th_nodeGutter; flex-wrap: wrap; > .block { padding: 0 @xf-th_nodeGutter; width: 100%; } .thNodes_separator { display: none; } } .has-js .thNodes__nodeList { visibility: hidden; } .has-js .thNodes__nodeList.thNodes__nodeList--running { visibility: visible; } <xf:if is="$xf.versionId < 2010030">.has-flexbox</xf:if> .thNodes__nodeList .block-container { background: none; border: none; box-shadow: none; .block-body { background: none; display: flex; flex-wrap: wrap; } .thNodes__nodeHeader { display: flex; flex-grow: 1; } .block-header { margin-bottom: @xf-th_nodeGutter; } .node { padding: @xf-th_nodeGutter @xf-th_nodeGutter 0 0; flex-basis: 300px; display: flex; flex-direction: column; + .node {border: none;} &.th_nodes_row_1 {padding-top: 0;} @media (min-width: {{ property('responsiveEdgeSpacerRemoval') + 1 }}px ) { &.th_nodes_right {padding-right: 0;} } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { &.th_nodes_col_1 {padding-left: @xf-th_nodeGutter;} } } .node-stats {display: none;} .node-statsMeta {display: inline;} .th_nodes--below-lg { .node-main { flex-grow: 1; } .node-stats {display: none;} .node-extra { // display: flex; width: 100%; margin-top: 0; padding-top: @xf-paddingLarge; } } .th_nodes--below-md { .node-statsMeta {display: inline;} } .node-body { display: flex; flex-direction: column; flex-grow: 1; flex-wrap: wrap; background-color: @xf-contentBg; border: 1px solid @xf-borderColor; .xf-th_nodeBody(); } .node-main {flex-grow: 1;} .block-footer { width: 100%; display: flex; align-items: center; justify-content: space-between; order: 1; align-self: flex-end; &:before, &:after {display: none;} a { display: inline-flex; align-items: center; &:hover {text-decoration: none;} } } .node-footer--more a:before { .m-faBase(); .m-faContent(@fa-var-arrow-right); font-size: 18px; } .node-footer--createThread:before { .m-faBase(); .m-faContent(@fa-var-plus-circle, .58em); font-size: 18px; } .th_node--hasBackgroundImage { .node-body { background-size: cover; background-position: center; position: relative; &:before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: @xf-th_imageOverlay; } > * {z-index: 1;} } } }]]>

</template>


-<template title="th_widget_login_uix" version_string="2.1.2 Patch Level 3" version_id="2010293" addon_id="" type="public">

<![CDATA[<xf:if is="!{$xf.visitor.user_id}"> <xf:form action="{{ link('login/login') }}" class="block" attributes="{{ widget_data($widget, true) }}"> <div class="block-container"> <h3 class="block-minorHeader">{{ phrase('log_in') }}</h3> <div class="block-body"> <div class="block-row"> <label for="ctrl_loginWidget_login">{{ phrase('your_name_or_email_address') }}</label> <div class="u-inputSpacer"> <input name="login" id="ctrl_loginWidget_login" class="input" /> </div> </div> <div class="block-row"> <label for="ctrl_loginWidget_password">{{ phrase('password') }}</label> <div class="u-inputSpacer"> <input name="password" id="ctrl_loginWidget_password" type="password" class="input" /> <a href="{{ link('lost-password') }}" data-xf-click="overlay">{{ phrase('forgot_your_password') }}</a> </div> </div> <div class="block-row"> <label> <input type="checkbox" name="remember" value="1" checked="checked"> {{ phrase('stay_logged_in') }} </label> </div> <xf:if is="$providers is not empty"> <div class="blocks-textJoiner"><span></span><em>{{ phrase('or_separator') }} {{ phrase('log_in_using') }}</em><span></span></div> <div class=" uix_loginProvider__row"> <xf:formrow rowtype="button"> <ul class="listHeap"> <xf:foreach loop="$providers" value="$provider"> <li> <xf:macro template="connected_account_macros" name="button" arg-provider="{$provider}" /> </li> </xf:foreach> </ul> </xf:formrow> </div> </xf:if> <xf:submitrow icon="login" rowtype="simple" /> </div> </div> </xf:form> </xf:if>]]>

</template>


-<template title="th_widget_post_thread_uix" version_string="2.1.2 Patch Level 3" version_id="2010293" addon_id="" type="public">

<![CDATA[<xf:if is="$xf.visitor.canCreateThread()"> <div class="block" {{ widget_data($widget) }}> <div class="block-container"> <div class="block-body uix_postThreadWidget block-row"> <i class="mdi mdi-forum"></i> <h3 class="uix_postThreadWidget__title">{$title}</h3> <div class="uix_postThreadWidget__description">{$options.description|raw}</div> <xf:button href="{{ link('forums/create-thread') }}" class="button--cta" icon="write" overlay="true"> {{ phrase('post_thread') }} </xf:button> </div> </div> </div> </xf:if> <xf:css src="th_widget_post_thread_uix.less" />]]>

</template>


-<template title="thpostcomments_post_macros" version_string="1.0.2" version_id="1000270" addon_id="" type="public">

<![CDATA[<xf:macro name="comment" arg-post="!" arg-thread="!"> <article class="message message--depth{$post.thpostcomments_depth} message--simple{{ $post.isIgnored() ? ' is-ignored' : '' }} js-inlineModContainer" data-author="{{ $post.User.username ?: $post.username }}" data-content="profile-post-{$post.post_id}" id="js-post-{$post.post_id}"> <xf:if is="{$post.thpostcomments_depth} > 0"> <div class="th_messageCollapseTrigger"> <i class="fa fa-chevron-down"></i> </div> </xf:if> <span class="u-anchorTarget" id="post-{$post.post_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info_simple" arg-user="{$post.User}" arg-fallbackName="{$post.username}" /> </div> <div class="message-cell message-cell--main"> <div class="message-main js-quickEditTarget"> <div class="message-content js-messageContent"> <header class="message-attribution message-attribution--plain"> <ul class="listInline listInline--bullet"> <li class="message-attribution-user"> <xf:avatar user="$post.User" size="xxs" /> <h4 class="attribution"> <xf:macro template="profile_post_macros" name="attribution" arg-profilePost="{$post}" arg-showTargetUser="{$showTargetUser}" /> </h4> </li> <li><a href="{{ link('posts', $post) }}" class="u-concealed" rel="nofollow"> <xf:date time="$post.post_date" /> </a> </li> </ul> </header> <article class="message-body"> {{ bb_code($post.message, 'post', $post) }} </article> <xf:if is="$post.attach_count"> <xf:macro template="message_macros" name="attachments" arg-attachments="{$post.Attachments}" arg-message="{$post}" arg-canView="{{ $thread.canViewAttachments() }}" /> </xf:if> </div> <footer class="message-footer"> <div class="message-actionBar actionBar"> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:if is="$post.canLike()"> <a href="{{ link('posts/like', $post) }}" class="actionBar-action actionBar-action--like" data-xf-click="like" data-like-list="< .message | .js-likeList"> <xf:if is="$post.isLiked()"> {{ phrase('unlike') }} <xf:else /> {{ phrase('like') }} </xf:if> </a> </xf:if> <xf:if is="$post.canComment()"> <a href="{{ link('posts/comment', $post) }}" class="actionBar-action actionBar-action--comment" title="{{ phrase('reply_quoting_this_message')|for_attr }}" data-editor-target="#js-post-{$post.post_id}" data-xf-click="comment">{{ phrase('reply') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$post.canUseInlineModeration()"> <span class="actionBar-action actionBar-action--inlineMod"> <xf:checkbox standalone="true"> <xf:option value="{$post.post_id}" class="js-inlineModToggle" data-xf-init="tooltip" title="{{ phrase('select_for_moderation')|for_attr }}" label="{{ phrase('select_for_moderation') }}" hiddenlabel="true" /> </xf:checkbox> </span> </xf:if> <xf:if is="$post.canReport()"> <a href="{{ link('posts/report', $post) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$post.canEdit()"> <xf:js src="xf/message.js" min="1" /> <a href="{{ link('posts/edit', $post) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem" data-xf-click="quick-edit" data-editor-target="#js-post-{$post.post_id} .js-quickEditTarget" data-menu-closer="true">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.edit_count && $post.canViewHistory()"> <a href="{{ link('posts/history', $post) }}" class="actionBar-action actionBar-action--history actionBar-action--menuItem" data-xf-click="toggle" data-target="#js-post-{$post.post_id} .js-historyTarget" data-menu-closer="true">{{ phrase('history') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canDelete('soft')"> <a href="{{ link('posts/delete', $post) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canCleanSpam()"> <a href="{{ link('spam-cleaner', $post) }}" class="actionBar-action actionBar-action--spam actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('spam') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() && $post.ip_id"> <a href="{{ link('posts/ip', $post) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canWarn()"> <a href="{{ link('posts/warn', $post) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$post.warning_id && $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $post.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </div> </footer> </div> </div> </div> </article> </xf:macro>]]>

</template>


-<template title="thread_list_macros" version_string="2.1.4" version_id="2010470" addon_id="XF" type="public">

<![CDATA[<xf:macro name="item" arg-thread="!" arg-forum="" arg-forceRead="{{ false }}" arg-showWatched="{{ true }}" arg-allowInlineMod="{{ true }}" arg-chooseName="" arg-extraInfo="" arg-allowEdit="{{ true }}"> <xf:css src="structured_list.less" /> <div class="structItem structItem--thread{{ $thread.prefix_id ? ' is-prefix' . $thread.prefix_id : '' }}{{ $thread.isIgnored() ? ' is-ignored' : '' }}{{ ($thread.isUnread() AND !$forceRead) ? ' is-unread' : '' }}{{ $thread.discussion_state == 'moderated' ? ' is-moderated' : '' }}{{ $thread.discussion_state == 'deleted' ? ' is-deleted' : '' }} js-inlineModContainer js-threadListItem-{$thread.thread_id}" data-author="{{ $thread.User.username ?: $thread.username }}"> <div class="structItem-cell structItem-cell--icon"> <div class="structItem-iconContainer"> <xf:avatar user="$thread.User" size="s" defaultname="{$thread.username}" /> <xf:if is="$thread.getUserPostCount()"> <xf:avatar user="$xf.visitor" size="s" href="" class="avatar--separated structItem-secondaryIcon" tabindex="0" data-xf-init="tooltip" data-trigger="auto" title="{{ phrase('you_have_posted_x_messages_in_this_thread', {'count': $thread.getUserPostCount() }) }}" /> </xf:if> </div> </div> <div class="structItem-cell structItem-cell--main" data-xf-init="touch-proxy"> <xf:if contentcheck="true"> <ul class="structItem-statuses"> <xf:contentcheck> <xf:if is="property('reactionSummaryOnLists') == 'status' && $thread.first_post_reactions"> <li><xf:reactions summary="true" reactions="{$thread.first_post_reactions}" /></li> </xf:if> <xf:if is="$thread.discussion_state == 'moderated'"> <li> <i class="structItem-status structItem-status--moderated" aria-hidden="true" title="{{ phrase('awaiting_approval')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('awaiting_approval') }}</span> </li> </xf:if> <xf:if is="$thread.discussion_state == 'deleted'"> <li> <i class="structItem-status structItem-status--deleted" aria-hidden="true" title="{{ phrase('deleted')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('deleted') }}</span> </li> </xf:if> <xf:if is="!$thread.discussion_open"> <li> <i class="structItem-status structItem-status--locked" aria-hidden="true" title="{{ phrase('locked')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('locked') }}</span> </li> </xf:if> <xf:if is="$thread.discussion_type == 'redirect'"> <li> <i class="structItem-status structItem-status--redirect" aria-hidden="true" title="{{ phrase('redirect')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('redirect') }}</span> </li> <xf:elseif is="$thread.discussion_type == 'poll'" /> <li> <i class="structItem-status structItem-status--poll" aria-hidden="true" title="{{ phrase('poll')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('poll') }}</span> </li> </xf:if> <xf:if is="$thread.sticky"> <li> <i class="structItem-status structItem-status--sticky" aria-hidden="true" title="{{ phrase('sticky')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('sticky') }}</span> </li> </xf:if> <xf:if is="{$showWatched} AND {$xf.visitor.user_id}"> <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}"> <li> <i class="structItem-status structItem-status--watched" aria-hidden="true" title="{{ phrase('thread_watched')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('thread_watched') }}</span> </li> <xf:elseif is="!$forum AND {$thread.Forum.Watch.{$xf.visitor.user_id}}" /> <li> <i class="structItem-status structItem-status--watched" aria-hidden="true" title="{{ phrase('forum_watched')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('forum_watched') }}</span> </li> </xf:if> </xf:if> </xf:contentcheck> </ul> </xf:if> <div class="structItem-title" uix-data-href="{{ link('threads' . (($thread.isUnread() AND !$forceRead) ? '/unread' : ''), $thread) }}"> <xf:set var="$canPreview" value="{{ $thread.canPreview() }}" /> <xf:if is="$thread.prefix_id"> <xf:if is="$forum"> <a href="{{ link('forums', $forum, {'prefix_id': $thread.prefix_id}) }}" class="labelLink" rel="nofollow">{{ prefix('thread', $thread, 'html', '') }}</a> <xf:else /> {{ prefix('thread', $thread, 'html', '') }} </xf:if> </xf:if> <a href="{{ link('threads' . (($thread.isUnread() AND !$forceRead) ? '/unread' : ''), $thread) }}" class="" data-tp-primary="on" data-xf-init="{{ $canPreview ? 'preview-tooltip' : '' }}" data-preview-url="{{ $canPreview ? link('threads/preview', $thread) : '' }}">{$thread.title}</a> </div> <div class="structItem-minor"> <xf:if contentcheck="true"> <ul class="structItem-extraInfo"> <xf:contentcheck> <xf:if is="property('reactionSummaryOnLists') == 'minor_opposite' && $thread.first_post_reactions"> <li><xf:reactions summary="true" reactions="{$thread.first_post_reactions}" /></li> </xf:if> <xf:if is="{$extraInfo}"> <li>{$extraInfo}</li> <xf:elseif is="$allowEdit AND $thread.canEdit() AND $thread.canUseInlineModeration()" /> <xf:if is="!$allowInlineMod OR !$forum"> <xf:set var="$editParams" value="{{ { '_xfNoInlineMod': !$allowInlineMod ? 1 : null, '_xfForumName': !$forum ? 1 : 0 } }}" /> <xf:else /> <xf:set var="$editParams" value="{{ [] }}" /> </xf:if> <xf:if is="$thread.discussion_type != 'redirect'"> <li class="structItem-extraInfoMinor"> <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" data-cache="false" data-href="{{ link('threads/edit', $thread, $editParams) }}"> {{ phrase('edit') }} </a> </li> </xf:if> </xf:if> <xf:if is="$chooseName"> <li><xf:checkbox standalone="true"> <xf:option name="{$chooseName}[]" value="{$thread.thread_id}" class="js-chooseItem" /> </xf:checkbox></li> <xf:elseif is="$allowInlineMod AND $thread.canUseInlineModeration()" /> <li><xf:checkbox standalone="true"> <xf:option value="{$thread.thread_id}" class="js-inlineModToggle" data-xf-init="tooltip" title="{{ phrase('select_for_moderation') }}" label="{{ phrase('select_for_moderation') }}" hiddenlabel="true" /> </xf:checkbox></li> </xf:if> </xf:contentcheck> </ul> </xf:if> <xf:if is="$thread.discussion_state == 'deleted'"> <xf:if is="{$extraInfo}"><span class="structItem-extraInfo">{$extraInfo}</span></xf:if> <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" /> <xf:else /> <ul class="structItem-parts"> <li><xf:username user="$thread.User" defaultname="{$thread.username}" /></li> <li class="structItem-startDate"><a href="{{ link('threads', $thread) }}" rel="nofollow"><xf:date time="{$thread.post_date}" /></a></li> <xf:if is="!$forum"> <li><a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a></li> </xf:if> <xf:if is="$thread.discussion_type != 'redirect' && $thread.reply_count >= $xf.options.messagesPerPage && $xf.options.lastPageLinks"> <span class="structItem-pageJump"> <xf:foreach loop="{{ last_pages($thread.reply_count + 1, $xf.options.messagesPerPage, $xf.options.lastPageLinks) }}" value="$p"> <a href="{{ link('threads', $thread, {'page': $p}) }}">{$p}</a> </xf:foreach> </span> </xf:if> </ul> </xf:if> <div class="uix_threadRepliesMobile"> <dl class="pairs pairs--justified"> <dt><xf:fa icon="fa-comment" class="uix_icon uix_icon--post" /></dt> <dd>{{ $thread.discussion_type == 'redirect' ? '&ndash;' : $thread.reply_count|number }}</dd> </dl> </div> </div> </div> <div class="structItem-cell structItem-cell--meta" title="{{ phrase('first_message_reaction_score:')|for_attr }} {$thread.first_post_reaction_score|number}"> <dl class="pairs pairs--justified"> <dt>{{ phrase('replies') }}</dt> <dd>{{ $thread.discussion_type == 'redirect' ? '&ndash;' : $thread.reply_count|number_short }}</dd> </dl> <dl class="pairs pairs--justified structItem-minor"> <dt>{{ phrase('views') }}</dt> <dd>{{ $thread.discussion_type == 'redirect' ? '&ndash;' : ($thread.view_count > $thread.reply_count ? $thread.view_count|number_short : number_short($thread.reply_count+1)) }}</dd> </dl> </div> <xf:if is="$thread.reply_count|number == 0"> <xf:set var="$uix_originalPosterLastPosted" value="1" /> </xf:if> <div class="structItem-cell structItem-cell--latest {{ $uix_originalPosterLastPosted ? 'uix_posterIsUser' : '' }}"> <xf:if is="$thread.discussion_type == 'redirect'"> {{ phrase('n_a') }} <xf:else /> <xf:if is="!$forum"> <a class="uix_mobileNodeTitle" href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a> </xf:if> <a href="{{ link('threads/latest', $thread) }}" rel="nofollow"><xf:date time="{$thread.last_post_date}" class="structItem-latestDate" /></a> <div class="structItem-minor"> <xf:if is="$xf.visitor.isIgnoring($thread.last_post_user_id)"> {{ phrase('ignored_member') }} <xf:else /> <xf:username user="{$thread.LastPoster}" defaultname="{$thread.last_post_username}" /> </xf:if> </div> </xf:if> </div> <div class="structItem-cell structItem-cell--icon structItem-cell--iconEnd"> <div class="structItem-iconContainer"> <xf:if is="$xf.visitor.isIgnoring($thread.last_post_user_id) OR $thread.discussion_type == 'redirect'"> <xf:avatar user="{{ null }}" size="xxs" /> <xf:else /> <xf:avatar user="{$thread.LastPoster}" defaultname="{$thread.last_post_username}" size="xxs" /> </xf:if> </div> </div> </div> </xf:macro> <xf:macro name="item_new_posts" arg-thread="!"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$thread.LastPoster" size="xxs" defaultname="{$thread.last_post_username}" /> </div> <div class="contentRow-main contentRow-main--close"> <xf:if is="$thread.isUnread()"> <a href="{{ link('threads/unread', $thread) }}">{{ prefix('thread', $thread) }}{$thread.title}</a> <xf:else /> <a href="{{ link('threads/post', $thread, {'post_id': $thread.last_post_id}) }}">{{ prefix('thread', $thread) }}{$thread.title}</a> </xf:if> <div class="contentRow-minor contentRow-minor--hideLinks"> <ul class="listInline listInline--bullet"> <li>{{ phrase('latest_x', {'name': $thread.last_post_cache.username}) }}</li> <li><xf:date time="{$thread.last_post_date}" /></li> </ul> </div> <div class="contentRow-minor contentRow-minor--hideLinks"> <a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a> </div> </div> </div> </xf:macro> <xf:macro name="item_new_threads" arg-thread="!"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$thread.User" size="xxs" defaultname="{$thread.username}" /> </div> <div class="contentRow-main contentRow-main--close"> <a href="{{ link('threads', $thread) }}">{{ prefix('thread', $thread) }}{$thread.title}</a> <div class="contentRow-minor contentRow-minor--hideLinks"> <ul class="listInline listInline--bullet"> <li>{{ phrase('started_by_x', {'name': $thread.username}) }}</li> <li><xf:date time="{$thread.post_date}" /></li> <li>{{ phrase('replies:') }} {$thread.reply_count|number_short}</li> </ul> </div> <div class="contentRow-minor contentRow-minor--hideLinks"> <a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a> </div> </div> </div> </xf:macro> <xf:macro name="quick_thread" arg-forum="!" arg-page="1" arg-order="last_post_date" arg-direction="desc"> <xf:css src="structured_list.less" /> <xf:if is="$forum.canCreateThread()"> <xf:js src="xf/thread.js" min="1" /> <xf:set var="$inlineMode" value="{{ ($page == 1 && $order == 'last_post_date' && $direction == 'desc') ? true : false }}" /> <xf:form action="{{ link('forums/post-thread', $forum, {'inline-mode': $inlineMode}) }}" class="structItem" ajax="true" draft="{{ link('forums/draft', $forum) }}" data-xf-init="quick-thread" data-focus-activate=".js-titleInput" data-focus-activate-href="{{ link('forums/post-thread', $forum, {'inline-mode': true}) }}" data-focus-activate-target=".js-quickThreadFields" data-insert-target=".js-threadList" data-replace-target=".js-emptyThreadList"> <div class="structItem-cell structItem-cell--icon"> <div class="structItem-iconContainer"> <xf:avatar user="$xf.visitor" size="s" /> </div> </div> <div class="structItem-cell structItem-cell--newThread js-prefixListenContainer"> <xf:formrow rowtype="noGutter noLabel fullWidth noPadding mergeNext" label="{{ phrase('title') }}"> <xf:prefixinput maxlength="{{ max_length('XF:Thread', 'title') }}" placeholder="{$forum.thread_prompt}" title="{{ phrase('post_new_thread_in_this_forum') }}" prefix-value="{$forum.default_prefix_id}" type="thread" prefixes="{{ $forum.getUsablePrefixes() }}" data-xf-init="tooltip" rows="1"/> </xf:formrow> <div class="js-quickThreadFields inserter-container is-hidden"><!--{{ phrase('loading...') }}--></div> </div> </xf:form> </xf:if> </xf:macro>]]>

</template>


-<template title="thread_move" version_string="2.1.8 Patch 1" version_id="2010871" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('move_thread:') }} {{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title> <xf:h1>{{ phrase('move_thread:') }} {{ prefix('thread', $thread) }}{$thread.title}</xf:h1> <xf:breadcrumb source="$thread.getBreadcrumbs()" /> <xf:form action="{{ link('threads/move', $thread) }}" class="block" ajax="true"> <div class="block-container"> <div class="block-body js-prefixListenContainer"> <xf:prefixinputrow label="{{ phrase('title') }}" prefixes="{{ $thread.isPrefixEditable() ? $prefixes : [] }}" type="thread" prefix-value="{$thread.prefix_id}" textbox-value="{$thread.title}" href="{{ link('forums/prefixes') }}" listen-to="< .js-prefixListenContainer | .js-nodeList" autofocus="autofocus" maxlength="{{ max_length($thread, 'title') }}" /> <xf:selectrow name="target_node_id" value="{$forum.node_id}" class="js-nodeList" label="{{ phrase('destination_forum') }}"> <xf:foreach loop="$nodeTree.getFlattened(0)" value="$treeEntry"> <xf:option value="{$treeEntry.record.node_id}" disabled="{{ $treeEntry.record.node_type_id != 'Forum' ? 'disabled' : '' }}"> {{ repeat_raw('&nbsp; ', $treeEntry.depth) }} {$treeEntry.record.title} </xf:option> </xf:foreach> </xf:selectrow> <xf:macro template="helper_action" name="thread_redirect" arg-label="{{ phrase('redirection_notice') }}" /> <xf:checkboxrow> <xf:option name="notify_watchers" value="1" selected="{{ true }}">{{ phrase('notify_members_watching_destination_forum') }}</xf:option> </xf:checkboxrow> <xf:if is="$thread.canSendModeratorActionAlert()"> <xf:macro template="helper_action" name="thread_alert" arg-selected="{{ true }}" /> </xf:if> </div> <xf:submitrow icon="save" sticky="true" /> </div> </xf:form>]]>

</template>


-<template title="thread_view" version_string="2.1.6" version_id="2010670" addon_id="XF" type="public">

<![CDATA[<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title> <xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1> <xf:if is="{$xpressView}"> <xf:set var="$uix_condensed" value="1" /> </xf:if> <xf:pageaction> <xf:if is="$thread.canReply()"> <xf:button href="{{ link('threads/reply', $thread) }}" class="button--cta uix_quickReply--button" icon="write">{{ phrase('reply') }}</xf:button> </xf:if> </xf:pageaction> <xf:description meta="false"> <ul class="listInline listInline--bullet"> <li> <xf:fa icon="fa-user" title="{{ phrase('thread_starter')|for_attr }}" /> <span class="u-srOnly">{{ phrase('thread_starter') }}</span> <xf:username user="{$thread.User}" defaultname="{$thread.username}" class="u-concealed" /> </li> <li> <xf:fa icon="fa-clock" title="{{ phrase('start_date')|for_attr }}" /> <span class="u-srOnly">{{ phrase('start_date') }}</span> <a href="{{ link('threads', $thread) }}" class="u-concealed"><xf:date time="{$thread.post_date}" /></a> </li> <xf:if is="$xf.options.enableTagging AND ($thread.canEditTags() OR $thread.tags)"> <li> <xf:macro template="tag_macros" name="list" arg-tags="{$thread.tags}" arg-tagList="tagList--thread-{$thread.thread_id}" arg-editLink="{{ $thread.canEditTags() ? link('threads/tags', $thread) : '' }}" /> </li> </xf:if> </ul> </xf:description> <xf:set var="$fpSnippet" value="{{ snippet($firstPost.message, 0, {'stripBbCode': true}) }}" /> <xf:macro template="metadata_macros" name="metadata" arg-description="{$fpSnippet}" arg-shareUrl="{{ link('canonical:threads', $thread) }}" arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" /> <xf:page option="ldJsonHtml"> <xf:if is="$thread.User.avatar_highdpi"> <xf:set var="$image">{$thread.User.getAvatarUrl('h', null, true)}</xf:set> <xf:elseif is="$thread.User.avatar_date" /> <xf:set var="$image">{$thread.User.getAvatarUrl('l', null, true)}</xf:set> <xf:elseif is="property('publicMetadataLogoUrl')" /> <xf:set var="$image">{{ base_url(property('publicMetadataLogoUrl'), true) }}</xf:set> </xf:if> <xf:if is="$image AND property('publicMetadataLogoUrl')"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "DiscussionForumPosting", "@id": "{{ link('canonical:threads', $thread)|escape('json') }}", "headline": "{$thread.title|escape('json')}", "articleBody": "{$fpSnippet|escape('json')}", "articleSection": "{$thread.Forum.Node.title|escape('json')}", "author": { "@type": "Person", "name": "{{ ($thread.User ? $thread.User.username : $thread.username)|escape('json') }}" }, "datePublished": "{{ date($thread.post_date, 'Y-m-d')|escape('json') }}", "dateModified": "{{ date($thread.last_post_date, 'Y-m-d')|escape('json') }}", "image": "{$image|escape('json')}", "interactionStatistic": { "@type": "InteractionCounter", "interactionType": "https://schema.org/ReplyAction", "userInteractionCount": {$thread.reply_count} }, "publisher": { "@type": "Organization", "name": "{$xf.options.boardTitle|escape('json')}", "logo": { "@type": "ImageObject", "url": "{{ base_url(property('publicMetadataLogoUrl'), true)|escape('json') }}" } }, "mainEntityOfPage": { "@type": "WebPage", "@id": "{$xf.options.boardUrl}" } } </script> </xf:if> </xf:page> <!--[XF:content_top]--> <xf:if is="$pendingApproval"> <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div> </xf:if> <xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" arg-thread="{$thread}" /> <xf:breadcrumb source="$forum.getBreadcrumbs()" /> <xf:if is="$canInlineMod OR $thread.canUseInlineModeration()"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{$thread.canViewAttachments()}" /> <xf:if is="$poll"> <xf:macro template="poll_macros" name="poll_block" arg-poll="{$poll}" /> </xf:if> <xf:ad position="thread_view_above_messages" arg-thread="{$thread}" /> <div class="block block--messages" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="post" data-href="{{ link('inline-mod') }}"> <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer" /> <div class="block-outer"><xf:trim> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}" link="threads" data="{$thread}" wrapperclass="block-outer-main" /> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$canInlineMod"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> <xf:if is="$thread.discussion_state == 'deleted' AND $thread.canUndelete()"> <xf:button href="{{ link('threads/undelete', $thread) }}" class="button--link" overlay="true"> {{ phrase('undelete') }} </xf:button> </xf:if> <xf:if is="$thread.canApproveUnapprove() AND $thread.discussion_state == 'moderated'"> <xf:button href="{{ link('threads/approve', $thread) }}" class="button--link" overlay="true"> {{ phrase('approve') }} </xf:button> </xf:if> <xf:if is="$xf.visitor.user_id AND $thread.isUnread()"> <xf:button href="{{ $firstUnread ? ('#post-' . $firstUnread.post_id) : link('threads/unread', $thread, {'new': 1}) }}" class="button--link" data-xf-click="scroll-to" data-silent="true"> {{ phrase('jump_to_new') }} </xf:button> </xf:if> <xf:if is="$thread.canWatch()"> <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link" data-xf-click="switch-overlay" data-sk-watch="{{ phrase('watch') }}" data-sk-unwatch="{{ phrase('unwatch') }}"> <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}"> {{ phrase('unwatch') }} <xf:else /> {{ phrase('watch') }} </xf:if> </xf:button> </xf:if> <xf:if contentcheck="true"> <div class="buttonGroup-buttonWrapper"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <xf:contentcheck> <!--[XF:thread_tools_menu:top]--> <xf:if is="$thread.canEdit()"> <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('edit_thread') }}</a> </xf:if> <xf:if is="$thread.canLockUnlock()"> <a href="{{ link('threads/quick-close', $thread) }}" class="menu-linkRow" data-xf-click="switch" data-menu-closer="true"> <xf:if is="$thread.discussion_open"> {{ phrase('lock_thread') }} <xf:else /> {{ phrase('unlock_thread') }} </xf:if> </a> </xf:if> <xf:if is="$thread.canStickUnstick()"> <a href="{{ link('threads/quick-stick', $thread) }}" class="menu-linkRow" data-xf-click="switch" data-menu-closer="true"> <xf:if is="$thread.sticky"> {{ phrase('unstick_thread') }} <xf:else /> {{ phrase('stick_thread') }} </xf:if> </a> </xf:if> <xf:if is="$thread.canCreatePoll()"> <a href="{{ link('threads/poll/create', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('create_poll') }}</a> </xf:if> <xf:if is="$thread.canDelete('soft')"> <a href="{{ link('threads/delete', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('delete_thread') }}</a> </xf:if> <xf:if is="$thread.canMove()"> <a href="{{ link('threads/move', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('move_thread') }}</a> </xf:if> <xf:if is="$thread.canReplyBan()"> <a href="{{ link('threads/reply-bans', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('manage_reply_bans') }}</a> </xf:if> <xf:if is="$thread.canViewModeratorLogs()"> <a href="{{ link('threads/moderator-actions', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a> </xf:if> <!--[XF:thread_tools_menu:before_footer]--> <xf:if is="$thread.canUseInlineModeration()"> <div class="menu-footer" data-xf-init="inline-mod" data-type="thread" data-href="{{ link('inline-mod') }}" data-toggle=".js-threadInlineModToggle"> <xf:checkbox> <xf:option class="js-threadInlineModToggle" value="{$thread.thread_id}">{{ phrase('select_for_moderation') }}</xf:option> </xf:checkbox> </div> </xf:if> <!--[XF:thread_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:trim></div> <div class="block-outer js-threadStatusField"><xf:trim> <xf:if contentcheck="true"> <div class="blockStatus blockStatus--info"> <xf:contentcheck> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="threads" arg-group="thread_status" arg-onlyInclude="{$forum.field_cache}" arg-set="{$thread.custom_fields}" arg-wrapperClass="blockStatus-message" /> </xf:contentcheck> </div> </xf:if> </xf:trim></div> <div class="block-container lbContainer" data-xf-init="lightbox{{ $xf.options.selectQuotable ? ' select-to-quote' : '' }}" data-message-selector=".js-post" data-lb-id="thread-{$thread.thread_id}" data-lb-universal="{$xf.options.lightBoxUniversal}"> <div class="block-body js-replyNewMessageContainer"> <xf:foreach loop="$posts" value="$post"> <xf:if is="$post.message_state == 'deleted'"> <xf:macro template="post_macros" name="post_deleted" arg-post="{$post}" arg-thread="{$thread}" /> <xf:else /> <xf:macro template="post_macros" name="post" arg-post="{$post}" arg-uix_condensed="{$uix_condensed}" arg-thread="{$thread}" /> </xf:if> </xf:foreach> </div> </div> <xf:if contentcheck="true"> <div class="block-outer block-outer--after"> <xf:contentcheck> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}" link="threads" data="{$thread}" wrapperclass="block-outer-main" /> <xf:showignored wrapperclass="block-outer-opposite" /> <xf:if is="!$thread.canReply() AND $thread.discussion_state == 'visible' AND $thread.discussion_open"> <div class="block-outer-opposite"> <xf:if is="$xf.visitor.user_id"> <span class="button is-disabled"> {{ phrase('no_permission_to_reply') }} <!-- this is not interactive so shouldn't be a button element --> </span> <xf:else /> <xf:button href="{{ link('login') }}" class="button--link" overlay="true"> {{ phrase('log_in_or_register_to_reply') }} </xf:button> </xf:if> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer block-outer--after" /> </div> <xf:ad position="thread_view_below_messages" arg-thread="{$thread}" /> <xf:if is="$thread.canReply()"> <xf:form action="{{ link('threads/add-reply', $thread) }}" ajax="true" draft="{{ link('threads/draft', $thread) }}" class="block js-quickReply" data-xf-init="attachment-manager quick-reply{{ $xf.visitor.isShownCaptcha() ? ' guest-captcha' : '' }}" data-message-container="div[data-type='post'] .js-replyNewMessageContainer" data-preview-url="{{ link('threads/reply-preview', $thread, {'quick_reply': 1}) }}"> <xf:js src="xf/message.js" min="1" /> <xf:set var="$lastPost" value="{$posts|last}" /> <div class="block-container"> <div class="block-body"> <xf:macro template="quick_reply_macros" name="body" arg-message="{$thread.draft_reply.message}" arg-attachmentData="{$attachmentData}" arg-forceHash="{$thread.draft_reply.attachment_hash}" arg-messageSelector=".js-post" arg-multiQuoteHref="{{ link('threads/multi-quote', $thread) }}" arg-multiQuoteStorageKey="multiQuoteThread" arg-lastDate="{$lastPost.post_date}" arg-lastKnownDate="{$thread.last_post_date}" /> </div> </div> </xf:form> </xf:if> <div class="blockMessage blockMessage--none"> <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" arg-label="{{ phrase('share:') }}" /> </div> <xf:macro name="thread_status" arg-thread="!" arg-wrapperClass=""> <xf:if contentcheck="true"> <div class="{$wrapperClass}"> <dl class="blockStatus"> <dt>{{ phrase('status') }}</dt> <xf:contentcheck> <xf:if is="$thread.discussion_state == 'deleted'"> <dd class="blockStatus-message blockStatus-message--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" /> </dd> <xf:elseif is="$thread.discussion_state == 'moderated'" /> <dd class="blockStatus-message blockStatus-message--moderated"> {{ phrase('awaiting_approval_before_being_displayed_publicly') }} </dd> </xf:if> <xf:if is="!$thread.discussion_open"> <dd class="blockStatus-message blockStatus-message--locked"> {{ phrase('not_open_for_further_replies') }} </dd> </xf:if> </xf:contentcheck> </dl> </div> </xf:if> </xf:macro> <xf:widgetpos id="thread_view_sidebar" context-thread="{$thread}" position="sidebar" />]]>

</template>


-<template title="thtopics_topic_heading" version_string="1.0.3 Alpha 1" version_id="1000311" addon_id="" type="public">

<![CDATA[<xf:if is="{{ $xf.options.thtopics_enableTopics }}"> <xf:css src="thtopics.less" /> <xf:css src="thtopics_topic_cache.less" /> <div class="p-body-header--inner uix_headerInner"> <xf:if is="($template === 'thread_view') OR ($template === 'topic_view')"> <ul class="thTopicHeading__container__topics"> <li class="thTopicHeading__container__topics__topic"><a href="{{ link('forums/all-threads', null, {'topics': $topic.title . '.' . $topic.topic_id}) }}" class="thTopic thTopic--inverted thTopic--{$topic.topic_id} {$topic.extra_class}">{$topic.title}</a></li> <xf:foreach loop="$thread.additional_topics" value="$additionalTopic"> <li class="thTopicHeading__container__topics__topic"><a href="{{ link('forums/all-threads', null, {'topics': $additionalTopic.title . '.' . $additionalTopic.topic_id}) }}" class="thTopic--additional {$topic.extra_class}">{$additionalTopic.title}</a></li> </xf:foreach> </ul> <div class="p-title"> <h1 class="p-title-value">{{ prefix('thread', $thread) }}{$thread.title}</h1> </div> <div class="p-description">{$description}</div> <xf:else /> <div class="p-title"> <h1 class="p-title-value">{$topic.title}</h1> </div> <div class="p-description">{$topic.description}</div> </xf:if> </div> <xf:if contentcheck="true"> <div class="uix_headerInner--opposite"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </div> </xf:if> </xf:if>]]>

</template>


-<template title="thtrending_trending_view" version_string="1.0.2 Patch Level 1" version_id="1000291" addon_id="" type="public">

<![CDATA[<xf:title>{$trending.title}</xf:title> <xf:wrap template="forum_overview_wrapper" /> <xf:page option="uix_mainTabSets" value="forum" /> <xf:page option="uix_mainTabActive" value="trending" /> <xf:pageaction> <xf:if is="$xf.visitor.canCreateThread()"> <xf:button href="{{ link('forums/create-thread') }}" class="button--cta" icon="write" overlay="true"> {{ phrase('post_thread...') }} </xf:button> </xf:if> </xf:pageaction> <xf:widgetpos id="thtrending_trending_sidebar" position="sidebar" /> <xf:widgetpos id="thtrending_trending_sidenav" position="sidenav" /> <xf:if is="$xf.options.forumsDefaultPage === 'thtrending_trending_list'"> <xf:widgetpos id="thuix_index_page" position="sidebar" /> </xf:if> <xf:widgetpos id="thtrending_trending_above_threads" /> <xf:if is="count($trendingConfigs) > 1"> <div class="tabs tabs--standalone"> <div class="hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <xf:foreach loop="$trendingConfigs" value="$item"> <a href="{{ link('trending', $item) }}" class="tabs-tab {{ ($trending.trending_id == $item.trending_id) ? 'is-active' : '' }}">{$item.title}</a> </xf:foreach> </span> </div> </div> </xf:if> {$trending.renderTrendingContent()|raw} <xf:widgetpos id="thtrending_trending_below_threads" />]]>

</template>


-<template title="thxpress_article_wrapper_macros" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<!--dont believe we need this anymore (IH) --> <xf:macro name="header" arg-article="!" arg-thread="!" arg-titleHtml="{{ null }}" arg-showMeta="{{ true }}" arg-metaHtml="{{ null }}"> <xf:pageaction> <xf:if is="$thread.canReply()"> <xf:button href="{$article.link}" class="button--cta" icon="article"> {{ phrase('thxpress_go_to_article') }} </xf:button> </xf:if> <xf:if is="$thread.canReply()"> <xf:button href="{{ link('threads/reply', $thread) }}" class="button--cta uix_quickReply--button" icon="write"> {{ phrase('reply') }} </xf:button> </xf:if> </xf:pageaction> </xf:macro>]]>

</template>


-<template title="thxpress_inputs.less" version_string="1.1.1 Patch Level 1" version_id="1010191" addon_id="" type="public">

<![CDATA[// ###################################### INPUTS ########################## @_input-numberWidth: 150px; @_input-numberNarrowWidth: 90px; @_input-textColor: xf-default(@xf-input--color, @xf-textColor); @_input-elementSpacer: @xf-paddingMedium; @_input-checkBoxSpacer: 1.5em; .m-inputReadOnly() { color: mix(xf-default(@xf-input--color, @xf-textColor), xf-default(@xf-inputDisabled--color, @xf-textColorMuted)); background: mix(xf-default(@xf-input--background-color, @xf-contentBg), xf-default(@xf-inputDisabled--background-color, @xf-paletteNeutral1)); } body .p-pageWrapper .p-body { input[type="search"], input[type="text"], input[type="email"], input[type="url"], select, textarea { .xf-input(); display: block; width: 100%; line-height: @xf-lineHeightDefault; text-align: left; // this will be flipped in RTL word-wrap: break-word; -webkit-appearance: none; -moz-appearance: none; appearance: none; .m-transition(); .m-placeholder({color: fade(@_input-textColor, 40%); }); .m-inputZoomFix(); &:focus, { outline: 0; .xf-inputFocus(); .m-placeholder({color: fade(@_input-textColor, 50%); }); } &[readonly], &.is-readonly { .m-inputReadOnly(); } &[disabled] { .xf-inputDisabled(); } &[type=number] { text-align: right; max-width: @_input-numberWidth; &.input--numberNarrow { width: @_input-numberNarrowWidth; } } } textarea { min-height: 0; max-height: 400px; max-height: 75vh; resize: vertical; &.input--fitHeight { resize: none; &.input--fitHeight--short { max-height: 200px; max-height: 35vh; } } &.input--code { overflow-x: auto; -ltr-rtl-text-align: left; // force blocks of code back to left align } &.input--maxHeight-300px { max-height: 300px; } .has-js &[rows="1"][data-single-line] { overflow: hidden; resize: none; } } // this makes select inputs consistent across all browsers and OSes select { padding-right: 1em !important; .m-selectGadgetColor(@_input-textColor); background-size: 1em !important; background-repeat: no-repeat !important; -ltr-background-position: 100% !important; white-space: nowrap; word-wrap: normal; -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; overflow-x: hidden; // iOS seems to require this to prevent overflow with long options... overflow-y: auto; // ...and Firefox seems to require this to prevent the above from breaking vertical scroll... &[disabled] { .m-selectGadgetColor(xf-default(@xf-inputDisabled--color, @xf-textColor)); } &[size], &[multiple] { background-image: none !important; padding-right: xf-default(@xf-input--padding, 5px) !important; } } }]]>

</template>


-<template title="thxpress_sidebar.less" version_string="1.1.1 Release Candidate 1" version_id="1010151" addon_id="" type="public">

<![CDATA[@xpress_sidebarRowPaddingV: @xf-uix_widgetPadding; @xpress_sidebarRowPaddingH: @xf-uix_widgetPadding; /* Sidebar widgets */ .p-body-sidebar { .block-xpress { .block-container > .block-body:first-child { display:none; & + .block-minorHeader { border-top: none; } } .block-container > .block-body:first-child:last-child {display:block;} .block-row ul:not(.listInline) { .m-listPlain(); margin: -@xpress_sidebarRowPaddingV -@xpress_sidebarRowPaddingH; > li { margin: 0; padding: @xpress_sidebarRowPaddingV @xpress_sidebarRowPaddingH; .m-clearFix(); } } .widget_search button .icon {display: none;} .block-container {color: @xf-textColorDimmed;} &.widget_media_audio .block-row { background: #f2f3f4; padding: 0; } #wp-calendar { text-align: center; width: 100%; } &.widget_tag_cloud .tagcloud .wp-tag-cloud { display: flex; flex-wrap: wrap; margin: -2px; li {padding: 0;} .tag-cloud-link { display: inline-block; max-width: 100%; padding: 0 6px 1px; margin: 0 0 2px; border-radius: @xf-borderRadiusMedium; font-size: @xf-fontSizeSmaller; .xf-chip(); margin: 2px; } } .search-form { display: flex; .button { height: auto; line-height: 1; padding: 0 4px; margin-left: 6px; .button-text { font-size: 0; &:before { font-size: 18px; margin: 0; } } } } } }]]>

</template>


-<template title="thxpress_thirdParty.less" version_string="1.1.1 Patch Level 1" version_id="1010191" addon_id="" type="public">

<![CDATA[/******************************** * * * Woocommerce * * * *******************************/ // Buttons body .p-pageWrapper .woocommerce #respond input#submit, body .p-pageWrapper .woocommerce button.button, body .p-pageWrapper .woocommerce a.button, body .p-pageWrapper .woocommerce button.button, body .p-pageWrapper .woocommerce button.button.alt, body .p-pageWrapper .woocommerce input.button { padding: 0; .xf-buttonBase() !important; .xf-buttonDefault() !important; .xf-buttonPrimary() !important; &:disabled, &:disabled[disabled] { padding: 0; .xf-buttonBase() !important; .xf-buttonDisabled() !important; } &:hover { .xf-uix_buttonHover(); .xf-uix_buttonPrimaryHover(); } &:active { .xf-uix_buttonActive(); .xf-uix_buttonPrimaryActive(); } } // Tabs body.woocommerce div.product .woocommerce-tabs ul.tabs { // remove woo styling background: none; border: none; margin: 0; &:before {display: none;} // add xf styling padding: 0; margin-bottom: @xf-elementSpacer; font-weight: @xf-fontWeightNormal; .xf-blockBorder(); .xf-standaloneTab(); li { // remove woo styling line-height: @xf-lineHeightDefault; margin: 0; border-radius: 0; border: none; background: none; &:before, &:after {display: none;} // add xf styling padding: @xf-blockPaddingV @xf-blockPaddingH max(0px, @xf-blockPaddingV - @xf-borderSizeFeature); border-bottom: @xf-borderSizeFeature solid transparent; a { padding: 0; font-weight: inherit; color: inherit; } &:hover { color: @xf-standaloneTabSelected--color; } &.active { // remove woo styling background: none; border: none; // add xf styling border-bottom: @xf-borderSizeFeature solid transparent; .xf-standaloneTabSelected(); } } } // Product listing .woocommerce ul.products li {text-align: center;} body.woocommerce ul.products, .woocommerce-page ul.products { display: flex; flex-wrap: wrap; li.product { .xf-contentBase(); .xf-blockBorder() .xf-uix_blockContainer(); border-radius: @xf-blockBorderRadius; .m-transition(); .m-transitionProperty(border margin); // edgeSpacerRemoval padding: @xf-blockPaddingV @xf-blockPaddingH; display: flex; flex-direction: column; .woocommerce-LoopProduct-link {flex-grow: 1;} .price { font-size: @xf-fontSizeLarger; color: @xf-textColorMuted; font-weight: @xf-fontWeightHeavy; margin: 0; } .button {margin-top: @xf-paddingMedium;} } } // Product single .article-full.product { .thxpress_authorBlock {display: none;} .summary .price { font-size: @xf-fontSizeLargest; color: @xf-linkColor; margin: 0; } } // Cart body .woocommerce { .woocommerce-cart-form__contents, table.shop_table { border: none; .xf-contentBase(); .xf-blockBorder() border-radius: @xf-blockBorderRadius; .m-transition(); .m-transitionProperty(border margin); // edgeSpacerRemoval .xf-uix_blockContainer(); thead { .xf-blockFilterBar(); } } } // Notices body .woocommerce-info, body .woocommerce-error, body .woocommerce-message, { .xf-blockBorder(); .xf-blockBorder(); .xf-contentBase(); border: 2px solid @xf-uix_primaryColor; } body .woocommerce-error {background: @xf-errorBg; border-color: darken(@xf-errorBg, 35%);}]]>

</template>


-<template title="uix.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[{{ include('uix_icons.less') }} {{ include('uix_buttonRipple.less') }} {{ include('uix_pageAnimations.less') }} {{ include('uix_canvas.less') }} {{ include('uix_thirdParty.less') }} {{ include('uix_bandaids.less') }} <xf:if is="property('uix_onlineIndicator') == 'pulse'"> @keyframes pulse { from { opacity: 1; border-width: 0px; transform: scale(1); } to { transform: scale(2); opacity: 0; border-width: 8px; } } .message-avatar-online { display: inline-flex; align-items: center; justify-content: center; &:after { content: ''; position: absolute; height: 100%; width: 100%; border-radius: 100%; border: 1px solid rgb(127, 185, 0); height: 13px; width: 13px; opacity: 1; animation: pulse 1.5s; animation-iteration-count: infinite; animation-timing-function: ease; transform-origin: center; } } </xf:if> .fb-page { width: 100%; } .tabPanes .block-outer {padding-top: @xf-elementSpacer;} .uix_node--transitioning { .m-uix_collapseOverflow(); } .message .message-responses { .message-responseRow { &:first-child, &.is-active { margin-top: @xf-messagePaddingSmall; } } .comment .comment-actionBar.actionBar { padding: @xf-messagePadding 0 0; margin: 0; } } .p-nav-menuTrigger { position: relative; &.badgeContainer:after { position: absolute; left: -5px; top: -5px; @media (min-width: @xf-responsiveNarrow) { display: none !important; } } } .menu-footer-controls { display: flex; flex-wrap: wrap; .button:not(:last-child) { margin-right: 5px; } } .p-navEl .menu-linkRow:before {margin-right: @xf-paddingSmall; } <xf:if is="property('uix_sidebarMobileCanvas')"> @media (min-width: @xf-uix_sidebarBreakpoint) { .uix_sidebarCanvasTrigger {display: none;} } @media (max-width: @xf-uix_sidebarBreakpoint) { body .p-body-sidebar { position: fixed; top: 0; left: 0; bottom: 0; right: 0; transform: translatex(-100%); margin: 0; &.is-transitioning { transition: ease-in .25s .25s transform; .uix_sidebarInner {transition: transform 0.25s ease-in;} &.is-active {transition: ease-in .01s transform;} } .uix_sidebarInner { padding: 0; margin: 0; <xf:if is="{{ property('uix_sidebarLocation') }} == 'right'"> transform: translatex(200%); margin-left: auto; <xf:else /> transform: translatex(-100%); </xf:if> } .block-container {box-shadow: none;} .uix_sidebar--scroller {margin: 0;} &.is-active { transform: translatex(0); .uix_sidebarInner.offCanvasMenu-content { transform: translatex(0); } } } } <xf:else /> @media (max-width: @xf-uix_sidebarBreakpoint) { body .uix_sidebarInner .uix_sidebar--scroller {margin-top: 0;} } </xf:if> // added to vertically center discussion list meta info .structItem-cell--main .structItem-minor { display: flex; align-items: center; .structItem-parts {flex-grow: 1;} .structItem-extraInfo {order: 2; margin-left: auto;} .structItem-statuses {order: 1;} } // end .uix_threadRepliesMobile { .pairs.pairs--justified > dt {margin-right: 2px;} dt:after {display: none;} } .uix_headerContainer .uix_mainTabBar { display: flex; justify-content: center; .xf-uix_mainTabsBarStyling(); .block-tabHeader {border: none;} .tabs-tab:hover {background: none;} } .offCanvasMenu-content {min-height: 100vh;} .offCanvasMenu-content .p-body-sideNavContent { .block {margin: 0;} .block-container { box-shadow: none; } } .p-body-header .uix_sidebarTrigger__component {margin-left: @xf-paddingMedium;} .cover .memberHeader-blurb.pairs { border-color: rgba(255,255,255,.3); } .hScroller-scroll { &.th_scroller--start-active { -webkit-mask-image: linear-gradient(to right, transparent 3%, black 10%); mask-image: linear-gradient(to right, transparent 3%, black 10%); } &.th_scroller--end-active { -webkit-mask-image: linear-gradient(to left, transparent 3%, black 10%); mask-image: linear-gradient(to left, transparent 3%, black 10%); } &.th_scroller--end-active.th_scroller--start-active { -webkit-mask-image: linear-gradient(to right, rgba(0,0,0,0) 3%,rgba(0,0,0,1) 10%,rgba(0,0,0,1) 90%,rgba(0,0,0,0) 97%); mask-image: linear-gradient(to right, rgba(0,0,0,0) 3%,rgba(0,0,0,1) 10%,rgba(0,0,0,1) 90%,rgba(0,0,0,0) 97%); } } .block[data-widget-definition="visitor_panel"] .contentRow {margin-bottom: @xf-paddingMedium;} .block[data-widget-definition="th_widget_login_uix"] .formSubmitRow-controls { padding-left: 0; text-align: center; } .uix_loginProvider__row { dt {display: none;} dd {text-align: center;} } .thBranding__pipe {display: none;} .p-footer-copyright > * ~ .thBranding .thBranding__pipe {display: inline;} .offCanvasMenu-link {padding: @xf-paddingMedium @xf-paddingLarge;} .offCanvasMenu-subList {padding-bottom: 0;} *::selection, { .xf-uix_textSelection(); /* WebKit/Blink Browsers */ } *::-moz-selection { .xf-uix_textSelection(); /* Gecko Browsers */ } .block-container { .uix_newIndicator { .xf-uix_newNodeMarkerStyle(); } } /* --- Sticky kit header fix --- */ .uix_headerContainer--stickyFix { height: 1px; visibility: hidden; } .uix_headerContainer {margin-top: -1px !important;} /* -- fixes sticky kit abs positioning for sticky header on covered themes -- */ <xf:if is="{{ property('uix_pageStyle') }} == 'covered'"> .has-no-hiddenscroll .is-modalOpen .is-sticky { margin-left: 0px; } </xf:if> .uix_adminTrigger {display: none !important;} <xf:if is="property('uix_collapseStaffbarLinks')"> @media (max-width: @xf-uix_viewportCollapseStaffLinks) { .p-staffBar-link {display: none !important;} .uix_adminTrigger {display: inline-block !important;} } </xf:if> /***** Abridged Signatures *******/ .uix_signatureExpand {display: none;} .message-signature { overflow: hidden; transition: ease-in-out .2s height; &--expandable { height: @xf-uix_signatureMaxHeight + 0px; // adding 0 converts the number to px value} <xf:if is="property('messageSignature--background-color')"> @signatureBgColor: @xf-messageSignature--background-color; <xf:elseif is="property('uix_message--background-color')" /> @signatureBgColor: @xf-uix_message--background-color; <xf:elseif is="property('contentBase--background-color')" /> @signatureBgColor: @xf-contentBase--background-color; <xf:else /> @signatureBgColor: @xf-contentBg; </xf:if> .uix_signatureExpand { padding-bottom: @xf-paddingLarge; background: linear-gradient(to bottom, fade(@signatureBgColor, 0%), @signatureBgColor 40%); text-align: center; display: flex; justify-content: center; align-items: flex-end; height: 60px; position: absolute; bottom: 0; left: 0; right: 0; color: @xf-textColorAttention; &:hover {cursor: pointer;} } } &.message-signature--expanded { height: auto; padding-bottom: @xf-paddingLarge; .bbWrapper {padding-bottom: (@xf-paddingLarge * 2);} .uix_signatureExpand {background: none;} } } /***** extra user info postbit collapse *******/ <xf:if is="property('uix_collapseExtraInfo')"> .thThreads__userExtra--toggle { text-align: center; margin-top: @xf-paddingMedium; .thThreads__userExtra--trigger { transition: ease-in transform .2s .2s; display: inline-block; &:hover {cursor: pointer;} &:before { .m-faBase(); .m-faContent(@fa-var-chevron-down); } } } </xf:if> .thThreads__message-userExtras { height: 0; overflow: hidden; transition: ease-in height .2s; } @media (max-width: @xf-messageSingleColumnWidth) { .thThreads__message-userExtras {display: none;} .thThreads__userExtra--toggle {display: none;} } .userExtra--expand { .thThreads__message-userExtras {height: auto;} .thThreads__userExtra--trigger {transform: rotate(-180deg);} } /*------- sticky thread collapse ------- */ <xf:if is="property('uix_collapsibleStickyThreads')"> .uix_threadCollapseTrigger { transition: ease transform .2s; margin-left: auto; font-size: 18px; &.is-active {transform: rotate(-180deg);} } .uix_stickyContainerOuter { transition: ease-in height 0.3s, ease-in opacity 0.3s; opacity: 1; display: none; opacity: 0; -webkit-transition: all 0.2s ease, -xf-opacity 0.2s ease; transition: all 0.2s ease, -xf-opacity 0.2s ease; overflow-y: hidden; height: 0; -webkit-transition-property: all, -xf-height; transition-property: all, -xf-height; &.is-active { display: block; opacity: 1; height: auto; overflow-y: visible; } &.is-transitioning { display: block; width: 100%; } &.is-transitioning { overflow-y: hidden; } .uix_stickyContainerInner { width: 100%; display: table; } } .uix_stickyContainerOuter.uix_threadListSeparator--collapsed { height: 0; opacity: 0; pointer-events: none; transition: ease-in height 0.3s, ease-in opacity 0.3s; .uix_block-body--outer { height: 0 !important; opacity: 0; pointer-events: none; } } </xf:if> /*------- category collapse ------- */ <xf:if is="property('uix_categoryCollapse')"> @keyframes overflow { from { overflow: visible; } to { overflow: hidden; } } .category--collapsed.block--category { .uix_block-body--outer { height: 0 !important; opacity: 0; pointer-events: none; animation: overflow; animation-delay: .3s; aniamtion-fill-mode: backwards; } .categoryCollapse--trigger {transform: rotate(-180deg);} &:hover {text-decoration: none;} } .categoryCollapse--trigger { transition: @uix_move transform .2s; overflow: hidden; height: 18px; min-width: 24px; width: 24px; display: inline-flex; align-items: center; justify-content: center; text-decoration: none !important; } .block--category .uix_block-body--outer { transition: @uix_move height 0.3s, @uix_move opacity 0.3s; opacity: 1; } </xf:if> /*------- Sidebar collapse ------- */ a.uix_sidebarTrigger__component { display: inline-flex; align-items: center; &:hover {cursor: pointer;} <xf:if is="property('uix_viewportWidthRemoveSubNav') != '100%'"> <xf:if is="property('uix_sidebarTriggerPosition') == 'sectionLinks'"> @media (min-width: {{ property('uix_viewportWidthRemoveSubNav') + 1}}px) { .p-nav-inner & {display: none !important;} } </xf:if> </xf:if> <xf:if is="property('uix_sidebarTriggerPosition') == 'titlebar'"> @media (min-width: {{ property('responsiveWide') + 1}}px) { .p-nav-inner & {display: none !important;} } @media (max-width: @xf-responsiveWide) { .p-body-header & {display: none !important;} } </xf:if> .p-nav-inner & { color: inherit; color: @xf-publicNavTab--color; background: none !important; box-shadow: none; border: none; .uix_sidebarTrigger--phrase { display: none; } i { font-size: @xf-uix_iconSizeLarge; width: auto; padding: 0; margin: 0; &:before { display: inline-flex; justify-content: center; width: 10px; } } } &.uix_sidebarCanvasTrigger { @media (min-width: {{ property('uix_sidebarBreakpoint') + 1}}px) { display: none; } } &.uix_sidebarTrigger { @media (max-width: @xf-uix_sidebarBreakpoint) { display: none; } } i { // transform: rotate(0); // transition: ease-in transform .2s; font-size: @xf-uix_iconSize; margin-left: -7px; } <xf:if is="property('uix_sidebarLocation') == 'left'"> span {order: 1;} /* i { transform: rotate(-180deg); .uix_sidebarCollapsed & { transform: rotate(0); } } */ </xf:if> } <xf:if is="property('uix_collapsibleSidebar')"> .p-body-sidebar { transition: ease-in width .2s, ease-in opacity .2s .3s, ease-in height .2s; opacity: 1; max-height: 100%; * {transition: ease-in font-size .01s;} } @media (min-width: @xf-responsiveWide) { .uix_sidebarCollapsed { .p-body-sidebar { transition: ease-in width 0.2s 0.2s, ease-in opacity 0.2s, ease-in height .2s .2s; width: 0; opacity: 0; height: 0; } .p-body-main--withSidebar .p-body-content { width: 100%; max-width: 100%; <xf:if is="{{ property('uix_sidebarLocation') == 'left' }}"> transition: ease-in width 0.2s 0.2s, ease-in max-width 0.2s .2s </xf:if> } .p-body-main--withSidebar.p-body-main--withSideNav .p-body-content { width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); max-width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); <xf:if is="{{ property('uix_sidebarLocation') == 'left' }}"> transition: ease-in width 0.2s 0.2s, ease-in max-width 0.2s .2s </xf:if> } } } </xf:if> <xf:if is="property('uix_sidebarLeft')"> .button.uix_sidebarTrigger__component { flex-direction: row-reverse; } </xf:if> /*------- navigation icons------- */ body .p-navEl-link, body .offCanvasMenu-link { font-family: inherit; font-weight: inherit; -webkit-font-smoothing: initial; } <xf:if is="property('uix_navTabIcons')"> .p-navEl-link:before, .offCanvasMenu-link:before { .m-faBase(); .xf-uix_navTabIconStyle(); } <xf:if is="!property('uix_navTabIcons')"> .p-navEl-link:before {display: none !important;} </xf:if> .p-navEl-link:not(.mdi):not(.fa), .offCanvasMenu-link:not(.mdi):not(.fa) { <xf:if is="{{ property('uix_iconFontFamily') }} == 'fontawesome'"> &[data-nav-id]:before {.m-faBase();} </xf:if> <xf:if is="{{ property('uix_defaultNavIcon') }}"> &[data-nav-id]:before { .m-faContent(@fa-var-folder); <xf:macro name="content" template="uix_icons.less" arg-icon="folder" /> } </xf:if> .offCanvasMenu-link {dislay: none;} &[data-nav-id="thxpress"]:before { .m-faContent(@fa-var-newspaper); <xf:macro name="content" template="uix_icons.less" arg-icon="\f332" /> } &[data-nav-id="th_donate"]:before { .m-faContent(@fa-var-gift); <xf:macro name="content" template="uix_icons.less" arg-icon="\f2a1" /> } &[data-nav-id="home"]:before { .m-faContent(@fa-var-home); <xf:macro name="content" template="uix_icons.less" arg-icon="home" /> } &[data-nav-id="forums"]:before { .m-faContent(@fa-var-comments); <xf:macro name="content" template="uix_icons.less" arg-icon="forum" /> } &[data-nav-id="whatsNew"]:before { .m-faContent(@fa-var-bolt); <xf:macro name="content" template="uix_icons.less" arg-icon="whats-new" /> } &[data-nav-id="members"]:before { .m-faContent(@fa-var-users); <xf:macro name="content" template="uix_icons.less" arg-icon="user-multiple" /> } &[data-nav-id="profile"]:before { .m-faContent(@fa-var-user); <xf:macro name="content" template="uix_icons.less" arg-icon="user" /> } &[data-nav-id="alerts"]:before { .m-faContent(@fa-var-bell); <xf:macro name="content" template="uix_icons.less" arg-icon="alert" /> } &[data-nav-id="settings"]:before { .m-faContent(@fa-var-cog); <xf:macro name="content" template="uix_icons.less" arg-icon="settings" /> } &[data-nav-id="xfmg"]:before { .m-faContent(@fa-var-image); <xf:macro name="content" template="uix_icons.less" arg-icon="media" /> } &[data-nav-id="xfrm"]:before { .m-faContent(@fa-var-th-large); <xf:macro name="content" template="uix_icons.less" arg-icon="resource" /> } &[data-nav-id="EWRporta"]:before, &[data-nav-id="blog"]:before, &[data-nav-id="XPRESS"]:before { .m-faContent(@fa-var-newspaper); <xf:macro name="content" template="uix_icons.less" arg-icon="article" /> } } .p-sectionLinks .p-navEl-link:before, .offCanvasMenu-subList .offCanvasMenu-link:before {display: none !important;} </xf:if> /* ---Force header content fluid --- */ <xf:if is="(property('uix_navigationType') == 'sidebarNav') && (property('uix_pageStyle') == 'covered')"> .p-staffBar .pageContent, .p-header-inner, .p-nav-inner, .p-sectionLinks .pageContent {max-width: 100%;} </xf:if> /* ---Sidebar Navigation --- */ .uix_headerContainer .p-nav-menuTrigger.uix_sidebarNav--trigger {display: none;} <xf:if is="(property('uix_navigationType') == 'sidebarNav') && (property('uix_pageStyle') == 'covered')"> @media (min-width: {{ property('publicNavCollapseWidth') + 1 }}px ) { .uix_page--fluid.sidebarNav--active .p-body-inner { width: calc( ~"100% - {{ property('uix_sidebarNavWidth') }} - {{property('elementSpacer') * 2 }}px"); } .uix_headerContainer .p-nav-menuTrigger.uix_sidebarNav--trigger {display: inline-block;} .uix_page--fixed.sidebarNav--active .p-body-inner { @media (max-width: @uix_sidebarNavBreakpoint) { width: calc( ~"100% - {{ property('uix_sidebarNavWidth') }} - {{property('elementSpacer') * 2 }}px"); } @media (min-width: calc(@uix_sidebarNavBreakpoint + 1px) ) { left: -105px; } } } </xf:if> .uix_sidebarNav__inner__widgets { padding: @xf-paddingLarge; } .sidebarNav--active .uix_sidebarNav { margin-left: 0; } .uix_stickyBodyElement:not(.offCanvasMenu) { position: sticky; position: -webkit-sticky; <xf:comment> -- sticky test -- .uix_stickyBottom & { top: unset !important; bottom: @xf-elementSpacer; margin-top: auto; } </xf:comment> } .uix_stickyBottom .p-body-sidebar {display: flex;} .uix_sidebarNav { .uix_sidebarNav__inner { overflow: hidden; } .uix_sidebar--scroller { overflow-y: auto; margin-right: -30px; padding-right: 32px; } } <xf:if is="property('uix_stickySidebar') == 'top'"> .uix_sidebarInner, .p-body-sideNavInner:not(.offCanvasMenu) { position: static; } @media (min-width: {{property('uix_sidebarBreakpoint') + 1}}px ) { .uix_sidebarInner, .p-body-sideNavInner { position: sticky; position: -webkit-sticky; } <xf:if is="property('uix_scrollableSidebar')"> .uix_sidebarInner, .p-body-sideNavInner { overflow: hidden; .block { margin-left: 2px; margin-rght: 2px; } .uix_sidebar--scroller { overflow-y: auto; max-height: 90vh; margin-right: -30px; padding-right: 32px; padding-top: 2px; padding-bottom: 2px; } } </xf:if> } </xf:if> .offCanvasMenu .offCanvasMenu-link:before { font-size: @xf-uix_iconSizeLarge !important; padding-right: 1em; } .offCanvasMenu-link { display: flex; align-items: center; &.offCanvasMenu-link--splitToggle {font-size: 18px;} } .offCanvasMenu.is-active .uix_sidebar--scroller { width: 100vw !important; } .uix_sidebarNav { .xf-uix_sidebarNavigationStyle(); width: @xf-uix_sidebarNavWidth; min-width: @xf-uix_sidebarNavWidth; padding-bottom: @xf-elementSpacer; margin-left: -{{property('uix_sidebarNavWidth')}}; <xf:if is="property('uix_pageStyle') != 'covered'"> padding-top: @xf-elementSpacer; </xf:if> z-index: 1; transition: ease-in-out margin-left .3s; @media (max-width: @xf-publicNavCollapseWidth) { margin-left: -{{property('uix_sidebarNavWidth')}} !important; } .uix_sidebarNavList { padding: 10px 0; margin: 0; border-bottom: 1px solid @xf-borderColor; line-height: 40px; &:first-child {padding-top: 0;} &:last-child {border-bottom: none;} .uix_sidebarNav__subNav { display: block; height: 0; overflow: hidden; transition: ease-in height .3s; &.subNav--expand {height: auto;} } .menu-linkRow { padding: 0 @xf-paddingLarge; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; color: @xf-textColorDimmed; border: none; .xf-uix_canvasNavSubItem(); &:hover { border: none; .xf-uix_canvasNavItemHover(); } } .p-navEl-link span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; min-width: 0; } .uix_sidebarNavList__title { padding: 0 @xf-paddingLarge; font-size: @xf-fontSizeSmaller; color: @xf-textColorMuted; } > li { display: block; .p-navEl:before, .p-navEl:after {display: none;} .p-navEl__inner { display: flex; align-items: center; .xf-uix_canvasNavItem(); } .p-navEl__inner:hover, .blockLink:hover { .xf-uix_canvasNavItemHover(); } .is-selected .p-navEl__inner { .xf-uix_canvasNavItemActive(); a, .p-navEl-link { color: inherit; } } .p-navEl {display: block;} .p-navEl-link, .p-navEl-linkHolder, .blockLink { display: flex; align-items: center; padding: 0 @xf-paddingLarge; color: @xf-textColorDimmed; background: none; width: 100%; text-decoration: none; float: none; &:before { font-size: @xf-uix_iconSizeLarge !important; width: @xf-uix_iconSizeLarge !important; padding-right: 1em; } } .p-navEl-linkHolder {padding: 0;} .blockLink { padding-left: 50px; } .uix_sidebarNav--trigger { font-size: @xf-uix_iconSize; color: inherit; padding-right: @xf-paddingLarge; .uix_icon {transition: ease-in transform .3s;} &.is-expanded .uix_icon {transform: rotate(-180deg);} } .p-navEl-splitTrigger, .p-navEl-link--menuTrigger:after {display: none;} } } } /* ---VISITOR TABS --- */ .p-account { background-color: transparent; .p-navgroup-link { display: flex; align-items: center; border: none; } } .p-nav .p-navgroup-link:hover {.xf-publicNavTabHover();} {{ include('uix_searchComponent.less') }} /* ---UTILITIES --- */ .media__container { display: flex; .media--left {margin-right: @xf-paddingMedium;} } {{ include('uix_footer.less') }} /* ---Login form sliding panel --- */ <xf:if is="property('uix_loginStyle') == 'slidingPanel'"> .uix__loginForm--panel { background: @xf-contentHighlightBg; overflow: hidden; position: absolute; z-index: 200; transition: ease-in .2s transform; left: 0; right: 0; transform: translateY(-100%); top: 0; } .uix__loginForm--mask { position: absolute; top: 0; left: 0; right: 0; background-color: transparent; transition: ease-in .2s background-color; } .uix__loginForm.is-active .uix__loginForm--panel {transform: translateY(0);} .uix__loginForm.is-active .uix__loginForm--mask { background-color: rgba(0,0,0,.4); bottom: 0; } .uix__loginForm--panel form { .m-pageWidth(); } .uix__loginForm--panel .block-container, .uix__loginForm--panel .formRow > dt, .uix__loginForm--panel .formRow > dd, .uix__loginForm--panel .formSubmitRow-bar { background: none; box-shadow: none; border: none; } .uix__loginForm--panel .block-outer {display: none;} </xf:if> .uix_discussionList { .xf-uix_discussionList(); } [type=checkbox], [type=radio], legend {margin-right: .5em;} .structItem-extraInfo [type=checkbox] {margin-right: 0;} form.structItem { display: flex; max-width: 100%; } .structItem-cell--newThread {flex-grow: 1; min-width: 0;} .uix_messageContent { flex-grow: 1; display: flex; flex-direction: column; justify-content: space-between; width: 100%; } .uix_socialMedia { display: inline-flex; flex-wrap: wrap; margin: 0 -6px; padding: 0; li {display: inline-block;} li a { margin: 6px; line-height: 1; display: inline-block; .xf-uix_socialMediaIcon(); } } .uix_headerContainer { display: flex; flex-direction: column; <xf:if is="property('uix_pageStyle') != 'wrapped'"> @media (min-width: {{ property('responsiveEdgeSpacerRemoval') + 1 }}px) { margin-top: @xf-uix_headerWhiteSpace; } </xf:if> @media (min-width: @xf-responsiveMedium) { > *:not(.p-nav) { margin-bottom: @xf-uix_headerWhiteSpace; &:last-child {margin-bottom: 0;} } } } <xf:if is="property('uix_detachedNavigation')"> .p-body > * {padding-top: @xf-elementSpacer;} </xf:if> .uix_pageWrapper--fixed { <xf:if is="property('uix_pageStyle') != 'wrapped'"> width: 100%; </xf:if> <xf:if is="property('uix_pageStyle') == 'wrapped'"> .m-pageWidth(); .uix_page--fluid & { @media (min-width: @xf-pageWidthMax) { max-width: 95%; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { padding: 0 !important; } </xf:if> position: relative; left: 0; transition: max-width .2s, ease-in left .2s; } /* --- post thread widget --- */ .uix_postThreadWidget { border-top: 4px solid @xf-uix_primaryColor; text-align: center; padding: @xf-paddingLarge; color: @xf-textColorDimmed; i { height: 50px; width: 50px; line-height: 50px; border-radius: 100%; background-color: fade(@xf-uix_primaryColor, 20%); color: @xf-uix_primaryColor; display: inline-block; font-size: @xf-uix_iconSizeLarge; } .uix_postThreadWidget__title { font-size: @xf-fontSizeLarger; font-weight: @xf-fontWeightHeavy; color: @xf-textColor; } .button {margin-top: @xf-paddingMedium;} } <xf:if is="property('uix_borderRadiusJs')"> /* --- border radius javascript --- */ @media (min-width: @xf-responsiveEdgeSpacerRemoval) { .uix_smartBorder--noTop { border-bottom-left-radius: @xf-borderRadiusLarge !important; border-bottom-right-radius: @xf-borderRadiusLarge !important; } .uix_smartBorder--noBottom { border-top-left-radius: @xf-borderRadiusLarge !important; border-top-right-radius: @xf-borderRadiusLarge !important; } .uix_smartBorder--default { border-top-left-radius: @xf-borderRadiusLarge !important; border-top-right-radius: @xf-borderRadiusLarge !important; border-bottom-left-radius: @xf-borderRadiusLarge !important; border-bottom-right-radius: @xf-borderRadiusLarge !important; } } </xf:if> // overlay content .block-footer.uix_conversationsFooterMobile { display: none; .overlay & { display: flex; } } .overlay .block-footer { position: sticky; bottom: 0; } <xf:if is="property('uix_visitorTabsMobile') == 'tabbar'"> /* -- tab bar -- */ .uix_tabBar { height: 46px; @media (min-width: @xf-responsiveNarrow) { display: none; } } .uix_tabList { z-index: 100; margin: 0; padding: 0; display: flex; background: @xf-uix_primaryColor; position: fixed; text-transform: capitalize; bottom: 0; left: 0; right: 0; box-shadow: 0 0 2px 0 rgba(0,0,0,0.14), 0 -2px 2px 0 rgba(0,0,0,0.12), 0 -1px 3px 0 rgba(0,0,0,.2); .uix_tabItem { flex-grow: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 5px; height: 46px; color: rgba(255,255,255,.5); line-height: 1; font-size: 10px; position: relative; &:hover { text-decoration: none; color: #fff; } } .badgeContainer:after { position: absolute; top: 7px; right: 30%; } .uix_tabItem i { font-size: 24px; } } </xf:if> // remove border on macro components for mobile @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .uix_headerContainer > *, .p-nav, .p-footer > * {border-radius: 0 !important;} } // nav edits for mobile // staff bar <xf:if is="property('uix_staffBarBreakpoint') != '100%'"> .uix_responsiveStaffBar { @media (max-width: @xf-uix_staffBarBreakpoint) { .p-staffBar {display: none;} } } @media (max-width: @xf-uix_staffBarBreakpoint) { .p-staffBar .p-nav-opposite {display: none;} } @media (min-width: {{ property('uix_staffBarBreakpoint') + 1 }}px ) { <xf:if is="property('uix_searchPosition') == 'staffBar'"> .p-nav .uix_searchBar {display: none;} </xf:if> <xf:if is="property('uix_userTabsPosition') == 'staffBar'"> .p-nav .p-navgroup--member, .p-nav .p-navgroup-link--whatsnew {display: none;} </xf:if> <xf:if is="property('uix_loginTriggerPosition') == 'staffBar'"> .p-nav .p-navgroup--guest {display: none;} </xf:if> } <xf:else /> .p-staffBar .p-navgroup--member, .p-nav .p-navgroup-link--whatsnew {display: none;} .p-staffBar .p-navgroup--guest {display: none;} .p-staffBar .uix_searchBar {display: none;} </xf:if> /* --- show logoblock for desktop --- */ <xf:if is="property('uix_viewportShowLogoBlock') != '100%'"> @media (max-width: {{ property('uix_viewportShowLogoBlock') - 1 }}px ) { .p-header {display: none;} } @media (max-width: {{ property('uix_viewportShowLogoBlock') - 1 }}px ) { .p-header .p-nav-opposite {display: none;} } @media (min-width: @xf-uix_viewportShowLogoBlock) { .p-nav-inner .p-header-logo {display: none;} <xf:if is="property('uix_userTabsPosition') == 'header'"> .p-nav .p-navgroup--member, .p-nav .p-navgroup-link--whatsnew {display: none;} </xf:if> <xf:if is="property('uix_searchPosition') == 'header'"> .uix_headerContainer > *:not(.p-header) .uix_searchBar {display: none;} </xf:if> <xf:if is="property('uix_searchPosition') == 'header'"> .uix_headerContainer > *:not(.p-header) .uix_searchBar {display: none;} </xf:if> } <xf:else /> .p-header {display: none;} </xf:if> /* sub-navigation */ <xf:if is="property('uix_viewportWidthRemoveSubNav') != '100%'"> @media (max-width: @xf-uix_viewportWidthRemoveSubNav ) { <xf:if is="!property('publicNavSelected--background-color')"> .p-sectionLinks {display: none;} <xf:else /> .p-sectionLinks > * {display: none;} @media(max-width: @xf-publicNavCollapseWidth) { .p-sectionLinks {display: none;} } </xf:if> } @media (min-width: {{ property('uix_viewportWidthRemoveSubNav') + 1 }}px ) { <xf:if is="property('uix_searchPosition') == 'tablinks'"> .p-nav .uix_searchBar {display: none;} </xf:if> <xf:if is="property('uix_userTabsPosition') == 'tablinks'"> .p-nav .p-navgroup--member, .p-nav .p-navgroup-link--whatsnew {display: none;} </xf:if> <xf:if is="property('uix_loginTriggerPosition') == 'tablinks'"> .p-nav .p-navgroup--guest {display: none;} </xf:if> <xf:if is="property('uix_sidebarTriggerPosition') == 'sectionLinks'"> .breadcrumb a.uix_sidebarTrigger__component {display: none;} </xf:if> } <xf:else /> <xf:if is="!property('publicNavSelected--background-color')"> .p-sectionLinks {display: none;} <xf:else /> .p-sectionLinks > * {display: none;} @media(max-width: @xf-publicNavCollapseWidth) { .p-sectionLinks {display: none;} } </xf:if> </xf:if> // search navigation <xf:if is="property('uix_searchPosition') == 'navigationLeft'"> .p-nav .p-nav-opposite .uix_searchBar {display: none;} </xf:if> .menu--account .avatar-update a { max-width: 21px; overflow: hidden; font-size: 12px; } // label.iconic.iconic--labelled > input + i {margin-top: -2px; width: auto;} .comment-reply-link:before { .m-faBase(); .m-faContent(@fa-var-comment-alt); <xf:macro name="content" template="uix_icons.less" arg-icon="post" /> margin-right: 4px; } .sidePanel__tabs .badgeContainer:after { position: relative; top: -15px; left: -5px; } // notices //scrolling notices .lSSlideOuter.noticeScrollContainer { position: relative; .lSPager { margin-top: 0px; position: absolute; bottom: 0; left: 0; right: 0; height: 20px; background: none; } .notice-content {margin-bottom: 20px;} } // bottom notice .notices--bottom_fixer .notice--cookie { .notice-content { display: flex; @media (max-width: @xf-responsiveMedium) { text-align: center; align-items: center; flex-direction: column; } } .u-inputSpacer {margin-top: 0;} .uix_cookieButtonRow { margin: 0 -3px -3px @xf-paddingMedium; @media (max-width: @xf-responsiveMedium) { margin-top: @xf-paddingMedium; margin-left: -3px; } .button {margin: 3px;} } .notice-content > div:first-child { flex-grow: 1; justify-content: center; display: flex; flex-direction: column; } } .uix_mobileNodeTitle { &:before { content: "\00a0\00B7\00a0"; } @media (min-width: @xf-uix_discussionListCollapseWidth) { display: none; } } // MENU .menu { transition: @uix_move .26s transform, @uix_move .26s opacity; transform: translateY(-10px); opacity: 0; &.is-active { transform: translateY(0); opacity: 1; } } .input input {box-shadow: none !important;} <xf:if is="property('uix_clickableThreads')"> .structItem--thread:hover {cursor: pointer;} </xf:if> .uix_sidebarNav .uix_sidebarNav__inner__widgets, .offCanvasMenu-content .uix_sidebarNav__inner__widgets { .block-container, .block-minorHeader, .block-footer, .block-body .block-row { border: none; box-shadow: none; background: none; padding: 0; &:not(:last-child) { padding-bottom: @xf-paddingLarge; } } .block:not(:last-child) .block-container { border-bottom: 1px solid @xf-borderColor; padding-bottom: @xf-paddingLarge; } .block-minorHeader { font-size: @xf-fontSizeSmaller; color: @xf-textColorMuted; &:before {display: none !important;} } [data-widget-definition="th_bookmarks"] { .bookmarkRow { line-height: 40px; display: flex; align-items: center; color: @xf-textColorDimmed; .contentRow-minor, .bookmarkRow-forum {display: none;} .bookmarkRow-content { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } } .block-row {padding: 0 !important;} .contentRow-main.contentRow-main--close {padding: 0;} i:before, a {color: inherit;} .block-footer, .contentRow-main:before {display: none;} .contentRow-figure { height: 24px; padding-right: 1em; font-size: 24px; .avatar, i { font-size: 24px; width: 24px; height: 24px; vertical-align: inherit; } .node-icon { width: auto; } } } } <xf:if is="!property('uix_sidebarTriggerPhrase')"> .uix_sidebarTrigger--phrase {display: none;} </xf:if> .uix_headerInner--opposite a.uix_sidebarTrigger__component { padding: 0 4px; i {margin: 0;} } .uix_originalPoster__icon { height: 19px; width: 19px; background: @xf-uix_primaryColor; display: inline-block; border-radius: 100%; .m-uix_whiteText(@xf-uix_primaryColor); text-align: center; }]]>

</template>


-<template title="uix_bandaids.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[// Added to fix the dark pixel bug https://github.com/Audentio/xf2theme-issues/issues/1055 .device--isAndroid .p-staffBar .hScroller-scroll { overflow-x: auto; } // Add persistent scrollbar on windows .offCanvasMenu-content { overflow-y: scroll; } // remove bottom tabbar on mobile when keyboard is present @media (max-height: 400px) { .uix_tabBar {display: none;} }]]>

</template>


-<template title="uix_buttonRipple.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:if is="{{ property('uix_buttonRipple') }}"> @-webkit-keyframes rippleAnimation { to { border-radius: 100%; opacity: 0; -webkit-transform: scale(2.5); transform: scale(2.5); } } @keyframes rippleAnimation { to { border-radius: 100%; opacity: 0; -webkit-transform: scale(2.5); transform: scale(2.5); } } .rippleButton { position: relative; } .rippleButton .ripple-container { position: absolute; top: 0; left: 0; pointer-events: none; width: 100%; height: 100%; max-height: 100%; max-width: 100%; overflow: hidden; border-radius: inherit; -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC'); } .rippleButton .ripple { background-color: rgba(255,255,255,0.2); border-radius: 100%; -webkit-transform: scale(0); transform: scale(0); -webkit-transform-origin: center 50%; transform-origin: center 50%; display: block; position: absolute; -webkit-animation: rippleAnimation 650ms ease-out; animation: rippleAnimation 650ms ease-out; -webkit-animation-play-state: running; animation-play-state: running; } .navLink .ripple { background-color: rgba(0,0,0,0.15); -webkit-animation: rippleAnimation 450ms ease-out; } .rippleButton:hover {cursor: pointer;} </xf:if>]]>

</template>


-<template title="uix_canvas.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[.uix_canvas__tabs { display: flex; justify-content: space-around; align-items: center; } .uix_canvasTab { display: inline-block; } .js-visitorTabPanel { .menu-row--highlighted, .menu-separator--hard {display: none;} } .sidePanel__tabPanels { position: relative; .menu-row, .menu-footer, .menu-linkRow { padding-left: @xf-paddingLarge; padding-right: @xf-paddingLarge; } } .sidePanel__tabPanel { height: 0; overflow-x: hidden; -moz-transition: -moz-transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); -o-transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); -o-transition: -o-transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); transition: -webkit-transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); float: left; width: 100%; position: absolute; top: 0; } .sidePanel__tabPanel.is-left { transform: translate3d(-300px, 0, 0); overflow-y: hidden; } .sidePanel__tabPanel.is-right { transform: translate3d(300px, 0, 0); } .sidePanel__tabPanel.is-active { transform: translate3d(0, 0, 0); display: block; height: auto; overflow-y: auto; } .sidePanel--visitor .sidePanel__tabPanel.is-active { margin-bottom: 50px; } .sidePanel__tabPanel.is-hidden { visibility: hidden; } .sidePanel__tabs { display: -ms-flexbox; display: -webkit-flex; display: flex; flex: 0 0 auto; padding: 0; margin: 0; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } .sidePanel__tabs li { max-width: 50%; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; color: rgba(255,255,255,.7); list-style: none; } a.sidePanel__tab { font-size: 18px; color: rgba(255, 255, 255, 0.75); background-color: @xf-uix_primaryColor; padding-right: 10px; padding-left: 10px; border-width: 0; border-right-style: solid; border-right-color: rgba(255,255,255,.1); display: block; cursor: pointer; text-align: center; line-height:50px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; height: 50px; } a.sidePanel__tab:hover {color: #fff; text-decoration: none;} a.sidePanel__tab.sidePanel__tab--active { color: #fff; box-shadow: inset 0 -3px rgba(0,0,0,.2); } <xf:if is="property('uix_overlayBlur')"> html:not(.sidebarNav--active) .is-modalOpen:not(.sideNav--open) .p-pageWrapper, html:not(.sidebarNav--active) .is-modalOpen .offCanvasMenu-backdrop { filter: blur(1px); } </xf:if>]]>

</template>


-<template title="uix_canvasPanels" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<div class="sidePanel sidePanel--nav sidePanel--visitor"> <div class="sidePanel__tabPanels"> <div data-content="navigation" class="is-active sidePanel__tabPanel js-navigationTabPanel"> <xf:macro name="canvasNavPanel" template="PAGE_CONTAINER" arg-widgets="{$uix_sidebarNavWidgets}" /> </div> <xf:if is="$xf.visitor.user_id && (property('uix_visitorTabsMobile') == 'canvas')"> <div data-content="account" class="sidePanel__tabPanel js-visitorTabPanel"> <div class="uix_canvasPanelBody" data-menu="menu" aria-hidden="true" data-href="{{ link('account/visitor-menu') }}" data-load-target=".js-visitorMenuBody"> <div class="menu-content"> <div class="offCanvasMenu-header"> {{ phrase('your_account') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close') }}"></a> </div> <div class="js-visitorMenuBody"></div> </div> </div> </div> <div data-content="inbox" class="sidePanel__tabPanel js-convoTabPanel"> <div class="menu-content"> <div class="uix_canvasPanelBody" data-menu="menu" aria-hidden="true" data-href="{{ link('conversations/popup') }}" data-nocache="true" data-target=".js-convMenuBody"> <div class="offCanvasMenu-header"> {{ phrase('conversations') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close') }}"></a> </div> <div class="js-convMenuBody"> </div> </div> <div class="menu-footer"> <a href="{{ link('conversations/add') }}" class="u-pullRight">{{ phrase('start_new_conversation') }}</a> <a href="{{ link('conversations') }}">{{ phrase('show_all...') }}</a> </div> </div> </div> <div data-content="alerts" class="sidePanel__tabPanel js-alertTabPanel"> <div class="menu-content"> <div class="uix_canvasPanelBody" data-menu="menu" aria-hidden="true" data-href="{{ link('account/alerts-popup') }}" data-nocache="true" data-target=".js-alertsMenuBody"> <div class="offCanvasMenu-header"> {{ phrase('alerts') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close') }}"></a> </div> <div class="js-alertsMenuBody"> </div> </div> <div class="menu-footer menu-footer--split"> <span class="menu-footer-main"> <a href="{{ link('account/alerts') }}">{{ phrase('show_all...') }}</a> </span> <span class="menu-footer-opposite"> <a href="{{ link('account/preferences') }}">{{ phrase('preferences') }}</a> </span> </div> </div> </div> </xf:if> </div> </div>]]>

</template>


-<template title="uix_canvasTabs" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:if is="$xf.visitor.user_id && (property('uix_visitorTabsMobile') == 'canvas')"> <ul class="sidePanel__tabs"> <li> <a data-attr="navigation" class="sidePanel__tab sidePanel__tab--active js-visitorTab"><xf:fa icon="fa-bars" class="uix_icon uix_icon--menu" /></a> </li> <xf:if is="$xf.visitor.user_id && (property('uix_visitorTabsMobile') == 'canvas')"> <li> <a data-attr="account" data-xf-click="toggle" data-target=".js-visitorTabPanel .uix_canvasPanelBody" class="sidePanel__tab js-visitorTab"><xf:fa icon="fa-user" class="uix_icon uix_icon--user" /></a> </li> <li> <a data-attr="inbox" data-xf-click="toggle" data-target=".js-convoTabPanel .uix_canvasPanelBody" data-badge="{$xf.visitor.conversations_unread|number}" class="sidePanel__tab js-convoTab js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}"> <xf:fa icon="fa-inbox" class="uix_icon uix_icon--inbox" /> </a> </li> <li> <a data-attr="alerts" data-xf-click="toggle" data-target=".js-alertTabPanel .uix_canvasPanelBody" data-badge="{$xf.visitor.alerts_unread|number}" class="sidePanel__tab js-alertTab js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unread ? ' badgeContainer--highlighted' : '' }}"> <xf:fa icon="fa-bell" class="uix_icon uix_icon--alert" /> </a> </li> </xf:if> </ul> </xf:if>]]>

</template>


-<template title="uix_config" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<script> if (typeof (window.themehouse) !== 'object') { window.themehouse = {}; } if (typeof (window.themehouse.settings) !== 'object') { window.themehouse.settings = {}; } window.themehouse.settings = { common: { '20180112': { init: false, }, }, data: { version: '{{property('uix_version')}}', jsVersion: 'No JS Files', templateVersion: '2.1.2.0_Release', betaMode: {{property('uix_betaMode')}}, theme: '', url: '{{ base_url(null, true)|escape("js") }}', user: '{$xf.visitor.user_id}', }, inputSync: {}, minimalSearch: { breakpoint: "{{ 0 + property('uix_search_maxResponsiveWidth') }}", dropdownBreakpoint: "{{ 0 + property('uix_search_maxResponsiveWidth') }}", }, sidebar: { enabled: '{{$uix_canCollapseSidebar}}', link: '{{ link("uix/toggle-sidebar.json", null, {"t": csrf_token()}) }}', state: '{{$uix_sidebarCollapsed}}', }, sidebarNav: { enabled: '{{$uix_canCollapseSidebarNav}}', link: '{{ link("uix/toggle-sidebar-navigation.json", null, {"t": csrf_token()}) }}', state: '{{$uix_sidebarNavCollapsed}}', }, fab: { enabled: {{property('uix_fabScroll')}}, }, checkRadius: { enabled: {{property('uix_borderRadiusJs')}}, selectors: '{{property("uix_borderRadiusSelectors")}}', }, nodes: { enabled: {{property('uix_nodeClickable')}}, }, nodesCollapse: { enabled: '{{$uix_canCollapseCategories}}', link: '{{ link("uix/toggle-category.json", null, {"t": csrf_token()}) }}', state: '{{$uix_collapsedCategoriesJson}}', }, widthToggle: { enabled: '{{$uix_canTogglePageWidth}}', link: '{{ link("uix/toggle-width.json", null, {"t": csrf_token()}) }}', state: '{{$uix_pageWidth}}', }, } window.document.addEventListener('DOMContentLoaded', function() { <xf:if is="{{property('uix_betaMode')}}"> window.Ваш домен.руmon['20180112'].init(); <xf:else /> try { window.Ваш домен.руmon['20180112'].init(); } catch(e) { console.log('Error caught', e); } </xf:if> var jsVersionPrefix = 'No JS Files'; if (typeof(window.themehouse.settings.data.jsVersion) === 'string') { var jsVersionSplit = window.themehouse.settings.data.jsVersion.split('_'); if (jsVersionSplit.length) { jsVersionPrefix = jsVersionSplit[0]; } } var templateVersionPrefix = 'No JS Template Version'; if (typeof(window.themehouse.settings.data.templateVersion) === 'string') { var templateVersionSplit = window.themehouse.settings.data.templateVersion.split('_'); if (templateVersionSplit.length) { templateVersionPrefix = templateVersionSplit[0]; } } if (jsVersionPrefix !== templateVersionPrefix) { var splitFileVersion = jsVersionPrefix.split('.'); var splitTemplateVersion = templateVersionPrefix.split('.'); console.log('version mismatch', jsVersionPrefix, templateVersionPrefix); } }); </script>]]>

</template>


-<template title="uix_extendedFooter" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:if contentcheck="true"> <div class="uix_extendedFooter"> <div class="pageContent"> <div class="uix_extendedFooterRow"> <xf:css src="uix_extendedFooter.less" /> <xf:contentcheck> {$uix_footerWidgets|raw} </xf:contentcheck> </div> </div> </div> </xf:if>]]>

</template>


-<template title="uix_extendedFooter.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[.uix_extendedFooter { order: @xf-uix_extendedFooterOrder; .xf-uix_extendedFooterStyle(); <xf:if is="(property('uix_pageStyle') != 'covered') && !property('uix_forceCoverExtendedFooter')"> .m-pageWidth(); </xf:if> <xf:if is="property('uix_hideExtendedFooterMobile')"> @media (max-width: @xf-responsiveMedium) { display: none; } </xf:if> .pageContent { <xf:if is="(property('uix_pageStyle') == 'covered') || property('uix_forceCoverExtendedFooter')"> .m-pageWidth(); <xf:if is="(property('uix_pageStyle') != 'wrapped')"> padding:0; </xf:if> </xf:if> } .uix_extendedFooterRow { display: flex; flex-wrap: wrap; margin: calc(-@xf-uix_footerWidgetPadding / 2); .blockLink {text-transform: capitalize;} > .block { flex-basis: @xf-uix_footerWidgetWidth; padding: calc(@xf-uix_footerWidgetPadding / 2); margin: 0; flex-grow: 1; min-width: 0; .block-container { margin-left: 0; margin-right: 0; <xf:if is="{{ property('uix_extendedFooter__whiteText') }}"> color: rgba(255,255,255,.7); </xf:if> .xf-uix_footerWidget(); .block-minorHeader { <xf:if is="{{ property('uix_extendedFooter__whiteText') }}"> color: rgba(255,255,255,1); </xf:if> .xf-uix_footerWidgetHeader(); &:before { <xf:if is="{{ property('uix_extendedFooter__whiteText') }}"> color: rgba(255,255,255,.3); </xf:if> } a {color: inherit;} } <xf:if is="{{ property('uix_extendedFooter__whiteText') }}"> .contentRow-minor { color: rgba(255,255,255,.5); time {color: rgba(255,255,255,.7);} } a { color: inherit; } .pairs > dt {color: rgba(255,255,255,.5);} </xf:if> .block-body { .xf-uix_footerWidgetBody(); } .block-row, .blockLink { .xf-uix_footerWidgetRow(); } .block-footer { <xf:if is="{{ property('uix_extendedFooter__whiteText') }}"> color: inherit; </xf:if> .xf-uix_footerWidgetFooter(); } .blockLink { background: none; color: inherit; border-bottom: 1px solid rgba(255,255,255,.12); a {display: block;} } } } } }]]>

</template>


-<template title="uix_footer.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[.uix_fabBar { <xf:if is="property('uix_fab') == 'never' && (property('uix_visitorTabsMobile') == 'tabbar')"> @media (max-width: @xf-responsiveNarrow) { margin-bottom: calc(60px - @xf-paddingLarge); } </xf:if> .uix_editor--focused & { display: none; } &.uix_fabBar--mirror { visibility: hidden; position: static; padding-top: calc(@xf-paddingLarge * 2); background-color: @xf-uix_fabBarBackground; .p-title-pageAction{ padding-top: 0;} <xf:if is="property('uix_fab') == 'mobile'"> @media (min-width: @xf-uix_fabVw) { display: none; } </xf:if> } <xf:if is="!property('uix_fabScroll')"> // background-color: @xf-uix_fabBarBackground; // height: 60px; padding: @xf-paddingLarge 0; </xf:if> <xf:if is="property('uix_fab') == 'mobile'"> @media (min-width: @xf-uix_fabVw) { .p-title-pageAction{ display: none;} } </xf:if> display: flex; flex-direction: column; align-items: flex-end; position: fixed; bottom: 0; left: 0; right: 0; padding: @xf-paddingLarge; z-index: 5; pointer-events: none; .u-scrollButtons {position: static;} .p-title-pageAction { <xf:if is="property('uix_fabScroll') && (property('uix_visitorTabsMobile') == 'tabbar')"> margin-bottom: -30px; <xf:else /> margin-bottom: calc(-60px - @xf-paddingLarge); </xf:if> transition: ease-in .2s margin-bottom; z-index: 5; padding-top: @xf-paddingLarge; .button { border-radius: 100%; height: 60px; width: 60px; padding: 0; font-size: 0; display: none; align-items: center; justify-content: center; box-shadow: @xf-uix_elevation2; background: @xf-buttonCta--background-color; color: @xf-buttonCta--color; &:last-child {display: flex;} &:not(.button--icon) {display: none;} .button-text:before {font-size: @xf-uix_iconSizeLarge; margin: 0;} } } .u-scrollButtons {pointer-events:auto;} &.uix_fabBar--active .p-title-pageAction { margin-bottom: 0; pointer-events: auto; <xf:if is="property('uix_visitorTabsMobile') == 'tabbar'"> @media (max-width: @xf-responsiveNarrow) { margin-bottom: {{ property('paddingLarge') + 30 }}px; } </xf:if> } } #uix_jumpToFixed { font-size: 24px; color: #FFF; background-color: @xf-uix_secondaryColor; padding: 8px; margin: 16px; border-radius: 2px; position: fixed; z-index: 1; transition: opacity 0.4s; display: block; padding: 0; bottom: 0; right: 0; left: auto; } #uix_jumpToFixed a:first-child { padding-bottom: 4px; } #uix_jumpToFixed a { color: inherit; display: block; padding: 8px; } #uix_jumpToFixed a:last-child { padding-top: 4px; }]]>

</template>


-<template title="uix_icons.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[/* <xf:macro template="uix_icons.less" name="content" arg-icon="account" /> */ <xf:macro name="content" arg-icon="" arg-content=""> <xf:if is="{{property('uix_iconFontFamily') != 'fontawesome'}}"> .xf-uix_iconFont(); content: '{$icon}'; <xf:if is="{$icon} == 'article'">content: '@xf-uix_icon_article';</xf:if> <xf:if is="{$icon} == 'toggle-off'">content: '@xf-uix_icon_toggleOff';</xf:if> <xf:if is="{$icon} == 'toggle-on'">content: '@xf-uix_icon_toggleOn';</xf:if> <xf:if is="{$icon} == 'vimeo'">content: '@xf-uix_icon_vimeo';</xf:if> <xf:if is="{$icon} == 'twitch'">content: '@xf-uix_icon_twitch';</xf:if> <xf:if is="{$icon} == 'spotify'">content: '@xf-uix_icon_spotify';</xf:if> <xf:if is="{$icon} == 'apple'">content: '@xf-uix_icon_apple';</xf:if> <xf:if is="{$icon} == 'youtube'">content: '@xf-uix_icon_youtube';</xf:if> <xf:if is="{$icon} == 'camera'">content: '@xf-uix_icon_camera';</xf:if> <xf:if is="{$icon} == 'checkbox'">content: '@xf-uix_icon_checkbox';</xf:if> <xf:if is="{$icon} == 'checkbox-checked'">content: '@xf-uix_icon_checkboxChecked';</xf:if> <xf:if is="{$icon} == 'radio'">content: '@xf-uix_icon_radio';</xf:if> <xf:if is="{$icon} == 'radio-selected'">content: '@xf-uix_icon_radioSelected';</xf:if> <xf:if is="{$icon} == 'disable'">content: '@xf-uix_icon_disable';</xf:if> <xf:if is="{$icon} == 'alert'">content: '@xf-uix_icon_alert';</xf:if> <xf:if is="{$icon} == 'alert-off'">content: '@xf-uix_icon_alertOff';</xf:if> <xf:if is="{$icon} == 'collapse'">content: '@xf-uix_icon_collapse';</xf:if> <xf:if is="{$icon} == 'expand'">content: '@xf-uix_icon_expand';</xf:if> <xf:if is="{$icon} == 'new-thread'">content: '@xf-uix_icon_newThread';</xf:if> <xf:if is="{$icon} == 'download'">content: '@xf-uix_icon_download';</xf:if> <xf:if is="{$icon} == 'user'">content: '@xf-uix_icon_user';</xf:if> <xf:if is="{$icon} == 'grid'">content: '@xf-uix_icon_email';</xf:if> <xf:if is="{$icon} == 'rss'">content: '@xf-uix_icon_rss';</xf:if> <xf:if is="{$icon} == 'folder'">content: '@xf-uix_icon_folder';</xf:if> <xf:if is="{$icon} == 'home'">content: '@xf-uix_icon_home';</xf:if> <xf:if is="{$icon} == 'email'">content: '@xf-uix_icon_email';</xf:if> <xf:if is="{$icon} == 'inbox'">content: '@xf-uix_icon_email';</xf:if> <xf:if is="{$icon} == 'menu-down'">content: '@xf-uix_icon_menuDown';</xf:if> <xf:if is="{$icon} == 'menu-left'"> <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_menuLeft'; <xf:else /> content: '@xf-uix_icon_menuRight'; </xf:if> </xf:if> <xf:if is="{$icon} == 'menu-right'">content: '@xf-uix_icon_menuRight';</xf:if> <xf:if is="{$icon} == 'attention'">content: '@xf-uix_icon_attention';</xf:if> <xf:if is="{$icon} == 'menu-up'">content: '@xf-uix_icon_menuUp';</xf:if> <xf:if is="{$icon} == 'menu'">content: '@xf-uix_icon_menu';</xf:if> <xf:if is="{$icon} == 'chevron-right'"> <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_chevronRight'; <xf:else /> content: '@xf-uix_icon_chevronLeft'; </xf:if> </xf:if> <xf:if is="{$icon} == 'chevron-left'"> <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_chevronLeft'; <xf:else /> content: '@xf-uix_icon_chevronRight'; </xf:if> </xf:if> <xf:if is="{$icon} == 'chevron-down'">content: '@xf-uix_icon_chevronDown';</xf:if> <xf:if is="{$icon} == 'chevron-up'">content: '@xf-uix_icon_chevronUp';</xf:if> <xf:if is="{$icon} == 'file'">content: '@xf-uix_icon_file';</xf:if> <xf:if is="{$icon} == 'arrow-up-circle'">content: '@xf-uix_icon_arrowUpVariant';</xf:if> <xf:if is="{$icon} == 'arrow-up'">content: '@xf-uix_icon_arrowUp';</xf:if> <xf:if is="{$icon} == 'arrow-down'">content: '@xf-uix_icon_arrowDown';</xf:if> <xf:if is="{$icon} == 'arrow-left'"> <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_arrowLeft'; <xf:else /> content: '@xf-uix_icon_arrowRight'; </xf:if> </xf:if> <xf:if is="{$icon} == 'arrow-right'"> <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_arrowRight'; <xf:else /> content: '@xf-uix_icon_arrowLeft'; </xf:if> </xf:if> <xf:if is="{$icon} == 'close'">content: '@xf-uix_icon_close';</xf:if> <xf:if is="{$icon} == 'tag-multiple'">content: '@xf-uix_icon_tagMultiple';</xf:if> <xf:if is="{$icon} == 'search-plus'">content: '@xf-uix_icon_searchPlus';</xf:if> <xf:if is="{$icon} == 'search'">content: '@xf-uix_icon_search';</xf:if> <xf:if is="{$icon} == 'plus'">content: '@xf-uix_icon_plus';</xf:if> <xf:if is="{$icon} == 'minus'">content: '@xf-uix_icon_minus';</xf:if> <xf:if is="{$icon} == 'user-multiple'">content: '@xf-uix_icon_userMultiple';</xf:if> <xf:if is="{$icon} == 'graph'">content: '@xf-uix_icon_graph';</xf:if> <xf:if is="{$icon} == 'clock'">content: '@xf-uix_icon_clock';</xf:if> <xf:if is="{$icon} == 'brush'">content: '@xf-uix_icon_brush';</xf:if> <xf:if is="{$icon} == 'reply'">content: '@xf-uix_icon_reply';</xf:if> <xf:if is="{$icon} == 'like'">content: '@xf-uix_icon_like';</xf:if> <xf:if is="{$icon} == 'unlike'">content: '@xf-uix_icon_unlike';</xf:if> <xf:if is="{$icon} == 'delete'">content: '@xf-uix_icon_delete';</xf:if> <xf:if is="{$icon} == 'moderate'">content: '@xf-uix_icon_moderate';</xf:if> <xf:if is="{$icon} == 'statistics'">content: '@xf-uix_icon_statistics';</xf:if> <xf:if is="{$icon} == 'warning'">content: '@xf-uix_icon_warning';</xf:if> <xf:if is="{$icon} == 'ignored'">content: '@xf-uix_icon_ignored';</xf:if> <xf:if is="{$icon} == 'forum'">content: '@xf-uix_icon_forum';</xf:if> <xf:if is="{$icon} == 'page'">content: '@xf-uix_icon_page';</xf:if> <xf:if is="{$icon} == 'earth'">content: '@xf-uix_icon_earth';</xf:if> <xf:if is="{$icon} == 'link'">content: '@xf-uix_icon_link';</xf:if> <xf:if is="{$icon} == 'search-member'">content: '@xf-uix_icon_searchMember';</xf:if> <xf:if is="{$icon} == 'check'">content: '@xf-uix_icon_check';</xf:if> <xf:if is="{$icon} == 'lock'">content: '@xf-uix_icon_lock';</xf:if> <xf:if is="{$icon} == 'share'">content: '@xf-uix_icon_share';</xf:if> <xf:if is="{$icon} == 'redirect'">content: '@xf-uix_icon_redirect';</xf:if> <xf:if is="{$icon} == 'messages'">content: '@xf-uix_icon_messages';</xf:if> <xf:if is="{$icon} == 'post'">content: '@xf-uix_icon_post';</xf:if> <xf:if is="{$icon} == 'star'">content: '@xf-uix_icon_star';</xf:if> <xf:if is="{$icon} == 'embed'">content: '@xf-uix_icon_embed';</xf:if> <xf:if is="{$icon} == 'star-half'">content: '@xf-uix_icon_starHalf';</xf:if> <xf:if is="{$icon} == 'star-empty'">content: '@xf-uix_icon_starEmpty';</xf:if> <xf:if is="{$icon} == 'sticky'">content: '@xf-uix_icon_sticky';</xf:if> <xf:if is="{$icon} == 'watched'">content: '@xf-uix_icon_watched';</xf:if> <xf:if is="{$icon} == 'poll'">content: '@xf-uix_icon_poll';</xf:if> <xf:if is="{$icon} == 'facebook'">content: '@xf-uix_icon_facebook';</xf:if> <xf:if is="{$icon} == 'twitter'">content: '@xf-uix_icon_twitter';</xf:if> <xf:if is="{$icon} == 'google-plus'">content: '@xf-uix_icon_googlePlus';</xf:if> <xf:if is="{$icon} == 'pinterest'">content: '@xf-uix_icon_pinterest';</xf:if> <xf:if is="{$icon} == 'tumblr'">content: '@xf-uix_icon_tumblr';</xf:if> <xf:if is="{$icon} == 'instagram'">content: '@xf-uix_icon_instagram';</xf:if> <xf:if is="{$icon} == 'reddit'">content: '@xf-uix_icon_reddit';</xf:if> <xf:if is="{$icon} == 'whatsapp'">content: '@xf-uix_icon_whatsapp';</xf:if> <xf:if is="{$icon} == 'github'">content: '@xf-uix_icon_github';</xf:if> <xf:if is="{$icon} == 'linkedin'">content: '@xf-uix_icon_linkedin';</xf:if> <xf:if is="{$icon} == 'microsoft'">content: '@xf-uix_icon_microsoft';</xf:if> <xf:if is="{$icon} == 'export'">content: '@xf-uix_icon_export';</xf:if> <xf:if is="{$icon} == 'import'">content: '@xf-uix_iconImport';</xf:if> <xf:if is="{$icon} == 'edit'">content: '@xf-uix_icon_edit';</xf:if> <xf:if is="{$icon} == 'save'">content: '@xf-uix_icon_save';</xf:if> <xf:if is="{$icon} == 'quote'">content: '@xf-uix_icon_quote';</xf:if> <xf:if is="{$icon} == 'payment'">content: '@xf-uix_icon_payment';</xf:if> <xf:if is="{$icon} == 'shopping-cart'">content: '@xf-uix_icon_shoppingCart';</xf:if> <xf:if is="{$icon} == 'birthday'">content: '@xf-uix_icon_birthday';</xf:if> <xf:if is="{$icon} == 'sort'">content: '@xf-uix_icon_sort';</xf:if> <xf:if is="{$icon} == 'upload'">content: '@xf-uix_icon_upload';</xf:if> <xf:if is="{$icon} == 'attachment'">content: '@xf-uix_icon_attachment';</xf:if> <xf:if is="{$icon} == 'login'">content: '@xf-uix_icon_login';</xf:if> <xf:if is="{$icon} == 'register'">content: '@xf-uix_icon_register';</xf:if> <xf:if is="{$icon} == 'rate'">content: '@xf-uix_icon_rate';</xf:if> <xf:if is="{$icon} == 'convert'">content: '@xf-uix_icon_convert';</xf:if> <xf:if is="{$icon} == 'trophy'">content: '@xf-uix_icon_trophy';</xf:if> <xf:if is="{$icon} == 'report'">content: '@xf-uix_icon_report';</xf:if> <xf:if is="{$icon} == 'ipaddress'">content: '@xf-uix_icon_ipAddress';</xf:if> <xf:if is="{$icon} == 'history'">content: '@xf-uix_icon_history';</xf:if> <xf:if is="{$icon} == 'warn'">content: '@xf-uix_icon_warn';</xf:if> <xf:if is="{$icon} == 'spam'">content: '@xf-uix_icon_spam';</xf:if> <xf:if is="{$icon} == 'settings'">content: '@xf-uix_icon_settings';</xf:if> <xf:if is="{$icon} == 'file-document'">content: '@xf-uix_icon_fileDocument';</xf:if> <xf:if is="{$icon} == 'comment-multiple'">content: '@xf-uix_icon_commentMultiple';</xf:if> <xf:if is="{$icon} == 'bookmark'">content: '@xf-uix_icon_bookmark';</xf:if> <xf:if is="{$icon} == 'help'">content: '@xf-uix_icon_help';</xf:if> <xf:if is="{$icon} == 'refresh'">content: '@xf-uix_icon_refresh';</xf:if> <xf:if is="{$icon} == 'unlock'">content: '@xf-uix_icon_unlock';</xf:if> <xf:if is="{$icon} == 'location'">content: '@xf-uix_icon_location';</xf:if> <xf:if is="{$icon} == 'web'">content: '@xf-uix_icon_web';</xf:if> <xf:if is="{$icon} == 'list'">content: '@xf-uix_icon_list';</xf:if> <xf:if is="{$icon} == 'comment-alert'">content: '@xf-uix_icon_commentAlert';</xf:if> <xf:if is="{$icon} == 'whats-new'">content: '@xf-uix_icon_whatsNew';</xf:if> <xf:if is="{$icon} == 'attention'">content: '@xf-uix_icon_attention';</xf:if> <xf:if is="{$icon} == 'merge'">content: '@xf-uix_icon_merge';</xf:if> <xf:if is="{$icon} == 'move'">content: '@xf-uix_icon_move';</xf:if> <xf:if is="{$icon} == 'clone'">content: '@xf-uix_icon_clone';</xf:if> <xf:if is="{$icon} == 'info'">content: '@xf-uix_icon_info';</xf:if> <xf:if is="{$icon} == 'media'">content: '@xf-uix_icon_media';</xf:if> <xf:if is="{$icon} == 'resource'">content: '@xf-uix_icon_resource';</xf:if> <xf:if is="{$icon} == 'video'">content: '@xf-uix_icon_video';</xf:if> <xf:if is="{$icon} == 'audio'">content: '@xf-uix_icon_audio';</xf:if> <xf:if is="{$icon} == 'steam'">content: '@xf-uix_icon_steam';</xf:if> </xf:if> </xf:macro> <xf:macro name="icon" arg-icon="!"> <i class="uix_icon uix_icon--{$icon}"></i> </xf:macro> <xf:if is="{{property('uix_iconFontFamily') != 'fontawesome'}}"> .uix_icon--toggle-on:before {content: '@xf-uix_icon_toggleOn';} .uix_icon--toggle-off:before {content: '@xf-uix_icon_toggleOff';} .uix_icon--alert:before {content: '@xf-uix_icon_alert';} .uix_icon--alert-off:before {content: '@xf-uix_icon_alertOff';} .uix_icon--user:before {content: '@xf-uix_icon_user';} .uix_icon--grid:before {content: '@xf-uix_icon_grid';} .uix_icon--rss:before {content: '@xf-uix_icon_rss';} .uix_icon--folder:before {content: '@xf-uix_icon_folder';} .uix_icon--home:before {content: '@xf-uix_icon_home';} .uix_icon--email:before {content: '@xf-uix_icon_email';} .uix_icon--inbox:before {content: '@xf-uix_icon_inbox';} .uix_icon--menu-down:before {content: '@xf-uix_icon_menuDown';} .uix_icon--menu-left:before { <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_menuLeft'; <xf:else /> content: '@xf-uix_icon_menuRight'; </xf:if> } .uix_icon--menu-right:before { <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_menuRight'; <xf:else /> content: '@xf-uix_icon_menuLeft'; </xf:if> } .uix_icon--menu-up:before {content: '@xf-uix_icon_menuUp';} .uix_icon--menu:before {content: '@xf-uix_icon_menu';} .uix_icon--chevron-right:before { <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_chevronRight'; <xf:else /> content: '@xf-uix_icon_chevronLeft'; </xf:if> } .uix_icon--chevron-left:before { <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_chevronLeft'; <xf:else /> content: '@xf-uix_icon_chevronRight'; </xf:if> } .uix_icon--chevron-down:before {content: '@xf-uix_icon_chevronDown';} .uix_icon--chevron-up:before {content: '@xf-uix_icon_chevronUp';} .uix_icon--file:before {content: '@xf-uix_icon_file';} .uix_icon--arrow-up-circle:before {content: '@xf-uix_icon_arrowUpCircle';} .uix_icon--arrow-up:before {content: '@xf-uix_icon_arrowUp';} .uix_icon--arrow-down:before {content: '@xf-uix_icon_arrowDown';} .uix_icon--arrow-left:before { <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_arrowLeft'; <xf:else /> content: '@xf-uix_icon_arrowRight'; </xf:if> } .uix_icon--arrow-right:before { <xf:if is="({$xf.language.text_direction} == 'LTR' && property('uix_textDirection') == 'LTR') || ({$xf.language.text_direction} == 'RTL' && property('uix_textDirection') == 'RTL') "> content: '@xf-uix_icon_arrowRight'; <xf:else /> content: '@xf-uix_icon_arrowRight'; </xf:if> } .uix_icon--spotify:before {content: '@xf-uix_icon_spotify';} .uix_icon--soundcloud:before {content: '@xf-uix_icon_soundcloud';} .uix_icon--flickr:before {content: '@xf-uix_icon_flickr';} .uix_icon--close:before {content: '@xf-uix_icon_close';} .uix_icon--apple:before {content: '@xf-uix_icon_apple';} .uix_icon--youtube:before {content: '@xf-uix_icon_youtube';} .uix_icon--camera:before {content: '@xf-uix_icon_camera';} .uix_icon--tag-multiple:before {content: '@xf-uix_icon_tagMultiple';} .uix_icon--search-plus:before {content: '@xf-uix_icon_searchPlus';} .uix_icon--search:before {content: '@xf-uix_icon_search';} .uix_icon--plus:before {content: '@xf-uix_icon_plus';} .uix_icon--minus:before {content: '@xf-uix_icon_minus';} .uix_icon--user-multiple:before {content: '@xf-uix_icon_userMultiple';} .uix_icon--chart-bar:before {content: '@xf-uix_icon_chartBar';} .uix_icon--clock:before {content: '@xf-uix_icon_clock';} .uix_icon--brush:before {content: '@xf-uix_icon_brush';} .uix_icon--reply:before {content: '@xf-uix_icon_reply';} .uix_icon--like:before {content: '@xf-uix_icon_like';} .uix_icon--unlike:before {content: '@xf-uix_icon_unlike';} .uix_icon--delete:before {content: '@xf-uix_icon_delete';} .uix_icon--moderate:before {content: '@xf-uix_icon_moderate';} .uix_icon--statistics:before {content: '@xf-uix_icon_statistics';} .uix_icon--warning:before {content: '@xf-uix_icon_warning';} .uix_icon--ignored:before {content: '@xf-uix_icon_ignored';} .uix_icon--forum:before {content: '@xf-uix_icon_forum';} .uix_icon--page:before {content: '@xf-uix_icon_page';} .uix_icon--earth:before {content: '@xf-uix_icon_earth';} .uix_icon--link:before {content: '@xf-uix_icon_link';} .uix_icon--search-member:before {content: '@xf-uix_icon_searchMember';} .uix_icon--radio:before {content: '@xf-uix_icon_radio';} .uix_icon--radio-selected:before {content: '@xf-uix_icon_radioSelected';} .uix_icon--check:before {content: '@xf-uix_icon_check';} .uix_icon--checkbox-checked:before {content: '@xf-uix_icon_checkboxChecked';} .uix_icon--checkbox:before {content: '@xf-uix_icon_checkbpx';} .uix_icon--lock:before {content: '@xf-uix_icon_lock';} .uix_icon--share:before {content: '@xf-uix_icon_share';} .uix_icon--redirect:before {content: '@xf-uix_icon_redirect';} .uix_icon--messages:before {content: '@xf-uix_icon_messages';} .uix_icon--post:before {content: '@xf-uix_icon_post';} .uix_icon--star:before {content: '@xf-uix_icon_star';} .uix_icon--star-empty:before {content: '@xf-uix_icon_starEmpty';} .uix_icon--star-half:before {content: '@xf-uix_icon_starHalf';} .uix_icon--sticky:before {content: '@xf-uix_icon_sticky';} .uix_icon--watched:before {content: '@xf-uix_icon_watched';} .uix_icon--poll:before {content: '@xf-uix_icon_poll';} .uix_icon--facebook:before {content: '@xf-uix_icon_facebook';} .uix_icon--twitter:before {content: '@xf-uix_icon_twitter';} .uix_icon--instagram:before {content: '@xf-uix_icon_instagram';} .uix_icon--google-plus:before {content: '@xf-uix_icon_googlePlus';} .uix_icon--pinterest:before {content: '@xf-uix_icon_pinterest';} .uix_icon--tumblr:before {content: '@xf-uix_icon_tumblr';} .uix_icon--reddit:before {content: '@xf-uix_icon_reddit';} .uix_icon--whatsapp:before {content: '@xf-uix_icon_whatsapp';} .uix_icon--github:before {content: '@xf-uix_icon_github';} .uix_icon--linkedin:before {content: '@xf-uix_icon_linkedin';} .uix_icon--microsoft:before {content: '@xf-uix_icon_microsoft';} .uix_icon--export:before {content: '@xf-uix_icon_export';} .uix_icon--import:before {content: '@xf-uix_icon_import';} .uix_icon--edit:before {content: '@xf-uix_icon_edit';} .uix_icon--save:before {content: '@xf-uix_icon_save';} .uix_icon--quote:before {content: '@xf-uix_icon_quote';} .uix_icon--payment:before {content: '@xf-uix_icon_payment';} .uix_icon--shopping-cart:before {content: '@xf-uix_icon_shoppingCart';} .uix_icon--birthday:before {content: '@xf-uix_icon_birthday';} .uix_icon--sort:before {content: '@xf-uix_icon_sort';} .uix_icon--upload:before {content: '@xf-uix_icon_upload';} .uix_icon--attachment:before {content: '@xf-uix_icon_attachment';} .uix_icon--login:before {content: '@xf-uix_icon_login';} .uix_icon--register:before {content: '@xf-uix_icon_register';} .uix_icon--rate:before {content: '@xf-uix_icon_rate';} .uix_icon--convert:before {content: '@xf-uix_icon_convert';} .uix_icon--trophy:before {content: '@xf-uix_icon_trophy';} .uix_icon--report:before {content: '@xf-uix_icon_report';} .uix_icon--ipaddress:before {content: '@xf-uix_icon_ipaddress';} .uix_icon--history:before {content: '@xf-uix_icon_history';} .uix_icon--warn:before {content: '@xf-uix_icon_warn';} .uix_icon--spam:before {content: '@xf-uix_icon_spam';} .uix_icon--settings:before {content: '@xf-uix_icon_settings';} .uix_icon--file-document:before {content: '@xf-uix_icon_fileDocument';} .uix_icon--comment-multiple:before {content: '@xf-uix_icon_commentMultiple';} .uix_icon--bookmark:before {content: '@xf-uix_icon_bookmark';} .uix_icon--help:before {content: '@xf-uix_icon_help';} .uix_icon--refresh:before {content: '@xf-uix_icon_refresh';} .uix_icon--unlock:before {content: '@xf-uix_icon_unlock';} .uix_icon--location:before {content: '@xf-uix_icon_location';} .uix_icon--web:before {content: '@xf-uix_icon_web';} .uix_icon--list:before {content: '@xf-uix_icon_list';} .uix_icon--comment-alert:before {content: '@xf-uix_icon_commentAlert';} .uix_icon--download:before {content: '@xf-uix_icon_download';} .uix_icon--whats-new:before {content: '@xf-uix_icon_whatsNew';} .uix_icon--new-thread:before {content: '@xf-uix_icon_newThread';} .uix_icon--collapse:before {content: '@xf-uix_icon_collapse';} .uix_icon--expand:before {content: '@xf-uix_icon_expand';} .uix_icon--merge:before {content: '@xf-uix_icon_merge';} .uix_icon--move:before {content: '@xf-uix_icon_move';} .uix_icon--clone:before {content: '@xf-uix_icon_clone';} .uix_icon--info:before {content: '@xf-uix_icon_info';} .uix_icon--media:before {content: '@xf-uix_icon_media';} .uix_icon--resource:before {content: '@xf-uix_icon_resource';} .uix_icon--embed:before {content: '@xf-uix_icon_embed';} .uix_icon--video:before {content: '@xf-uix_icon_video';} .uix_icon--audio:before {content: '@xf-uix_icon_audio';} .uix_icon--graph:before {content: '@xf-uix_icon_graph';} .uix_icon--disable:before {content: '@xf-uix_icon_disable';} .uix_icon--twitch:before {content: '@xf-uix_icon_twitch';} .uix_icon--vimeo:before {content: '@xf-uix_icon_vimeo';} .uix_icon--article:before {content: '@xf-uix_icon_article';} .uix_icon--steam:before {content: '@xf-uix_icon_steam';} </xf:if> // external anchors icons /* <xf:if is="{{property('uix_externalLinkIcon')}}"> a[href]:not([href*='']):not([href*='{{$xf.options.boardUrl}}']):not([href*='{{$xf.options.homePageUrl}}']):not( [href^='#'] ):not( [href^='/'] ):after { <xf:macro name="content" template="uix_icons.less" arg-icon="open-in-new" /> } </xf:if> */ /* -- MATERIAL ICONS -- */ <xf:comment> @font-face { font-family: "Material Design Icons"; src: url("styles/uix/fonts/icons/material-icons/materialdesignicons-webfont.eot?v=3.0.39"); src: url("styles/uix/fonts/icons/material-icons/materialdesignicons-webfont.eot?#iefix&v=3.0.39") format("embedded-opentype"), url("styles/uix/fonts/icons/material-icons/materialdesignicons-webfont.woff2?v=3.0.39") format("woff2"), url("styles/uix/fonts/icons/material-icons/materialdesignicons-webfont.woff?v=3.0.39") format("woff"), url("styles/uix/fonts/icons/material-icons/materialdesignicons-webfont.ttf?v=3.0.39") format("truetype"), url("styles/uix/fonts/icons/material-icons/materialdesignicons-webfont.svg?v=3.0.39#materialdesigniconsregular") format("svg"); font-weight: normal; font-style: normal; } </xf:comment> <xf:if is="{{property('uix_iconFontFamily') != 'fontawesome'}}"> .mdi:before, .uix_icon { display: inline-block; font: normal normal normal 18px/1 "Material Design Icons"; font-size: inherit; text-rendering: auto; line-height: inherit; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; transform: translate(0, 0); width: auto; } </xf:if>]]>

</template>


-<template title="uix_js" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:js src="themehouse/global/20180112.js" min="true" /> <xf:if is="property('uix_borderRadiusJs')"> <xf:js src="themehouse/{{property('uix_jsPath')}}/indexRadius.js" min="true" /> <xf:else /> <xf:js src="themehouse/{{property('uix_jsPath')}}/index.js" min="true" /> </xf:if> {{ uix_js('themehouse/' . property('uix_jsPath') . '/defer.js', true, 'defer') }} <xf:if is="property('uix_navigationType') == 'sidebarNav'"> {{ uix_js('themehouse/' . property('uix_jsPath') . '/deferSidebarNav.js', true, 'defer') }} </xf:if> <xf:if is="property('uix_fab') != 'never'"> {{ uix_js('themehouse/' . property('uix_jsPath') . '/deferFab.js', true, 'defer') }} </xf:if> <xf:if is="property('uix_categoryCollapse')"> {{ uix_js('themehouse/' . property('uix_jsPath') . '/deferNodesCollapse.js', true, 'defer') }} </xf:if> <xf:if is="property('uix_pageWidthToggle') != 'disabled'"> {{ uix_js('themehouse/' . property('uix_jsPath') . '/deferWidthToggle.js', true, 'defer') }} </xf:if> <xf:js> // detect android device. Added to fix the dark pixel bug https://github.com/Audentio/xf2theme-issues/issues/1055 $(document).ready(function() { var ua = navigator.userAgent.toLowerCase(); var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { $('html').addClass('device--isAndroid'); } }) </xf:js> <xf:if is="property('uix_clickableThreads')"> <xf:js> $(document).ready(function() { $('.structItem--thread').bind('click', function(e) { var target = $(e.target); var skip = ['a', 'i', 'input', 'label']; if (target.length && skip.indexOf(target[0].tagName.toLowerCase()) === -1) { var href = $(this).find('.structItem-title').attr('uix-data-href'); if (e.metaKey || e.cmdKey) { e.preventDefault(); window.open(href, '_blank'); } else { window.location = href; } } }); }); </xf:js> </xf:if> <xf:if is="property('uix_sidebarMobileCanvas')"> <xf:js> $(document).ready(function() { var sidebar = $('.p-body-sidebar'); var backdrop = $('.p-body-sidebar [data-ocm-class="offCanvasMenu-backdrop"]'); $('.uix_sidebarCanvasTrigger').click(function(e) { e.preventDefault(); sidebar.addClass('offCanvasMenu offCanvasMenu--blocks is-active is-transitioning'); $('body').addClass('sideNav--open'); window.setTimeout(function() { sidebar.removeClass('is-transitioning'); }, 250); $('.uix_sidebarInner').addClass('offCanvasMenu-content'); backdrop.addClass('offCanvasMenu-backdrop'); $('body').addClass('is-modalOpen'); }); backdrop.click(function() { sidebar.addClass('is-transitioning'); sidebar.removeClass('is-active'); window.setTimeout(function() { sidebar.removeClass('offCanvasMenu offCanvasMenu--blocks is-transitioning'); $('.uix_sidebarInner').removeClass('offCanvasMenu-content'); backdrop.removeClass('offCanvasMenu-backdrop'); $('body').removeClass('is-modalOpen'); }, 250); }) }); </xf:js> </xf:if> <xf:js> /****** OFF CANVAS ***/ $(document).ready(function() { var panels = { navigation: { position: 1 }, account: { position: 2 }, inbox: { position: 3 }, alerts: { position: 4 } }; var tabsContainer = $('.sidePanel__tabs'); var activeTab = 'navigation'; var activeTabPosition = panels[activeTab].position; var generateDirections = function() { $('.sidePanel__tabPanel').each(function() { var tabPosition = $(this).attr('data-content'); var activeTabPosition = panels[activeTab].position; if (tabPosition != activeTab) { if (panels[tabPosition].position < activeTabPosition) { $(this).addClass('is-left'); } if (panels[tabPosition].position > activeTabPosition) { $(this).addClass('is-right'); } } }); }; generateDirections(); $('.sidePanel__tab').click(function() { $(tabsContainer).find('.sidePanel__tab').removeClass('sidePanel__tab--active'); $(this).addClass('sidePanel__tab--active'); activeTab = $(this).attr('data-attr'); $('.sidePanel__tabPanel').removeClass('is-active'); $('.sidePanel__tabPanel[data-content="' + activeTab + '"]').addClass('is-active'); $('.sidePanel__tabPanel').removeClass('is-left').removeClass('is-right'); generateDirections(); }); }); /******** extra info post toggle ***********/ $(document).ready(function() { XF.thThreadsUserExtraTrigger = XF.Click.newHandler({ eventNameSpace: 'XFthThreadsUserExtraTrigger', init: function(e) {}, click: function(e) { var parent = this.$target.parents('.message-user'); var triggerContainer = this.$target.parent('.thThreads__userExtra--toggle'); var container = triggerContainer.siblings('.thThreads__message-userExtras'); var child = container.find('.message-userExtras'); var eleHeight = child.height(); if (parent.hasClass('userExtra--expand')) { container.css({ height: eleHeight }); parent.toggleClass('userExtra--expand'); window.setTimeout(function() { container.css({ height: '0' }); window.setTimeout(function() { container.css({ height: '' }); }, 200); }, 17); } else { container.css({ height: eleHeight }); window.setTimeout(function() { parent.toggleClass('userExtra--expand'); container.css({ height: '' }); }, 200); } } }); XF.Click.register('ththreads-userextra-trigger', 'XF.thThreadsUserExtraTrigger'); }); /******** Backstretch images ***********/ $(document).ready(function() { if ( {{ property('uix_backstretch') }} ) { $("{{ property('uix_backstretchSelector') }}").addClass('uix__hasBackstretch'); $("{{ property('uix_backstretchSelector') }}").backstretch([ {$__globals.uix_backstretchImages|raw} ], { duration: {{ property('uix_backstretchDuration') }}, fade: {{ property('uix_backstretchFade')}} }); $("{{ property('uix_backstretchSelector') }}").css("zIndex",""); } }); // sidenav canvas blur fix $(document).ready(function(){ $('.p-body-sideNavTrigger .button').click(function(){ $('body').addClass('sideNav--open'); }); }) $(document).ready(function(){ $("[data-ocm-class='offCanvasMenu-backdrop']").click(function(){ $('body').removeClass('sideNav--open'); }); }) $(document).on('editor:start', function (m, ed) { if (typeof (m) !== 'undefined' && typeof (m.target) !== 'undefined') { var ele = $(m.target); if (ele.hasClass('js-editor')) { var wrapper = ele.closest('.message-editorWrapper'); if (wrapper.length) { window.setTimeout(function() { var innerEle = wrapper.find('.fr-element'); if (innerEle.length) { innerEle.focus(function (e) { $('html').addClass('uix_editor--focused') }); innerEle.blur(function (e) { $('html').removeClass('uix_editor--focused') }); } }, 0); } } } }); // off canvas menu closer keyboard shortcut $(document).ready(function() { $(document.body).onPassive('keyup', function(e) { switch (e.key) { case 'Escape': $('.offCanvasMenu.is-active .offCanvasMenu-backdrop').click(); return; } }); }); </xf:js> <xf:if is="property('uix_parallax')"> <xf:js> var parallaxSelector = "{{ property('uix_parallaxSelector') }}" var parallaxImage = "{{ base_url(property('uix_parallaxImage')) }}" var parallaxPosition = "{{ property('uix_parallaxPosition') }}" $(parallaxSelector).parallax({imageSrc: parallaxImage, positionY: parallaxPosition}); </xf:js> </xf:if> <xf:js> $(document).ready(function() { var uixMegaHovered = false; $('.uix-navEl--hasMegaMenu').hoverIntent({ over: function() { if (uixMegaHovered) { menu = $(this).attr('data-nav-id'); $('.p-nav').addClass('uix_showMegaMenu'); $('.uix_megaMenu__content').removeClass('uix_megaMenu__content--active'); $('.uix_megaMenu__content--' + menu).addClass('uix_megaMenu__content--active'); } }, timeout: 200, }); $('.p-nav').mouseenter(function() { uixMegaHovered = true; }); $('.p-nav').mouseleave(function() { $(this).removeClass('uix_showMegaMenu'); uixMegaHovered = false; }); }); </xf:js> <xf:if is="{{ property('uix_abridgedSignatures')}}"> <xf:js> /******** signature collapse toggle ***********/ $(window).on('load', function() { window.setTimeout(function() { var maxHeight = {{ property('uix_signatureMaxHeight') }}; /*** check if expandable ***/ var eles = []; $('.message-signature').each(function() { var height = $(this).height(); if (height > maxHeight) { eles.push($(this)); } }); for (var i = 0; i < eles.length; i++) { eles[i].addClass('message-signature--expandable'); }; /**** expand function ***/ var expand = function(container, canClose) { var inner = container.find('.bbWrapper'); var eleHeight = inner.height(); var isExpanded = container.hasClass('message-signature--expanded'); if (isExpanded) { if (canClose) { container.css({ height: eleHeight }); container.removeClass('message-signature--expanded'); window.setTimeout(function() { container.css({ height: maxHeight }); window.setTimeout(function() { container.css({ height: '' }); }, 200); }, 17); } } else { container.css({ height: eleHeight }); window.setTimeout(function() { container.addClass('message-signature--expanded'); container.css({ height: '' }); }, 200); } } /*** handle hover ***/ <xf:if is="{{ property('uix_signatureHoverEnabled')}}"> $('.message-signature--expandable').hoverIntent({ over: function() { expand($(this, false)); }, out: null, timeout: 300, interval: 300, }); </xf:if> /*** handle click ***/ $('.uix_signatureExpand').click(function() { var container = $(this).parent('.message-signature'); expand(container, true); }); }, 0); }); </xf:js> </xf:if> <xf:if is="{{property('uix_lazyLoadSupport')}}"> <xf:js> document.addEventListener("DOMContentLoaded", function() { var lazyloadImages; if ("IntersectionObserver" in window) { lazyloadImages = document.querySelectorAll(".lazy"); var imageObserver = new IntersectionObserver(function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { var image = entry.target; image.src = image.dataset.src; image.classList.remove("lazy"); imageObserver.unobserve(image); } }); }); lazyloadImages.forEach(function(image) { imageObserver.observe(image); }); } else { var lazyloadThrottleTimeout; lazyloadImages = document.querySelectorAll(".lazy"); function lazyload () { if(lazyloadThrottleTimeout) { clearTimeout(lazyloadThrottleTimeout); } lazyloadThrottleTimeout = setTimeout(function() { var scrollTop = window.pageYOffset; lazyloadImages.forEach(function(img) { if(img.offsetTop < (window.innerHeight + scrollTop)) { img.src = img.dataset.src; img.classList.remove('lazy'); } }); if(lazyloadImages.length == 0) { document.removeEventListener("scroll", lazyload); window.removeEventListener("resize", lazyload); window.removeEventListener("orientationChange", lazyload); } }, 20); } document.addEventListener("scroll", lazyload); window.addEventListener("resize", lazyload); window.addEventListener("orientationChange", lazyload); } }) </xf:js> </xf:if>]]>

</template>


-<template title="uix_mainTabSets" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:macro name="forum" arg-activeTab=""> <!-- first tab --> <!-- new tab --> <xf:if is="{$xf.options.forumsDefaultPage} == 'new_posts'"> <a href="{{ link('forums') }}" class="tabs-tab {{$activeTab == 'new_posts' ? 'is-active' : '' }}">{{ phrase('new_posts') }}</a> </xf:if> <a href="{{ link('forums/-/list') }}" class="tabs-tab {{$activeTab == 'forum_list' ? 'is-active' : '' }}">{{ phrase('forum_list') }}</a> </xf:macro>]]>

</template>


-<template title="uix_megaMenu" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:macro name="altColumn"> <div class="uix_megaMenu__col uix_megaMenu__col--alt"> <div class="block-body"> <a href="" class="uix_megaMenu__iconLink blockLink"> <i class="mdi mdi-account-multiple"></i> <span>Support UI.X</span> </a> <a href="#" class="uix_megaMenu__iconLink blockLink"> <i class="mdi mdi-account-multiple"></i> <span>Donate</span> </a> <a href="#" class="uix_megaMenu__iconLink blockLink"> <i class="mdi mdi-account-multiple"></i> <span>Contact us</span> </a> </div> <div class="block-body"> <div class="uix_megaMenu__listLabel blockLink">Main Links</div> <a href="{{ link('forums') }}" class="blockLink">{{ phrase('forums')}}</a> <a href="{{ link('articles') }}" class="blockLink">{{ phrase('articles')}}</a> <a href="https://www.studentdoctor.net/category/doctor-interviews/" class="blockLink">Interviews</a> </div> </div> </xf:macro> <xf:macro name="uix_megaMenu" menu="!"> <xf:css src="uix_megaMenu.less" /> <div class="uix_megaMenu"> <div class="pageContent"> <div class="uix_megaMenu__content uix_megaMenu__content--thxlink_12"> <div class="uix_megaMenu__row"> <div class="uix_megaMenu__col"> <h2 class="uix_megaMenu__title">Blog</h2> </div> <div class="uix_megaMenu__col"> <div class="block-minorHeader">Categories</div> <div class="block-body"> <a href="#" class="blockLink">Category 1</a> <a href="#" class="blockLink">Category 2</a> <a href="#" class="blockLink">Category 3</a> <a href="#" class="blockLink">Category 4</a> </div> </div> <div class="uix_megaMenu__col"> <div class="block-minorHeader">Categories</div> <div class="block-body"> <a href="#" class="blockLink">Category 1</a> <a href="#" class="blockLink">Category 2</a> <a href="#" class="blockLink">Category 3</a> <a href="#" class="blockLink">Category 4</a> </div> </div> <xf:macro name="altColumn" /> </div> </div> </div> </div> </xf:macro>]]>

</template>


-<template title="uix_megaMenu.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[.uix_showMegaMenu + .p-sectionLinks {display: none;} .uix_megaMenu { display: none; overflow: hidden; position: relative; background: @xf-contentBg; .pageContent { .m-pageWidth(); } .uix_showMegaMenu & { display: block; } .uix_megaMenu__content { display: none; &--active {display: block;} } .uix_megaMenu__title {margin: 0; color: @xf-textColor;} .uix_megaMenu__row { display: flex; flex-wrap: wrap; padding: 15px 0; margin: 0 -15px; .uix_megaMenu__col { flex-basis: 250px; padding: 15px; &:not(:first-child) { flex-grow: 1; } .blockLink { padding: 5px 0; color: @xf-textColorDimmed; background: none; line-height: 1; &:hover {background: none; color: @xf-textColor;} } .uix_footerLink .blockLink { padding: 1px 0; margin-bottom: 8px; } &.uix_megaMenu__col--alt { position: relative; padding: 15px 45px; margin-left: 30px; flex-grow: 0; &:before { content: ''; display: block; background: @xf-contentAltBg; position: absolute; top: -15px; bottom: -15px; left: 0; right: -400px; } } } } .uix_megaMenu__iconLink { display: flex; align-items: center; i { font-size: 16px; color: @xf-uix_primaryColor; padding-right: 4px; } } .block-minorHeader { padding: 0 0 10px; border-bottom: 1px solid rgba(0,0,0,.12); margin-bottom: 5px; } .uix_megaMenu__listLabel { text-transform: uppercase; color: @xf-textColorMuted; font-size: @xf-fontSizeSmall; margin-top: 20px; } }]]>

</template>


-<template title="uix_pageAnimations.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:if is="property('uix_pageAnimation')"> @media (min-width: @xf-responsiveWide) { // ANIMATION VARIABLES @macroAnimationSpeed: .15s; // MACRO ANIMATIONS @keyframes macroAnimation { from { opacity: 0; }; to { opacity: 1; }; } .m-uix_macroAnimation(@iteration) { animation: macroAnimation @macroAnimationSpeed ease; animation-delay: @iteration * @macroAnimationSpeed; animation-fill-mode: backwards; } <xf:if is="{{property('uix_pageAnimation')}}"> // .uix_headerContainer {.m-uix_macroAnimation(1);} .uix_sidebarNav {.m-uix_macroAnimation(1);} .p-body-inner {.m-uix_macroAnimation(2);} .p-body-sidebar {.m-uix_macroAnimation(3);} .p-footer {.m-uix_macroAnimation(4);} </xf:if> // NODE ANIMATIONS @keyframes slideUp { from { transform: translatey(30px); opacity: 0; }; to { transform: translatey(0px); opacity: 1; }; } .m-uix_nodeAnimation(@iteration) { animation: slideUp .4s cubic-bezier(0.4, 0, 0.2, 1); animation-delay: (@iteration * .15s) + (@macroAnimationSpeed * 2); animation-fill-mode: backwards; } .uix_nodeLoop (@i) when (@i > 0) { &:nth-child(@{i}) { .m-uix_nodeAnimation(@i) } .uix_nodeLoop(@i - 1); } <xf:if is="property('uix_nodeAnimations')"> .block--category { .uix_nodeLoop(15); } </xf:if> // SIDEBAR ANIMATIONS @sideNavItemDelay: .05s; @keyframes scootRight { from { transform: translatex(-30px); opacity: 0; }; to { transform: translatex(0px); opacity: 1; }; } .m-uix_sideNavAnimation(@iteration, @offset) { animation: scootRight .5s ease; animation-delay: (@iteration * @sideNavItemDelay) + (@macroAnimationSpeed) + (@offset * @sideNavItemDelay) - @sideNavItemDelay; animation-fill-mode: backwards; } .uix_sideNavLoop (@i) when (@i > 0) { &:nth-child(@{i}) { .uix_sideNavItemLoop(15); } .uix_sideNavLoop(@i - 1); } .uix_sideNavItemLoop (@i) when (@i > 0) { &.uix_sidebarNavList > li:nth-child(@{i}), .topic-filter-item:not(.th_topics_clearTopics):nth-child(@{i}) { .m-uix_sideNavAnimation(@i, @i); } .uix_sideNavItemLoop(@i - 1); } <xf:if is="{{property('uix_sideNavigationAnimation')}}"> .uix_sidebarNav__inner .uix_sidebar--scroller > * { .uix_sideNavLoop(15); } </xf:if> // SIDEBAR ANIMATION <xf:if is="{{property('uix_sidebarWidgetAnimations')}}"> @sidebarItemDelay: .1s; @keyframes scootLeft { from { transform: translatex(30px); opacity: 0; }; to { transform: translatex(0px); opacity: 1; }; } .m-uix_sidebarAnimation(@iteration) { animation: scootLeft .5s ease; animation-delay: (@iteration * @sidebarItemDelay) + (@macroAnimationSpeed * 3); animation-fill-mode: backwards; animation-iteration-count: 1; } .uix_sidebarLoop (@i) when (@i > 0) { &:nth-child(@{i}) { .m-uix_sidebarAnimation(@i) } .uix_sidebarLoop(@i - 1); } <xf:if is="{{ property('uix_stickySidebar') }} != 'sticky'"> // sticky kit breaks this animation .uix_sidebarInner .block { .uix_sidebarLoop(15); } </xf:if> </xf:if> // DISCUSSION LIST .uix_scootUpLoop (@i) when (@i > 0) { &:nth-child(@{i}) { animation: slideUp .3s ease; animation-delay: (@i * .05s) + (@macroAnimationSpeed * 2); animation-fill-mode: backwards; } .uix_scootUpLoop(@i - 1); } <xf:if is="{{property('uix_discussionListAnimation')}}"> .structItemContainer .structItem { .uix_scootUpLoop(20); } </xf:if> <xf:if is="{{property('uix_messageAnimation')}}"> .block--messages .block-body > .message--post { .uix_scootUpLoop(20); } // ARTICLES LIST .xpress_articleList .article { .uix_scootUpLoop(20); } </xf:if> } </xf:if>]]>

</template>


-<template title="uix_searchComponent.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[.p-quickSearch .input { color: @xf-uix_searchBar--color; &::placeholder {color: @xf-uix_searchBar--color;} } body .uix_searchBar { display: inline-flex; @media (min-width: @xf-uix_search_maxResponsiveWidth) { position: relative; } flex-shrink: 10; <xf:if is="!property('uix_searchButton')"> .uix_searchIcon {pointer-events: none;} </xf:if> @media (max-width: @xf-uix_search_maxResponsiveWidth) { <xf:if is="property('uix_searchPosition') == 'navigationLeft'"> order: 1; </xf:if> } @media (min-width: {{ property('uix_search_maxResponsiveWidth') + 1 }}px ) { max-width: @xf-uix_searchBarWidth; width: 1000px; display: flex; // min-width: @xf-uix_searchBarWidth; <xf:if is="property('uix_searchPosition') == 'navigationLeft'"> margin: 0 @xf-paddingMedium; <xf:else /> margin-left: .5em; </xf:if> } .uix_searchBarInner { display: inline-flex; pointer-events: none; align-items: center; left: 20px; right: 20px; justify-content: flex-end; bottom: 0; top: 0; transition: ease-in background-color .3s; flex-grow: 1; left: 0px; right: 0px; @media (min-width: @xf-uix_search_maxResponsiveWidth) { <xf:if is="property('uix_searchPosition') == 'navigationLeft'"> width: 100%; </xf:if> } .uix_searchIcon { position: absolute; bottom: 0; top: 0; <xf:if is="!property('uix_searchButton')"> left: 0; <xf:else /> right: 0; </xf:if> } <xf:if is="property('uix_searchIconBehavior') == 'expandMobile'"> @media (max-width: min(@xf-responsiveMedium, @xf-uix_search_maxResponsiveWidth) ) { position: absolute; } <xf:elseif is="property('uix_searchIconBehavior') == 'expand'" /> @media (max-width: @xf-uix_search_maxResponsiveWidth) { position: absolute; } </xf:if> .uix_searchForm { display: inline-flex; align-items: center; transition: ease-in flex-grow .3s, ease-in max-width .3s, ease-in background-color .2s; flex-grow: 0; max-width: @xf-uix_searchBarWidth; width: 100%; pointer-events: all; position: relative; .xf-uix_searchBar(); &.uix_searchForm--focused { .xf-uix_searchBarFocus(); .input { &::placeholder {color: @xf-uix_searchBarPlaceholderFocusColor;} } i {color: @xf-uix_searchIconFocusColor;} } .uix_search--settings i, .uix_search--close i {display: none;} i { .xf-uix_searchIcon(); height: @xf-uix_searchBarHeight; display: inline-flex; align-items: center; transition: ease-in color .2s; } .input { height: @xf-uix_searchBarHeight; border: none; transition: ease-in color .2s; background: none; &::placeholder {color: @xf-uix_searchBarPlaceholderColor;} color: inherit; <xf:if is="!property('uix_searchButton')"> text-indent: 30px; </xf:if> } } } .p-navgroup-link {display: none;} @media(max-width: @xf-uix_search_maxResponsiveWidth) { .uix_searchBarInner .uix_searchForm {max-width: 0; overflow: hidden; border: none;} } <xf:if is="property('uix_searchIconBehavior') != 'expandMobile'"> @media (max-width: @xf-uix_search_maxResponsiveWidth) { .p-navgroup-link {display: inline-flex;} .minimalSearch--detailed & .p-navgroup-link {display: inline-flex;} } <xf:elseif is="property('uix_searchIconBehavior') == 'expandMobile'" /> @media(max-width: @xf-uix_search_maxResponsiveWidth) and (min-width: @xf-responsiveMedium) { .p-navgroup-link {display: inline-flex;} .p-navgroup-link.uix_searchIconTrigger {display: none;} } @media (max-width: @xf-uix_search_maxResponsiveWidth) and (max-width: @xf-responsiveMedium) { .p-navgroup-link.uix_searchIconTrigger {display: inline-flex;} .p-navgroup-link {display: none;} .minimalSearch--detailed & .p-navgroup-link.uix_searchIconTrigger {display: none;} .minimalSearch--detailed & .p-navgroup-link {display: inline-flex;} } </xf:if> } .uix_searchBar .uix_searchDropdown__menu { display: none; position: absolute; top: @xf-uix_searchBarHeight; right: 0; opacity: 0; width: @xf-uix_searchBarWidth; max-width: @xf-uix_searchBarWidth; @media(max-width: @xf-uix_search_maxResponsiveWidth) { width: 100%; max-width: 100%; } &.uix_searchDropdown__menu--active { display: block; opacity: 1; pointer-events: all; transform: translateY(0); } [name="constraints"] { flex-grow: 1 !important; widxth: auto !important; } } .uix_search--submit:hover {cursor: pointer;} .uix_search--close { cursor: pointer; } @media(max-width: @xf-uix_search_maxResponsiveWidth) { .minimalSearch--active .uix_searchBar .uix_searchBarInner { position: absolute; } .minimalSearch--active .uix_searchBar .uix_searchBarInner .uix_searchForm { flex-grow: 1; display: inline-flex !important; padding: 0 @xf-paddingMedium; max-width: 100%; } .minimalSearch--active .uix_searchBar .uix_searchBarInner .uix_searchForm { i.uix_icon { display: inline-block; padding: 0; line-height: @xf-uix_searchBarHeight; } .uix_searchIcon i {display: none;} .uix_searchInput {text-indent: 0;} } .p-navgroup-link--search, .uix_sidebarCanvasTrigger, .p-navgroup-link {transition: ease opacity .2s .3s; opacity: 1;} .minimalSearch--active { .p-navgroup-link--search, .uix_sidebarCanvasTrigger, .p-navgroup-link { opacity: 0; transition: ease opacity .2s; pointer-events: none; } // .uix_searchBar {position: static;} } @media(max-width: @xf-uix_search_maxResponsiveWidth) { .p-nav-inner > * {transition: ease-in opacity .2s; opacity: 1;} .minimalSearch--active.p-nav-inner > *:not(.uix_searchBar), .minimalSearch--active.p-nav-inner .p-account, .minimalSearch--active.p-nav-inner .uix_searchBar .uix_searchIconTrigger, .minimalSearch--active.p-nav-inner .p-discovery > *:not(.uix_searchBar) {opacity: 0;} .minimalSearch--active.p-nav-inner .p-discovery, .minimalSearch--active.p-nav-inner .p-nav-opposite {opacity: 1;} } <xf:if is="property('uix_searchPosition') == 'navigation'"> .p-nav-inner > * {transition: ease-in opacity .2s; opacity: 1;} .minimalSearch--active.p-nav-inner > *, .minimalSearch--active.p-nav-inner .p-account, .minimalSearch--active.p-nav-inner .uix_searchBar .uix_searchIconTrigger, .minimalSearch--active.p-nav-inner .p-discovery > *:not(.uix_searchBar) {opacity: 0;} .minimalSearch--active.p-nav-inner .p-discovery, .minimalSearch--active.p-nav-inner .p-nav-opposite {opacity: 1;} </xf:if> <xf:if is="property('uix_searchPosition') == 'navigationLeft'"> .p-nav-inner > *:not(.uix_searchBar), .p-nav-inner .uix_searchBar .uix_searchIconTrigger {transition: ease-in opacity .2s; opacity: 1;} .minimalSearch--active.p-nav-inner > *:not(.uix_searchBar), .minimalSearch--active.p-nav-inner .p-account, .minimalSearch--active.p-nav-inner .uix_searchBar .uix_searchIconTrigger, .minimalSearch--active.p-nav-inner .p-discovery, .minimalSearch--active.p-nav-inner .p-nav-opposite {opacity: 0;} </xf:if> <xf:if is="property('uix_searchPosition') == 'tablinks'"> .p-sectionLinks .pageContent > * {transition: ease opacity .2s; opacity: 1;} .minimalSearch--active.p-sectionLinks .pageContent > * {opacity: 0;} .p-sectionLinks .pageContent .uix_searchBar {opacity: 1;} .minimalSearch--active.p-sectionLinks .p-discovery, .minimalSearch--active.p-sectionLinks .p-nav-opposite {opacity: 1;} </xf:if> <xf:if is="property('uix_searchPosition') == 'header'"> <xf:if is="property('uix_viewportShowLogoBlock') == '100%'"> .p-header-content > * {transition: ease opacity .2s; opacity: 1;} .minimalSearch--active.p-header-content > *:not(.p-nav-opposite) {opacity: 0;} .minimalSearch--active.p-header-content .uix_searchBar {opacity: 1;} <xf:else /> @media (min-width: @xf-uix_viewportShowLogoBlock) { .p-header-content > * {transition: ease opacity .2s; opacity: 1;} .minimalSearch--active.p-header-content > *:not(.p-nav-opposite) {opacity: 0;} .minimalSearch--active.p-header-content .uix_searchBar {opacity: 1;} } </xf:if> </xf:if> <xf:if is="property('uix_searchPosition') == 'staffBar'"> .p-staffBar .pageContent > * {transition: ease opacity .2s; opacity: 1;} .minimalSearch--active.p-staffBar .pageContent > * {opacity: 0;} .minimalSearch--active.p-staffBar .pageContent .uix_searchBar {opacity: 1;} .minimalSearch--active.p-staffBar .p-discovery, .minimalSearch--active.p-staffBar .p-nav-opposite {opacity: 1;} </xf:if> }]]>

</template>


-<template title="uix_socialMedia" version_string="2.1.2 Patch Level 3" version_id="2010293" addon_id="" type="public">

<![CDATA[<xf:css src="uix_socialMedia.less" /> <ul class="uix_socialMedia"> <xf:if is="$xf.options.th_facebookUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('facebook') }}" target="_blank" href="{$xf.options.th_facebookUrl_uix}"> <xf:fa icon="fa-facebook" class="fab uix_icon uix_icon--facebook" /> </a></li> </xf:if> <xf:if is="$xf.options.th_deviantArtUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_deviantArt') }}" target="_blank" href="{$xf.options.th_deviantArtUrl_uix}"> <xf:fa icon="fa-deviantart" class="fab mdi mdi-deviantart" /> </a></li> </xf:if> <xf:if is="$xf.options.th_discordUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('option.th_discordUrl_uix') }}" target="_blank" href="{$xf.options.th_discordUrl_uix}"> <xf:fa icon="fa-discord" class="fab mdi mdi-discord" /> </a></li> </xf:if> <xf:if is="$xf.options.th_flickrUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('option.uix_flickr') }}" target="_blank" href="{$xf.options.th_flickrUrl_uix}"> <xf:fa icon="fa-flickr" class="fab uix_icon uix_icon--flickr" /> </a></li> </xf:if> <xf:if is="$xf.options.th_gitHubUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_github') }}" target="_blank" href="{$xf.options.th_gitHubUrl_uix}"> <xf:fa icon="fa-github-alt" class="fab uix_icon uix_icon--github" /> </a></li> </xf:if> <xf:if is="$xf.versionId >= 2010010 && $xf.options.th_googlePlus_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('google_plus') }}" target="_blank" href="{$xf.options.th_googlePlus_uix}"> <xf:fa icon="fa-google-plus-g" class="fab uix_icon uix_icon--google-plus" /> </a></li> </xf:if> <xf:if is="$xf.options.th_instagramUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_instagram') }}" target="_blank" href="{$xf.options.th_instagramUrl_uix}"> <xf:fa icon="fa-instagram" class="fab uix_icon uix_icon--instagram" /> </a></li> </xf:if> <xf:if is="$xf.options.th_linkedInUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_linkedin') }}" target="_blank" href="{$xf.options.th_linkedInUrl_uix}"> <xf:fa icon="fa-linkedin" class="fab uix_icon uix_icon--linkedin" /> </a></li> </xf:if> <xf:if is="$xf.options.th_pinterestUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('pinterest') }}" target="_blank" href="{$xf.options.th_pinterestUrl_uix}"> <xf:fa icon="fa-pinterest" class="fab uix_icon uix_icon--pinterest" /> </a></li> </xf:if> <xf:if is="$xf.options.th_redditUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('reddit') }}" target="_blank" href="{$xf.options.th_redditUrl_uix}"> <xf:fa icon="fa-reddit" class="fab uix_icon uix_icon--reddit" /> </a></li> </xf:if> <xf:if is="$xf.options.th_steamUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_steam') }}" target="_blank" href="{$xf.options.th_steamUrl_uix}"> <xf:fa icon="fa-steam" class="fab uix_icon uix_icon--steam" /> </a></li> </xf:if> <xf:if is="$xf.options.th_tumblrUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('tumblr') }}" target="_blank" href="{$xf.options.th_tumblrUrl_uix}"> <xf:fa icon="fa-tumblr" class="fab uix_icon uix_icon--tumblr" /> </a></li> </xf:if> <xf:if is="$xf.options.th_twitchUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_twitch') }}" target="_blank" href="{$xf.options.th_twitchUrl_uix}"> <xf:fa icon="fa-twitch" class="fab uix_icon uix_icon--twitch" /> </a></li> </xf:if> <xf:if is="$xf.options.th_twitterUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('twitter') }}" target="_blank" href="{$xf.options.th_twitterUrl_uix}"> <xf:fa icon="fa-twitter" class="fab uix_icon uix_icon--twitter" /> </a></li> </xf:if> <xf:if is="$xf.options.th_youtubeUrl_uix"> <li><a data-xf-init="tooltip" title="{{ phrase('uix_youtube') }}" target="_blank" href="{$xf.options.th_youtubeUrl_uix}"> <xf:fa icon="fa-youtube" class="fab uix_icon uix_icon--youtube" /> </a></li> </xf:if> </ul>]]>

</template>


-<template title="uix_tabBar" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:macro name="uix_tabBar"> <xf:if is="$xf.visitor.user_id"> <div class="uix_tabBar"> <div class="uix_tabList"> <a href="{{ link('account') }}" class="uix_tabItem"> <xf:fa icon="fa-user" class="uix_icon uix_icon--user" /> <div class="uix_tabLabel">{{ phrase('thuix_account')}}</div> </a> <a href="{{ link('whats-new') }}" class="uix_tabItem"> <xf:fa icon="fa-comment-alt-exclamation" class="uix_icon uix_icon--comment-alert" /> <div class="uix_tabLabel">{{ phrase('whats_new')}}</div> </a> <a href="{{ link('conversations') }}" data-xf-click="overlay" data-badge="{$xf.visitor.conversations_unread|number}" class="uix_tabItem js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}"> <xf:fa icon="fa-inbox" class="uix_icon uix_icon--inbox" /> <div class="uix_tabLabel">{{ phrase('inbox')}}</div> </a> <a href="{{ link('account/alerts') }}" data-xf-click="overlay" data-badge="{$xf.visitor.alerts_unread|number}" class="uix_tabItem js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unread ? ' badgeContainer--highlighted' : '' }}"> <xf:fa icon="fa-bell" class="uix_icon uix_icon--alert" /> <div class="uix_tabLabel">{{ phrase('alerts')}}</div> </a> </div> </div> </xf:if> </xf:macro>]]>

</template>


-<template title="uix_thirdParty.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[// Featured Threads .message.thfeature { .message-body {padding: 0;} .message-attribution {margin-bottom: 0;} .message-footer {padding-top: @xf-messagePadding;} } // Topics .th_topics_clearTopics { i:before { .m-faBase(); .m-faContent(@fa-var-window-close); <xf:macro template="uix_icons.less" name="content" arg-icon="close" /> } } .topic-filter-item .thTopicAction { &--add { &:before { <xf:macro name="content" template="uix_icons.less" arg-icon="\f131" /> } } &--remove { &:before { <xf:macro name="content" template="uix_icons.less" arg-icon="\f12e" /> } } } // Reactions <xf:if is="property('uix_visitorPanelIcons')"> .reacts_total_text dt { font-size: 0; &:before { <xf:macro name="content" template="uix_icons.less" arg-icon="\f784" /> font-size: @xf-fontSizeSmall; line-height: inherit; } } </xf:if> // Nodes .node-footer--actions { .fa.fa-bookmark-o:before { <xf:macro name="content" template="uix_icons.less" arg-icon="\f0c3" /> } .fa.fa-bookmark:before { <xf:macro name="content" template="uix_icons.less" arg-icon="\f0c0" /> } .fa.fa-eye-slash:before { <xf:macro name="content" template="uix_icons.less" arg-icon="\f209" /> } .fa.fa-eye:before { <xf:macro name="content" template="uix_icons.less" arg-icon="watched" /> } } <xf:if is="!property('th_enableGrid_nodes')"> .uix_nodeList .block-body {box-shadow: @xf-uix_elevation1;} </xf:if> <xf:if is="property('th_enableGrid_nodes')"> .node + .node {border: none;} .uix_nodeList .block-container .node-footer--more a:before { .m-faBase(); .m-faContent(@fa-var-arrow-right); <xf:macro name="content" template="uix_icons.less" arg-icon="arrow-right" /> font-size: @xf-uix_iconSize; } .uix_nodeList .block-container .node-footer--createThread:before { .m-faBase(); .m-faContent(@fa-var-comment-alt-plus); <xf:macro name="content" template="uix_icons.less" arg-icon="new-thread" /> font-size: @xf-uix_iconSize; } .thNodes__nodeList.block .block-container .th_nodes--below-lg .node-extra {padding-top: 0;} .thNodes__nodeList.block .block-container .node-body { border: none; box-shadow: @xf-uix_elevation1; } html .thNodes__nodeList .block-container { .node-footer--more a:before { .m-faBase(); .m-faContent(@fa-var-arrow-right); <xf:macro name="content" template="uix_icons.less" arg-icon="arrow-right" /> font-size: 18px; } .node-footer--createThread:before { .m-faBase(); .m-faContent(@fa-var-plus); <xf:macro name="content" template="uix_icons.less" arg-icon="plus" /> font-size: 18px; } } </xf:if> // XenPorta .porta-article-item .block-body.message-inner {display: flex;} .porta-articles-above-full {margin-bottom: @xf-elementSpacer;} // resource manager .resourceBody .actionBar { padding: 0; margin: 0; } .resourceBody-main .bbWrapper { margin-bottom: @xf-messagePadding; } // post comments .block--messages .message .thpostcomments_commentsContainer .message { .message-actionBar { padding-top: 0; border-top: 0; } .message-attribution { padding-top: 0; padding-bottom: @xf-paddingSmall; } }]]>

</template>


-<template title="uix_welcomeSection" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:macro name="welcomeSection" arg-location="!" arg-showWelcomeSection="{{ false }}"> <xf:if is="$showWelcomeSection"> <xf:if is="$location == property('uix_welcomeSectionLocation')"> <xf:css src="uix_welcomeSection.less" /> <div class="uix_welcomeSection"> <div class="uix_welcomeSection__inner"> <div class="media__container"> <xf:if is="property('uix_welcomeSection__icon')"> <div class="media__object media--left"> <span class="uix_welcomeSection__icon"><i class="uix_icon {{ property('uix_welcomeSection__icon')}}"></i></span> </div> </xf:if> <div class="media__body"> <xf:if is="property('uix_welcomeSection__title')"><div class="uix_welcomeSection__title">{{ property('uix_welcomeSection__title')}}</div></xf:if> <xf:if is="property('uix_welcomeSection__text')"><div class="uix_welcomeSection__text">{{ property('uix_welcomeSection__text')}}</div></xf:if> <xf:if is="property('uix_welcomeSection__url')"><xf:button href="{{ link(property('uix_welcomeSection__url')) }}" class="button--cta">{{ property('uix_welcomeSection__buttonText')}}</xf:button></xf:if> </div> </div> </div> </div> </xf:if> </xf:if> </xf:macro>]]>

</template>


-<template title="uix_welcomeSection.less" version_string="" version_id="0" addon_id="" type="public">

<![CDATA[<xf:if is="{{ property('uix_welcomeSectionLocation') }} == 'header' && {{ property('uix_enableWelcomeHeaderImage')}}"> .uix_hasWelcomeSection .uix_headerContainer { background-image: @xf-uix_welcomeSection__style--background-image; .uix_welcomeSection:before {display: none;} > *:not(.p-navSticky), .p-nav, .p-sectionLinks { background: none; background: @xf-uix_welcomeSectionOverlay; } } </xf:if> .uix_headerContainer { .uix_welcomeSection { <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> .uix_welcomeSection__inner { <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> } } } .uix_welcomeSection { position: relative; .xf-uix_welcomeSection__style(); <xf:if is="property('uix_welcomeSectionLocation') == 'header'"> margin-bottom: 0; </xf:if> .uix_welcomeSection__inner { position: relative; .xf-uix_welcomeSectionInner(); } .uix_welcomeSection__title {.xf-uix_welcomeSectionTitle__style();} .uix_welcomeSection__text{.xf-uix_welcomeSectionText__style();} .uix_welcomeSection__icon {.xf-uix_welcomeSectionIcon__style();} &:before { content: ''; position: absolute; left: 0; right: 0; bottom: 0; top: 0; background: @xf-uix_welcomeSectionOverlay; } }]]>

</template>


-<template title="watched_forums_list" version_string="2.0.0 Release Candidate 1" version_id="2000051" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('watched_forums') }}</xf:title> <xf:css src="node_list.less" /> <xf:if is="$watchedForums is not empty"> <xf:form action="{{ link('watched/forums/update') }}" ajax="true" class="block" autocomplete="off"> <div class="block-outer"> <div class="block-outer-opposite"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('manage_watched_forums') }}</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('manage_watched_forums') }}</h3> <!--[XF:manage_menu:top]--> <a href="{{ link('watched/forums/manage', null, {'state': 'watch_no_email'}) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('disable_email_notification') }}</a> <a href="{{ link('watched/forums/manage', null, {'state': 'delete'}) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('stop_watching_forums') }}</a> <!--[XF:manage_menu:bottom]--> </div> </div> </div> </div> <div class="block-container"> <div class="block-body"> <xf:foreach loop="$nodeTree.getFlattened()" key="$id" value="$treeEntry"> <xf:set var="$node" value="{$treeEntry.record}" /> <xf:set var="$forumWatch" value="{$watchedForums.{$node.node_id}}" /> <xf:if is="$forumWatch"> <xf:set var="$bonusInfo"> <ul class="listInline listInline--bullet"> <xf:if is="$forumWatch.notify_on == 'thread'"> <li>{{ phrase('new_threads') }}</li> <xf:elseif is="$forumWatch.notify_on == 'message'" /> <li>{{ phrase('new_messages') }}</li> </xf:if> <xf:if is="$forumWatch.send_alert"><li>{{ phrase('alerts') }}</li></xf:if> <xf:if is="$forumWatch.send_email"><li>{{ phrase('emails') }}</li></xf:if> </ul> </xf:set> <xf:macro template="node_list_forum" name="forum" arg-node="{$node}" arg-extras="{$nodeExtras.{$node.node_id}}" arg-children="{$nodeTree.{$id}.children}" arg-childExtras="{$nodeExtras}" arg-depth="2" arg-chooseName="node_ids" arg-bonusInfo="{$bonusInfo}" /> </xf:if> </xf:foreach> </div> <div class="block-footer block-footer--split"> <span class="block-footer-counter"></span> <span class="block-footer-select"><xf:checkbox standalone="true"> <xf:option class="input--inline" check-all="< .block-container" label="{{ phrase('select_all') }}" /> </xf:checkbox></span> <span class="block-footer-controls"> <xf:select name="action" class="input--inline"> <xf:option>{{ phrase('with_selected...') }}</xf:option> <!--[XF:action_menu:top]--> <xf:option value="email">{{ phrase('enable_email_notification') }}</xf:option> <xf:option value="no_email">{{ phrase('disable_email_notification') }}</xf:option> <xf:option value="alert">{{ phrase('enable_alerts') }}</xf:option> <xf:option value="no_alert">{{ phrase('disable_alerts') }}</xf:option> <xf:option value="delete">{{ phrase('stop_watching') }}</xf:option> <!--[XF:action_menu:bottom]--> </xf:select> <xf:button type="submit">{{ phrase('go') }}</xf:button> </span> </div> </div> </xf:form> <xf:else /> <div class="blockMessage">{{ phrase('you_not_watching_any_forums') }}</div> </xf:if>]]>

</template>


-<template title="watched_threads_manage" version_string="2.1.0 Release Candidate 1" version_id="2010051" addon_id="XF" type="public">

<![CDATA[<xf:title>{{ phrase('manage_watched_threads') }}</xf:title> <xf:form action="{{ link('watched/threads/manage', null, {'state': $state}) }}" class="block" ajax="true"> <div class="block-container"> <div class="block-row"> <xf:inforow rowtype="confirm"> <xf:if is="$state == 'delete'"> {{ phrase('you_sure_you_want_to_stop_watching_all_threads') }} <xf:else /> {{ phrase('you_sure_you_want_to_update_notification_settings_for_all_threads') }} </xf:if> </xf:inforow> </div> <xf:submitrow icon="notificationsOff" rowtype="simple" /> </div> </xf:form>]]>

</template>


-<template title="widget_EWRporta_features.less" version_string="2.1.0.1" version_id="2101" addon_id="" type="public">

<![CDATA[.porta-features { .xf-blockBorder(); border-radius: @xf-blockBorderRadius; position: relative; .porta-features-item { background-position: center center; background-repeat: no-repeat; background-size: auto 100%; >a { display: block; position: relative; z-index: 90; } .porta-features-summary { position: absolute; bottom: 0; left: 0; right: 0; background-color: rgba(0,0,0,0.5); padding: 15px 20px 20px; color: white; >div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .title { font-size: 1.5em; font-weight: bold; } } .porta-features-media { position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: 80; margin: @xf-EWRporta_feature_media_margin auto; width: @xf-EWRporta_feature_media_width; height: (@xf-EWRporta_feature_height - (@xf-EWRporta_feature_media_margin * 2)); } } .has-media .porta-features-summary { display: none; } .has-media .bx-controls-volume { display: initial; } } .porta-features-fix { height: @xf-EWRporta_feature_height; overflow: hidden; } @media (max-width: @xf-responsiveWide) { .porta-features-fix { height: @xf-EWRporta_feature_wide; } .porta-features .porta-features-item .porta-features-media { margin: (@xf-EWRporta_feature_media_margin / 2) auto; width: @xf-EWRporta_feature_media_wide; height: (@xf-EWRporta_feature_wide - @xf-EWRporta_feature_media_margin); } } @media (max-width: @xf-responsiveMedium) { .porta-features-fix { height: @xf-EWRporta_feature_medium; } .porta-features .porta-features-item .porta-features-media { margin: 0 auto; width: @xf-EWRporta_feature_media_medium; height: @xf-EWRporta_feature_medium; } } @media (max-width: @xf-responsiveNarrow) { .porta-features-fix { height: @xf-EWRporta_feature_narrow; } .porta-features .porta-features-item .porta-features-media { width: @xf-EWRporta_feature_media_narrow; height: @xf-EWRporta_feature_narrow; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .porta-features { margin-left: -@xf-pageEdgeSpacer / 2; margin-right: -@xf-pageEdgeSpacer / 2; } } /*---------------------------------------*/ /* BXSLIDER LAYOUT */ /*---------------------------------------*/ /* ITEM CONTROLS */ .porta-features { .bx-pager { position: absolute; top: 10px; text-align: center; width: 100%; } .bx-pager .bx-pager-item { position: relative; z-index: 100; display: inline-block; } .bx-pager.bx-default-pager a { background: rgba(128, 128, 128, 0.5); margin: 0 3px; border-radius: 8px; display: block; text-indent: -9999px; box-shadow: 0px 0px 2px #FFF inset; width: 16px; height: 16px; } .bx-pager.bx-default-pager a:hover { background-color: rgb(128, 128, 128); } .bx-pager.bx-default-pager a.active { background-color: rgb(0, 0, 0); } } /* PREV/NEXT CONTROLS */ .porta-features { .bx-controls-direction { } .bx-controls-direction a { background-image: url('styles/8wayrun/porta/_slider.png'); background-repeat: no-repeat; margin-top: -16px; position: absolute; text-indent: -9999px; z-index: 100; width: 32px; height: 32px; } .bx-controls-direction .bx-prev { top: 50%; left: 10px; } .bx-controls-direction .bx-next { top: 50%; right: 10px; } .bx-controls-direction .bx-prev { background-position: 0 -32px; } .bx-controls-direction .bx-prev:hover { background-position: 0 0; } .bx-controls-direction .bx-next { background-position: -32px -32px; } .bx-controls-direction .bx-next:hover { background-position: -32px 0; } .bx-controls-direction .disabled { display: none; } } /* START/STOP CONTROLS */ .porta-features { .bx-controls-auto { position: absolute; top: 10px; right: 10px; z-index: 100; } .bx-controls-auto a { background-image: url('styles/8wayrun/porta/_slider.png'); background-repeat: no-repeat; display: block; text-indent: -9999px; width: 32px; height: 32px; } .bx-controls-auto .active { display: none; } .bx-controls-auto .bx-start { background-position: -64px -32px; } .bx-controls-auto .bx-start:hover { background-position: -64px 0; } .bx-controls-auto .bx-stop { background-position: -96px -32px; } .bx-controls-auto .bx-stop:hover { background-position: -96px 0; } } /* VOLUME BUTTON */ .porta-features { .bx-controls-volume { display: none; position: absolute; right: 10px; bottom: 10px; z-index: 100; } .bx-controls-volume a { background-image: url('styles/8wayrun/porta/_slider.png'); background-repeat: no-repeat; display: block; text-indent: -9999px; width: 64px; height: 64px; } .bx-controls-volume .active { display: none; } .bx-controls-volume .bx-unmute { background-position: -128px 0; } .bx-controls-volume .bx-unmute:hover { background-position: -192px 0; } .bx-controls-volume .bx-mute { background-position: -192px 0; } .bx-controls-volume .bx-mute:hover { background-position: -128px 0; } } /* PROGRESS BAR */ .porta-features { .bx-progress { background-color: red; border-top: 1px solid black; position: absolute; bottom: 0; z-index: 100; width: 0; height: 5px; } }]]>

</template>


-<template title="widget_share_page" version_string="2.1.0" version_id="2010070" addon_id="XF" type="public">

<![CDATA[<xf:if contentcheck="true"> <div class="block"{{ widget_data($widget) }}> <div class="block-container"> <h3 class="block-minorHeader">{$title}</h3> <div class="block-body block-row" style="text-align: center;"> <xf:contentcheck> <xf:if is="{{ property('uix_shareWidgetModal') }}"> <xf:if contentcheck="true"> <a data-xf-click="overlay" data-target=".uix_shareWidgetModal" class="button button--primary"><xf:fa icon="fa-share" class="mdi mdi-share" /> Share this page</a> <div style="display: none"> <div class="uix_shareWidgetModal"> <div class="overlay-title">{{ phrase('share') }}</div> <div class="block-container"> <div class="block-body"> <div class="block-row"> <xf:contentcheck> <xf:macro template="share_page_macros" name="buttons" arg-iconic="{$options.iconic}" /> </xf:contentcheck> </div> </div> </div> </div> </div> </xf:if> <xf:else /> <xf:macro template="share_page_macros" name="buttons" arg-iconic="{$options.iconic}" /> </xf:if> </xf:contentcheck> </div> </div> </div> </xf:if>]]>

</template>


-<template title="xfmg_album_list.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[.itemList-itemTypeIcon { &.itemList-itemTypeIcon--album { &::after { .m-faContent(@fa-var-folder-open); <xf:macro name="content" template="uix_icons.less" arg-icon="folder" /> } } } {{ include('xfmg_item_list.less') }}]]>

</template>


-<template title="xfmg_album_view" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[<xf:title page="{$page}">{$album.title}</xf:title> <xf:h1 hidden="true" /> <xf:css src="xfmg_album_view.less" /> <xf:macro template="xfmg_page_macros" name="xfmg_page_options" arg-album="{$album}" arg-category="{$album.Category}" /> <xf:set var="$descSnippet" value="{{ snippet($mediaItem.description, 250) }}" /> <xf:macro template="metadata_macros" name="metadata" arg-description="{$descSnippet}" arg-shareUrl="{{ link('canonical:media/albums', $album) }}" arg-imageUrl="{$album.getThumbnailUrl(true)}" arg-canonicalUrl="{{ link('canonical:media/albums', $album, {'page': $page}) }}" /> <xf:page option="ldJsonHtml"> <script type="application/ld+json"> {$album.structured_data|json(true)|raw} </script> </xf:page> <xf:macro template="xfmg_media_list_macros" name="media_create_message" arg-transcoding="{$transcoding}" arg-pendingApproval="{$pendingApproval}" /> <xf:breadcrumb source="$album.getBreadcrumbs(false)" /> <xf:if is="$album.canAddMedia()"> <xf:pageaction> <xf:button href="{{ link('media/albums/add', $album) }}" class="button--cta" icon="add"> {{ phrase('xfmg_add_media') }} </xf:button> </xf:pageaction> </xf:if> <xf:if contentcheck="true"> <div class="block"> <div class="block-outer"> <dl class="blockStatus"> <dt>{{ phrase('status') }}</dt> <xf:contentcheck> <xf:if is="$album.album_state == 'deleted'"> <dd class="blockStatus-message blockStatus-message--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$album.DeletionLog}" /> </dd> <xf:elseif is="$album.album_state == 'moderated'" /> <dd class="blockStatus-message blockStatus-message--moderated"> {{ phrase('awaiting_approval_before_being_displayed_publicly') }} </dd> </xf:if> <xf:if is="$album.warning_message"> <dd class="blockStatus-message blockStatus-message--warning"> {$album.warning_message} </dd> </xf:if> <xf:if is="$album.isIgnored()"> <div class="blockStatus-message blockStatus-message--ignored"> {{ phrase('you_are_ignoring_content_by_this_member') }} </div> </xf:if> </xf:contentcheck> </dl> </div> </div> </xf:if> <xf:if is="$canInlineModMediaItems"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <div class="block" data-xf-init="{{ $canInlineModMediaItems ? 'inline-mod' : '' }}" data-type="xfmg_media" data-href="{{ link('inline-mod') }}"> <div class="block-outer"><xf:trim> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$totalItems}" link="media/albums" data="{$album}" params="{{ {'comment_page': ($commentPage ?: null)} + $filters }}" wrapperclass="block-outer-main" /> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$album.canRate()"> <xf:button href="{{ link('media/album-ratings/rate', $album) }}" overlay="true"> {{ phrase('leave_rating') }} </xf:button> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$canInlineModMediaItems"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> <xf:if is="$album.canUndelete() AND $album.album_state == 'deleted'"> <xf:button href="{{ link('media/albums/undelete', $album) }}" class="button--link" overlay="true"> {{ phrase('undelete') }} </xf:button> </xf:if> <xf:if is="$album.canApproveUnapprove() AND $album.album_state == 'moderated'"> <xf:button href="{{ link('media/albums/approve', $album) }}" class="button--link" overlay="true"> {{ phrase('approve') }} </xf:button> </xf:if> <xf:if is="$xf.visitor.user_id"> <xf:button href="{{ link('media/albums/mark-viewed', $album, {'date': $xf.time}) }}" class="button--link" overlay="true"> {{ phrase('xfmg_mark_viewed') }} </xf:button> </xf:if> <xf:if is="$album.canWatch()"> <xf:button href="{{ link('media/albums/watch', $album) }}" class="button--link" data-xf-click="switch-overlay" data-sk-watch="{{ phrase('watch') }}" data-sk-unwatch="{{ phrase('unwatch') }}"> <xf:if is="{$album.Watch.{$xf.visitor.user_id}}"> {{ phrase('unwatch') }} <xf:else /> {{ phrase('watch') }} </xf:if> </xf:button> </xf:if> <xf:macro template="bookmark_macros" name="button" arg-content="{$album}" arg-confirmUrl="{{ link('media/albums/bookmark', $album) }}" /> <xf:if contentcheck="true"> <div class="buttonGroup-buttonWrapper"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <xf:contentcheck> <!--[XF:album_tools_menu:top]--> <xf:if is="$album.canEdit()"> <a href="{{ link('media/albums/edit', $album) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_edit_album') }}</a> </xf:if> <xf:if is="$album.canMove()"> <a href="{{ link('media/albums/move', $album) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_move_album') }}</a> </xf:if> <xf:if is="$album.canDelete('soft')"> <a href="{{ link('media/albums/delete', $album) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_delete_album') }}</a> </xf:if> <xf:if is="$album.canViewModeratorLogs()"> <a href="{{ link('media/albums/moderator-actions', $album) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a> </xf:if> <!--[XF:album_tools_menu:before_footer]--> <xf:if is="$album.canUseInlineModeration()"> <div class="menu-footer" data-xf-init="inline-mod" data-type="xfmg_album" data-href="{{ link('inline-mod') }}" data-toggle=".js-albumInlineModToggle"> <xf:checkbox> <xf:option class="js-albumInlineModToggle" value="{$album.album_id}">{{ phrase('select_for_moderation') }}</xf:option> </xf:checkbox> </div> </xf:if> <!--[XF:album_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:trim></div> <div class="block-container"> <xf:macro template="xfmg_album_list_macros" name="list_filter_bar" arg-filters="{{ {'comment_page': ($commentPage ?: null)} + $filters }}" arg-baseLinkPath="media/albums" arg-linkData="{$album}" arg-ownerFilter="{$ownerFilter}" /> <div class="block-body"> <xf:if is="$mediaItems is not empty"> <xf:macro template="xfmg_media_list_macros" name="media_list" arg-mediaItems="{$mediaItems}" /> <xf:elseif is="$filters" /> <div class="block-row">{{ phrase('xfmg_no_media_has_been_added_to_this_album_which_matches_your_filters') }}</div> <xf:else /> <div class="block-row">{{ phrase('xfmg_no_media_has_been_added_to_this_album_yet') }}</div> </xf:if> </div> </div> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$totalItems}" link="media/albums" data="{$album}" params="{{ {'comment_page': ($commentPage ?: null)} + $filters }}" wrapperclass="block-outer-main" /> <xf:showignored wrapperclass="block-outer-opposite" /> </div> </div> <div class="block"> <div class="block-container"> <div class="block-body block-row xfmgInfoBlock"> <div class="xfmgInfoBlock-title"> <div class="contentRow"> <span class="contentRow-figure"> <xf:avatar user="$album.User" size="s" defaultname="{$album.username}" /> </span> <div class="contentRow-main"> <h1 class="contentRow-title p-title-value"> <xf:h1 /> </h1> <div class="contentRow-lesser p-description"> <ul class="listInline listInline--bullet"> <li><xf:fa icon="fa-th" title="{{ phrase('xfmg_items')|for_attr }}" /> {$album.media_count|number_short}</li> <li><xf:fa icon="fa-user" title="{{ phrase('xfmg_album_owner')|for_attr }}" /> <xf:username user="{$album.User}" defaultname="{$album.username}" class="u-concealed" /></li> <li><xf:fa icon="fa-clock" title="{{ phrase('xfmg_date_created')|for_attr }}" /> <xf:date time="{$album.create_date}" /></li> </ul> </div> </div> </div> </div> <xf:if is="$album.description"> <div class="xfmgInfoBlock-description"> <div class="bbCodeBlock bbCodeBlock--expandable"> <div class="bbCodeBlock-content"> <div class="bbCodeBlock-expandContent"> {{ structured_text($album.description) }} </div> <div class="bbCodeBlock-expandLink"><a>{{ phrase('click_to_expand') }}</a></div> </div> </div> </div> </xf:if> <div class="reactionsBar js-reactionsList {{ $album.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$album}" link="media/albums/reactions" /> </div> <xf:if contentcheck="true"> <div class="actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$album}" link="media/albums/react" list="< .block | .js-reactionsList" /> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$album.canReport()"> <a href="{{ link('media/albums/report', $album) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$album.canEdit()"> <a href="{{ link('media/albums/edit', $album) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$album.canDelete()"> <a href="{{ link('media/albums/delete', $album) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$album.canCleanSpam()"> <a href="{{ link('spam-cleaner', $album) }}" class="actionBar-action actionBar-action--spam actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('spam') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() AND $album.ip_id"> <a href="{{ link('media/albums/ip', $album) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$album.canWarn()"> <a href="{{ link('media/albums/warn', $album) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$album.warning_id AND $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $album.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </div> </div> </div> <xf:if is="$album.canViewComments()"> <div class="columnContainer"> <div class="columnContainer-comments"> <xf:macro template="xfmg_comment_macros" name="comment_list" arg-comments="{$comments}" arg-content="{$album}" arg-linkPrefix="media/album-comments" arg-link="media/albums" arg-linkParams="{{ {'page': $page} + $filters }}" arg-page="{$commentPage}" arg-perPage="{$commentsPerPage}" arg-totalItems="{$totalComments}" arg-pageParam="comment_page" arg-canInlineMod="{$canInlineModComments}" /> </div> <div class="columnContainer-sidebar"> <xf:macro name="info_sidebar" arg-album="{$album}" /> <xf:macro name="privacy_sidebar" arg-album="{$album}" arg-addUsers="{$addUsers}" arg-viewUsers="{$viewUsers}" /> <xf:macro name="share_sidebar" arg-album="{$album}" /> </div> </div> <xf:else /> <xf:sidebar key="infoSidebar"> <xf:macro name="info_sidebar" arg-album="{$album}" /> </xf:sidebar> <xf:sidebar key="privacySidebar"> <xf:macro name="privacy_sidebar" arg-album="{$album}" arg-addUsers="{$addUsers}" arg-viewUsers="{$viewUsers}" /> </xf:sidebar> <xf:sidebar key="shareSidebar"> <xf:macro name="share_sidebar" arg-album="{$album}" /> </xf:sidebar> </xf:if> <xf:macro name="info_sidebar" arg-album="{$album}"> <div class="block"> <div class="block-container"> <h3 class="block-minorHeader">{{ phrase('xfmg_album_information') }}</h3> <div class="block-body block-row"> <xf:if is="$album.Category"> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_category') }}</dt> <dd><a href="{{ link('media/categories', $album.Category) }}">{$album.Category.title}</a></dd> </dl> </xf:if> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_album_owner') }}</dt> <dd><xf:username user="{$album.User}" defaultname="{$album.username}" /></dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_date_created') }}</dt> <dd><xf:date time="{$album.create_date}" /></dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_item_count') }}</dt> <dd>{$album.media_count|number}</dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_view_count') }}</dt> <dd>{$album.view_count|number}</dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_comment_count') }}</dt> <dd>{$album.comment_count|number}</dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('rating') }}</dt> <dd> <xf:macro template="rating_macros" name="stars_text" arg-rating="{$album.rating_avg}" arg-count="{$album.rating_count}" arg-rowClass="ratingStarsRow--textBlock" /> </dd> </dl> </div> </div> </div> </xf:macro> <xf:macro name="privacy_sidebar" arg-album="!" arg-addUsers="!" arg-viewUsers="!"> <xf:if is="$album.User"> <div class="block"> <div class="block-container"> <h3 class="block-minorHeader">{{ phrase('xfmg_album_privacy') }}</h3> <div class="block-body"> <div class="block-row"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$album.User" size="s" /> </div> <div class="contentRow-main"> <h3 class="contentRow-title"><xf:username user="$album.User" rich="true" /></h3> <div class="contentRow-muted"> <dl class="pairs pairs--justified fauxBlockLink"> <dt>{{ phrase('xfmg_media_items') }}</dt> <dd> <a href="{{ link('media/users', $album.User) }}" class="fauxBlockLink-blockLink u-concealed"> {$album.User.xfmg_media_count|number} </a> </dd> </dl> <dl class="pairs pairs--justified fauxBlockLink"> <dt>{{ phrase('xfmg_albums') }}</dt> <dd> <a href="{{ link('media/albums/users', $album.User) }}" class="fauxBlockLink-blockLink u-concealed"> {$album.User.xfmg_album_count|number} </a> </dd> </dl> </div> </div> </div> </div> <div class="block-row"> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_can_view_media_items') }}</dt> <dd>{$album.getPrivacyPhrase($album.view_privacy)}</dd> </dl> <xf:if is="$album.view_privacy == 'shared' AND $viewUsers"> <ul class="listHeap"> <xf:foreach loop="$viewUsers" value="$user"> <li><xf:avatar user="$user" size="xs" /></li> </xf:foreach> </ul> </xf:if> </div> <div class="block-row"> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfmg_can_add_media_items') }}</dt> <dd>{$album.getPrivacyPhrase($album.add_privacy)}</dd> </dl> <xf:if is="$album.add_privacy == 'shared' AND $addUsers"> <ul class="listHeap"> <xf:foreach loop="$addUsers" value="$user"> <li><xf:avatar user="$user" size="xs" /></li> </xf:foreach> </ul> </xf:if> </div> </div> <xf:if is="$album.canChangePrivacy()"> <div class="block-footer"> <span class="block-footer-controls"> <xf:button href="{{ link('media/albums/change-privacy', $album) }}" class="button--small button--link" overlay="true">{{ phrase('xfmg_change_privacy') }}</xf:button> </span> </div> </xf:if> </div> </div> </xf:if> </xf:macro> <xf:macro name="share_sidebar" arg-album="!"> <xf:if contentcheck="true"> <div class="block"> <div class="block-container"> <xf:contentcheck> <xf:if contentcheck="true"> <h3 class="block-minorHeader">{{ phrase('xfmg_share_this_album') }}</h3> <div class="block-body block-row block-row--separated"> <xf:contentcheck> <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" /> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="block-body block-row block-row--separated"> <xf:contentcheck> <xf:if is="$album.thumbnail_date"> <xf:macro template="share_page_macros" name="share_clipboard_input" arg-label="{{ phrase('xfmg_copy_url_bb_code_with_thumbnail') }}" arg-text="[URL=&quot;{{ link('canonical:media/albums', $album) }}&quot;][IMG]{$album.getThumbnailUrl(true)}[/IMG][/URL]" /> </xf:if> <xf:macro template="share_page_macros" name="share_clipboard_input" arg-label="{{ phrase('xfmg_copy_gallery_bb_code') }}" arg-text="[GALLERY=album, {$album.album_id}][/GALLERY]" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:macro>]]>

</template>


-<template title="xfmg_comment_macros" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[<xf:macro name="comment_list" arg-comments="!" arg-content="!" arg-linkPrefix="!" arg-link="!" arg-linkParams="{{ {} }}" arg-page="!" arg-perPage="!" arg-totalItems="!" arg-pageParam="page" arg-canInlineMod="!"> <xf:if is="$canInlineMod"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <div class="block block--messages" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="xfmg_comment" data-href="{{ link('inline-mod') }}"> <div class="block-outer"><xf:trim> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$totalItems}" link="{$link}" data="{$content}" params="{$linkParams}" pageparam="{$pageParam}" wrapperclass="block-outer-main" /> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$canInlineMod"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:trim></div> <div class="block-container" data-xf-init="{{ $xf.options.selectQuotable ? 'select-to-quote' : '' }}" data-message-selector=".js-comment"> <div class="block-body js-replyNewCommentContainer"> <xf:if is="$comments is not empty"> <span class="u-anchorTarget" id="comments"></span> <xf:foreach loop="$comments" value="$comment"> <xf:if is="$comment.comment_state == 'deleted'"> <xf:macro name="comment_deleted" arg-comment="{$comment}" arg-content="{$content}" arg-linkPrefix="{$linkPrefix}" /> <xf:else /> <xf:macro name="comment" arg-comment="{$comment}" arg-content="{$content}" arg-linkPrefix="{$linkPrefix}" /> </xf:if> </xf:foreach> <xf:else /> <div class="blockMessage js-replyNoMessages">{{ phrase('xfmg_there_no_comments_to_display') }}</div> </xf:if> </div> </div> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$totalItems}" link="{$link}" data="{$content}" params="{$linkParams}" pageparam="{$pageParam}" wrapperclass="block-outer-main" /> <xf:showignored wrapperclass="block-outer-opposite" /> </div> </div> <xf:macro name="comment_add" arg-comments="{$comments}" arg-content="{$content}" arg-linkPrefix="{$linkPrefix}" /> </xf:macro> <xf:macro name="comment" arg-comment="!" arg-content="!" arg-linkPrefix="!"> <xf:css src="xfmg_comment.less" /> <article class="message message--simple message--comment{{ $comment.isIgnored() ? ' is-ignored' : '' }} js-comment js-inlineModContainer" data-author="{{ $comment.User.username ?: $comment.username }}" data-content="xfmg-comment-{$comment.comment_id}"> <span class="u-anchorTarget" id="xfmg-comment-{$comment.comment_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info_simple" arg-user="{$comment.User}" arg-fallbackName="{$comment.username}" /> </div> <div class="message-cell message-cell--main"> <div class="js-quickEditTarget"> <div class="message-content js-messageContent"> <header class="message-attribution message-attribution--plain"> <ul class="listInline listInline--bullet"> <li class="message-attribution-user"> <xf:avatar user="$comment.User" size="xxs" /> <h4 class="attribution"><xf:username user="$comment.User" rich="true" defaultname="{$comment.username}" /></h4> </li> <li> <a href="{{ link('media/comments', $comment) }}" class="u-concealed"><xf:date time="$comment.comment_date" /></a> </li> <xf:if is="$comment.Rating"> <li> <xf:macro template="rating_macros" name="rating" arg-row="{{ false }}" arg-readOnly="true" arg-currentRating="{$comment.Rating.rating}" arg-showSelected="false" /> </li> </xf:if> </ul> </header> <xf:if is="$comment.comment_state == 'deleted'"> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$comment.DeletionLog}" /> </div> <xf:elseif is="$comment.comment_state == 'moderated'" /> <div class="messageNotice messageNotice--moderated"> {{ phrase('this_message_is_awaiting_moderator_approval_and_is_invisible_to_normal') }} </div> </xf:if> <xf:if is="$comment.warning_message"> <div class="messageNotice messageNotice--warning"> {$comment.warning_message} </div> </xf:if> <xf:if is="$comment.isIgnored()"> <div class="messageNotice messageNotice--ignored"> {{ phrase('you_are_ignoring_content_by_this_member') }} </div> </xf:if> <div class="message-userContent"> <article class="message-body js-selectToQuote"> {{ bb_code($comment.message, 'xfmg_comment', $comment) }} <div class="js-selectToQuoteEnd">&nbsp;</div> </article> </div> <xf:if is="$comment.last_edit_date"> <div class="message-lastEdit"> <xf:if is="$comment.user_id == $comment.last_edit_user_id"> {{ phrase('last_edited:') }} <xf:date time="{$comment.last_edit_date}" /> <xf:else /> {{ phrase('last_edited_by_moderator:') }} <xf:date time="{$comment.last_edit_date}" /> </xf:if> </div> </xf:if> <xf:macro template="message_macros" name="signature" arg-user="{$comment.User}" /> </div> <div class="reactionsBar js-reactionsList {{ $comment.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$comment}" link="media/comments/reactions" /> </div> <footer class="message-footer"> <xf:if contentcheck="true"> <div class="message-actionBar actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$comment}" link="media/comments/react" list="< .js-comment | .js-reactionsList" /> <xf:if is="$content.canReplyToComment()"> <xf:set var="$quoteLink">{{ link($linkPrefix . '/comment', $content, {'quote': $comment.comment_id}) }}</xf:set> <xf:if is="$xf.options.multiQuote"> <a href="{$quoteLink}" class="actionBar-action actionBar-action--mq u-jsOnly js-multiQuote" title="{{ phrase('toggle_multi_quote_tooltip')|for_attr }}" data-message-id="{$comment.comment_id}" data-mq-action="add"> {{ phrase('quote') }} </a> </xf:if> <a href="{$quoteLink}" class="actionBar-action actionBar-action--reply" title="{{ phrase('reply_quoting_this_message')|for_attr }}" data-xf-click="quote" data-quote-href="{{ link('media/comments/quote', $comment) }}">{{ phrase('reply') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$comment.canUseInlineModeration()"> <span class="actionBar-action actionBar-action--inlineMod"> <xf:checkbox standalone="true"> <xf:option value="{$comment.comment_id}" class="js-inlineModToggle" data-xf-init="tooltip" title="{{ phrase('select_for_moderation') }}" label="{{ phrase('select_for_moderation') }}" hiddenlabel="true" /> </xf:checkbox> </span> </xf:if> <xf:if is="$comment.canReport()"> <a href="{{ link('media/comments/report', $comment) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:if is="$comment.canEdit()"> <xf:js src="xf/message.js" min="1" /> <a href="{{ link('media/comments/edit', $comment) }}" class="actionBar-action actionBar-action--edit" data-xf-click="quick-edit" data-editor-target="< .js-quickEditTarget">{{ phrase('edit') }}</a> </xf:if> <xf:if is="$comment.edit_count AND $comment.canViewHistory()"> <a href="{{ link('media/comments/history', $comment) }}" class="actionBar-action actionBar-action--history" data-xf-click="toggle" data-target="< .js-comment | .js-historyTarget">{{ phrase('history') }}</a> </xf:if> <xf:if is="$comment.canDelete()"> <a href="{{ link('media/comments/delete', $comment) }}" class="actionBar-action actionBar-action--delete" data-xf-click="overlay">{{ phrase('delete') }}</a> </xf:if> <xf:if is="$comment.canCleanSpam()"> <a href="{{ link('spam-cleaner', $comment) }}" class="actionBar-action actionBar-action--spam" data-xf-click="overlay">{{ phrase('spam') }}</a> </xf:if> <xf:if is="$xf.visitor.canViewIps() AND $comment.ip_id"> <a href="{{ link('media/comments/ip', $comment) }}" class="actionBar-action actionBar-action--ip" data-xf-click="overlay">{{ phrase('ip') }}</a> </xf:if> <xf:if is="$comment.canWarn()"> <a href="{{ link('media/comments/warn', $comment) }}" class="actionBar-action actionBar-action--warn">{{ phrase('warn') }}</a> <xf:elseif is="$comment.warning_id AND $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $comment.warning_id}) }}" class="actionBar-action actionBar-action--warn" data-xf-click="overlay">{{ phrase('view_warning') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </footer> <div class="js-historyTarget toggleTarget" data-href="trigger-href"></div> </div> </div> </div> </article> </xf:macro> <xf:macro name="comment_simple" arg-comment="!" arg-content="!"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$comment.User" size="xxs" defaultname="{$comment.username}" /> </div> <div class="contentRow-main contentRow-main--close"> <a href="{{ link('media/comments', $comment) }}">{$content.title}</a> <div class="contentRow-snippet"> {{ smilie(snippet($comment.message, 150, {'stripBbCode': true, 'stripQuote': true})) }} </div> <div class="contentRow-minor contentRow-minor--hideLinks"> <ul class="listInline listInline--bullet"> <li><xf:date time="{$comment.comment_date}" /></li> </ul> </div> </div> </div> </xf:macro> <xf:macro name="comment_deleted" arg-comment="!" arg-content="!" arg-linkPrefix="!"> <xf:css src="xfmg_comment.less" /> <section class="message message--simple message--deleted message--comment{{ $comment.isIgnored() ? ' is-ignored' : '' }} js-comment js-inlineModContainer" data-author="{{ $comment.User.username ?: $comment.username }}" data-content="xfmg-comment-{$comment.comment_id}"> <span class="u-anchorTarget" id="xfmg-comment-{$comment.comment_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info_simple" arg-user="{$comment.User}" arg-fallbackName="{$comment.username}" /> </div> <div class="message-cell message-cell--main"> <header class="message-attribution message-attribution--plain"> <ul class="listInline listInline--bullet"> <li class="message-attribution-user"> <xf:avatar user="$comment.User" size="xxs" /> <h4 class="attribution"><xf:username user="$comment.User" rich="true" defaultname="{$comment.username}" /></h4> </li> <li><xf:date time="$comment.comment_date" /></li> </ul> </header> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$comment.DeletionLog}" /> <a href="{{ link('media/comments/show', $comment) }}" class="u-jsOnly" data-xf-click="inserter" data-replace="[data-content=xfmg-comment-{$comment.comment_id}]">{{ phrase('show...') }}</a> </div> </div> </div> </section> </xf:macro> <xf:macro name="comment_add" arg-comments="!" arg-content="!" arg-linkPrefix="!"> <xf:if is="$content.canAddComment()"> <xf:form action="{{ link($linkPrefix . '/add-comment', $content) }}" ajax="true" draft="{{ link($linkPrefix . '/draft', $content) }}" class="block js-quickReply" data-xf-init="quick-reply{{ $xf.visitor.isShownCaptcha() ? ' guest-captcha' : '' }}" data-message-container="< :prev | .js-replyNewCommentContainer" data-preview-url="{{ link($linkPrefix . '/preview', $content, {'quick_reply': 1}) }}"> <xf:js src="xf/message.js" min="1" /> <xf:set var="$lastPost" value="{$comments|last}" /> <div class="block-container"> <div class="block-body"> <xf:macro template="quick_reply_macros" name="body" arg-message="{$content.draft_comment.message}" arg-messageSelector=".js-comment" arg-supportsMultiQuote="{$xf.options.multiQuote}" arg-multiQuoteHref="{{ link($linkPrefix . '/multi-quote', $content) }}" arg-multiQuoteStorageKey="multiQuoteMediaItem" arg-simple="{{ true }}" arg-submitText="{{ phrase('post_comment') }}" arg-lastDate="{$lastPost.comment_date}" /> </div> </div> </xf:form> </xf:if> </xf:macro>]]>

</template>


-<template title="xfmg_gallery_bb_code_media" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[<xf:css src="xfmg_gallery_bb_code.less" /> <div class="embeddedMedia"> <div class="embeddedMedia-container"> <xf:macro template="xfmg_media_view_macros" name="media_content" arg-mediaItem="{$mediaItem}" arg-linkMedia="{{ true }}" /> </div> <div class="embeddedMedia-info fauxBlockLink"> <div class="contentRow"> <div class="contentRow-main"> <h4 class="contentRow-title"> <a href="{{ link('media', $mediaItem) }}" class="fauxBlockLink-blockLink u-cloaked">{$mediaItem.title}</a> </h4> <div class="contentRow-lesser p-description"> <ul class="listInline listInline--bullet is-structureList"> <li><xf:fa icon="fa-user" title="{{ phrase('xfmg_media_owner')|for_attr }}" /> <xf:username user="{$mediaItem.User}" defaultname="{$mediaItem.username}" class="u-concealed" /></li> <li><xf:fa icon="fa-clock" title="{{ phrase('xfmg_date_added')|for_attr }}" /> <xf:date time="{$mediaItem.media_date}" /></li> <xf:if is="$mediaItem.comment_count"> <li><xf:fa icon="fa-comments" title="{{ phrase('xfmg_comments')|for_attr }}" /> {$mediaItem.comment_count|number_short}</li> </xf:if> <xf:if is="$xf.options.enableTagging AND {$mediaItem.tags}"> <li><xf:fa icon="fa-tags" title="{{ phrase('tags')|for_attr }}" /> <xf:foreach loop="$mediaItem.tags" value="$tag"> <a href="{{ link('tags', $tag) }}" class="tagItem">{$tag.tag}</a> </xf:foreach> </li> </xf:if> </ul> </div> <xf:if is="$mediaItem.description"> <div class="contentRow-snippet"> {{ structured_text(snippet($mediaItem.description, 100)) }} </div> </xf:if> </div> </div> </div> </div>]]>

</template>


-<template title="xfmg_item_list.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[@_stripThumbSize: 50px; @_thumbSize: xf-option('xfmgThumbnailDimensions.width', px); .itemList { display: flex; flex-flow: row wrap; margin: @xf-paddingSmall; &.itemList--strip { justify-content: center; min-height: @_stripThumbSize + (@xf-paddingSmall * 2); @media (max-width: @xf-responsiveNarrow) { min-height: @_stripThumbSize / 1.3 + (@xf-paddingSmall * 2); } @media (max-width: 360px) { min-height: @_stripThumbSize / 1.9 + (@xf-paddingSmall * 2); } } &.itemList--slider { display: block; margin: 0; .itemList-item--slider { margin: 0; display: none; .lightSlider--loaded & { display: block; } .itemList-itemTypeIcon { display: none; } } } } .itemList-item { flex: auto; width: (@_thumbSize) / 1.6; max-width: @_thumbSize; margin: @xf-paddingSmall; position: relative; overflow: hidden; .itemList--strip & { justify-items: center; width: (@_stripThumbSize) / 1.6; max-width: @_stripThumbSize; margin-top: auto; margin-bottom: auto; opacity: 1; .m-transition(opacity); &.itemList-item--fading { opacity: 0 !important; } } @media (max-width: @xf-responsiveNarrow) { width: (@_thumbSize) / 2; .itemList--strip && // for extra specificity { max-width: (@_stripThumbSize) / 1.3; } } @media (max-width: 360px) { .itemList--strip && { max-width: (@_stripThumbSize) / 1.9; } } &.itemList-item--placeholder { margin-top: 0; margin-bottom: 0; height: 0; .itemList--strip & { .xf-contentAltBase(); .xf-blockBorder(); margin-top: inherit; margin-bottom: inherit; height: initial; opacity: 0.7; } } } .itemList-button { .xf-contentAltBase(); .xf-blockBorder(); width: 25px; border-radius: @xf-borderRadiusMedium; color: @xf-linkColor; display: block; position: relative; margin: @xf-paddingSmall; cursor: pointer; &.is-disabled { display: none; } &.is-loading { .xf-buttonDisabled(); pointer-events: none; cursor: default; } } .itemList-button-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); .m-faBase(); font-size: 1.2em; .itemList-button--next & { &:before { .m-faContent(@fa-var-chevron-right, .71em, ltr); .m-faContent(@fa-var-chevron-left, .71em, rtl); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-right" /> } } .itemList-button--prev & { &:before { .m-faContent(@fa-var-chevron-left, .71em, ltr); .m-faContent(@fa-var-chevron-right, .71em, rtl); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-left" /> } } } .itemList-itemTypeIcon { position: absolute; top: @xf-paddingMedium; right: @xf-paddingMedium; z-index: @zIndex-1; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; .m-textOutline(white, black, thin); color: #fff; opacity: 0.6; .has-touchevents &, .itemList-item:hover &, .itemList-item.is-mod-selected & { opacity: 1; } .m-faBase(); &::after { font-size: @xf-fontSizeLargest; } } @_overlayHeight: 52px; .itemList-itemOverlay { width: 100%; height: @_overlayHeight; bottom: -@_overlayHeight; position: absolute; background-color: rgba(0, 0, 0, 0.6); .m-hiddenLinks(); .m-transition(); padding: 4px; overflow: hidden; .has-touchevents &, .itemList-item:hover & { bottom: 0; } .itemList-item.is-mod-selected & { bottom: 0; background: @xf-inlineModHighlightColor; } a:hover { text-decoration: none; } } .itemList-itemOverlayTop { cursor: pointer; top: 3px; left: 3px; z-index: @zIndex-2 + 5; // above the state icon but below the filter menu width: 25px; height: 25px; border-radius: @xf-borderRadiusMedium; background: rgba(0, 0, 0, 0.4); display: flex; align-items: center; justify-content: center; opacity: 0; .has-touchevents &, .itemList-item:hover & { opacity: 1; } .itemList-item.is-mod-selected & { opacity: 1; background: @xf-inlineModHighlightColor; &.iconic { > input { + i:before { color: @xf-textColorDimmed; } &:hover { + i:before { color: @xf-textColorDimmed; } } } } } &&.iconic { display: flex; position: absolute; > input { + i { &:before { color: #fff; } position: absolute; top: 2px; left: 6px; } &:hover { + i:before { color: xf-intensify(#fff, 15%); } } } } } .itemInfoRow { display: flex; align-items: center; } .itemInfoRow-avatar { white-space: nowrap; word-wrap: normal; text-align: center; } .itemInfoRow-main { flex: 1; min-width: 0; vertical-align: top; text-shadow: 0 0 2px rgba(0, 0, 0, 0.6); color: #fff; .itemList-item.is-mod-selected & { text-shadow: none; color: @xf-textColorDimmed; } &:before { // because of line height, there appears to be extra space at the top of this content: ''; display: block; margin-top: -.18em; } } .itemInfoRow-title { margin: 0; padding: 0 0 0 @xf-paddingSmall; font-size: @xf-fontSizeSmall; font-weight: @xf-fontWeightNormal; .m-overflowEllipsis(); } .itemInfoRow-status { margin: 0; padding: 0 0 0 @xf-paddingSmall; font-size: @xf-fontSizeSmallest; overflow: hidden; white-space: nowrap; }]]>

</template>


-<template title="xfmg_item_view.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[.xfmgInfoBlock-title { margin-bottom: @xf-paddingLarge; } .xfmgInfoBlock-description { margin-bottom: @xf-paddingLarge; .bbCodeBlock { font-size: @xf-fontSizeSmall; font-style: italic; } } .xfmgInfoBlock-title + .actionBar { margin-top: -@xf-paddingLarge; } .xfmgInfoBlock .actionBar-set { font-size: @xf-fontSizeSmall; // margin-top: @xf-paddingLarge; } .columnContainer { display: flex; } .columnContainer-comments { margin-right: @xf-paddingLarge; flex: 0 70%; min-width: 0; } .columnContainer-sidebar { flex: 0 30%; min-width: 0; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .columnContainer { .columnContainer-sidebar { display: block; margin-left: 0; margin-right: 0; > * { margin-left: 0; margin-right: 0; min-width: 0; } } } } @_columnSidebarWidth: 350px; @media (max-width: @xf-responsiveWide) { .columnContainer { display: block; } .columnContainer-comments { margin-right: 0; } .columnContainer-sidebar { display: flex; flex-wrap: wrap; align-items: stretch; margin: (@xf-elementSpacer) -((@xf-pageEdgeSpacer) / 2) -(@xf-elementSpacer); width: auto; > * { margin: 0 ((@xf-pageEdgeSpacer) / 2) @xf-elementSpacer; min-width: @_columnSidebarWidth; flex: 1 1 @_columnSidebarWidth; &:last-child { margin-bottom: @xf-elementSpacer; } } // add an invisible block to ensure that the last row has the correct widths &:after { display: block; content: ''; height: 0; margin: 0 ((@xf-pageEdgeSpacer) / 2); min-width: @_columnSidebarWidth; flex: 1 1 @_columnSidebarWidth; } .block-container { display: flex; flex-direction: column; height: 100%; .block-footer { margin-top: auto; } } } } {{ include('bb_code.less') }}]]>

</template>


-<template title="xfmg_media_add.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[.block { &.block--mediaList { margin-top: 0; } } .mediaList { .m-listPlain(); .m-clearFix(); margin: 4px 0 0; > li { .xf-contentAltBase(); .xf-blockBorder(); border-radius: @xf-blockBorderRadius; margin-bottom: @xf-paddingMedium; padding: @xf-paddingMedium; .contentRow-main { padding-left: @xf-paddingMedium; .mediaItem-input { border-top: none; > dt { padding: 0; } } } &:last-child { margin-bottom: 0; } &.is-uploadError { .contentRow-title span // span needed due to opacity creating new stacking context { text-decoration: line-through; opacity: .5; } .contentRow-figure { opacity: .5; } } } &.mediaList--buttons { > .mediaList-button { float: left; width: 120px; height: 120px; display: flex; align-items: center; justify-content: center; position: relative; margin-right: @xf-paddingLarge; margin-bottom: @xf-paddingMedium; &:last-child { margin-right: 0; } &.is-hidden { display: none; } .mediaList-inner { text-align: center; display: block; &.mediaList-inner--footer { position: absolute; bottom: 2px; margin-top: 1px; } &::before { .m-faBase(); font-size: 45px; display: block; } &--upload::before { .m-faContent(@fa-var-upload); <xf:macro name="content" template="uix_icons.less" arg-icon="upload" />} &--link::before { .m-faContent(@fa-var-cloud-upload); <xf:macro name="content" template="uix_icons.less" arg-icon="link" />} &:hover { text-decoration: none; } } } } } .mediaList-figure.contentRow-figure { width: 100px; img { max-height: 100px; max-width: 100px; } } .mediaList-placeholder { display: block; width: 100px; &:before { display: inline-block; .m-faBase(); .m-faContent(@fa-var-camera); font-size: 60px; vertical-align: middle; color: @xf-textColorFeature; border-radius: 100%; } } .mediaList-progress { position: relative; i { position: absolute; top: 0; bottom: 0; left: 0; background: @xf-progressBarColor; color: contrast(@xf-progressBarColor); border-radius: @xf-borderRadiusMedium; padding-right: .2em; text-align: right; font-style: normal; white-space: nowrap; min-width: 2em; .m-transition(width); } } .mediaList-error { color: @xf-textColorAttention; } @media (max-width: @xf-responsiveNarrow) { .mediaList-figure.contentRow-figure { width: 50px; img { max-height: 50px; max-width: 50px; } } .mediaList-placeholder { display: block; width: 50px; &:before { font-size: 30px; } } } .typesList { .typesList-type { .xf-link(); margin-right: @xf-paddingLarge; &:last-child { margin-right: 0; } &:hover { .xf-linkHover(); text-decoration: none; } &::before { .m-faBase(); } &--image::before { .m-faContent(@fa-var-image); <xf:macro name="content" template="uix_icons.less" arg-icon="media" />} &--video::before { .m-faContent(@fa-var-video); <xf:macro name="content" template="uix_icons.less" arg-icon="video" />} &--audio::before { .m-faContent(@fa-var-music); <xf:macro name="content" template="uix_icons.less" arg-icon="audio" />} &--embed::before { .m-faContent(@fa-var-cloud-upload); <xf:macro name="content" template="uix_icons.less" arg-icon="link" />} } }]]>

</template>


-<template title="xfmg_media_list.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[.itemList-itemTypeIcon { &.itemList-itemTypeIcon--image { &::after { .m-faContent(@fa-var-image); <xf:macro name="content" template="uix_icons.less" arg-icon="media" /> } display: none; } &.itemList-itemTypeIcon--embed { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-youtube); <xf:macro name="content" template="uix_icons.less" arg-icon="youtube" /> } } &.itemList-itemTypeIcon--video { &::after { .m-faContent(@fa-var-video); <xf:macro name="content" template="uix_icons.less" arg-icon="video" /> } } &.itemList-itemTypeIcon--audio { &::after { .m-faContent(@fa-var-music); <xf:macro name="content" template="uix_icons.less" arg-icon="music" /> } } &.itemList-itemTypeIcon--embed { &--applemusic { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-apple); <xf:macro name="content" template="uix_icons.less" arg-icon="apple" />} } &--facebook { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-facebook); <xf:macro name="content" template="uix_icons.less" arg-icon="facebook" />} } &--flickr { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-flickr); <xf:macro name="content" template="uix_icons.less" arg-icon="video" />} } &--instagram { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-instagram); <xf:macro name="content" template="uix_icons.less" arg-icon="instagram" />} } &--pinterest { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-pinterest-square); <xf:macro name="content" template="uix_icons.less" arg-icon="pinterest" />} } &--reddit { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-reddit-alien); <xf:macro name="content" template="uix_icons.less" arg-icon="reddit" />} } &--soundcloud { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-soundcloud); <xf:macro name="content" template="uix_icons.less" arg-icon="soundcloud" />} } &--spotify { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-spotify); <xf:macro name="content" template="uix_icons.less" arg-icon="spotify" />} } &--tumblr { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-tumblr-square); <xf:macro name="content" template="uix_icons.less" arg-icon="tumblr" />} } &--twitch { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-twitch); <xf:macro name="content" template="uix_icons.less" arg-icon="twitch" />} } &--twitter { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-twitter); <xf:macro name="content" template="uix_icons.less" arg-icon="twitter" />} } &--vimeo { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-vimeo); <xf:macro name="content" template="uix_icons.less" arg-icon="vimeo" />} } &--youtube { .m-faBase('Brands'); &::after { .m-faContent(@fa-var-youtube); <xf:macro name="content" template="uix_icons.less" arg-icon="youtube" />} } } } {{ include('xfmg_item_list.less') }}]]>

</template>


-<template title="xfmg_media_view" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[<xf:title>{$mediaItem.title}</xf:title> <xf:h1 hidden="true" /> <xf:css src="xfmg_media_view.less" /> <xf:js prod="xfmg/image_noter-compiled.js" dev="xfmg/vendor/cropper/cropper.js, xfmg/image_noter.js" /> <xf:macro template="xfmg_page_macros" name="xfmg_page_options" arg-album="{$mediaItem.Album}" arg-category="{$mediaItem.Category}" arg-mediaItem="{$mediaItem}" /> <xf:set var="$descSnippet" value="{{ snippet($mediaItem.description, 250) }}" /> <xf:macro template="metadata_macros" name="metadata" arg-description="{$descSnippet}" arg-shareUrl="{{ link('canonical:media', $mediaItem) }}" arg-imageUrl="{$mediaItem.getCurrentThumbnailUrl(true)}" arg-canonicalUrl="{{ link('canonical:media', $mediaItem, {'page': $page}) }}" /> <xf:page option="ldJsonHtml"> <script type="application/ld+json"> {$mediaItem.structured_data|json(true)|raw} </script> </xf:page> <xf:breadcrumb source="$mediaItem.getBreadcrumbs(false)" /> <xf:macro template="xfmg_media_view_macros" name="media_status" arg-mediaItem="{$mediaItem}" /> <div class="media"> <xf:if is="$filmStripParams.prevItem"> <a href="{{ link('media', $filmStripParams.prevItem) }}" class="media-button media-button--prev" data-xf-key="ArrowLeft"><i class="media-button-icon"></i></a> </xf:if> <div class="media-container" data-xf-init="{{ ($mediaItem.media_type == 'image') ? 'image-noter' : '' }}" data-toggle-id="#js-noterToggle" data-edit-url="{{ link('media/note-edit', $mediaItem) }}"> <xf:macro template="xfmg_media_view_macros" name="media_content" arg-mediaItem="{$mediaItem}" arg-mediaNotes="{$mediaNotes}" /> </div> <xf:if is="$filmStripParams.nextItem"> <a href="{{ link('media', $filmStripParams.nextItem) }}" class="media-button media-button--next" data-xf-key="ArrowRight"><i class="media-button-icon"></i></a> </xf:if> </div> <div class="block js-mediaInfoBlock"> <xf:macro template="xfmg_media_view_macros" name="media_film_strip" arg-mediaItem="{$mediaItem}" arg-filmStripParams="{$filmStripParams}" /> <div class="block-container"> <div class="block-body block-row xfmgInfoBlock"> <div class="xfmgInfoBlock-title"> <div class="contentRow contentRow--alignMiddle"> <span class="contentRow-figure"> <xf:avatar user="$mediaItem.User" size="s" defaultname="{$mediaItem.username}" /> </span> <div class="contentRow-main"> <h1 class="contentRow-title p-title-value"><xf:h1 /></h1> <div class="contentRow-lesser p-description"> <ul class="listInline listInline--bullet"> <li><xf:fa icon="fa-user" title="{{ phrase('xfmg_media_owner')|for_attr }}" /> <xf:username user="{$mediaItem.User}" defaultname="{$mediaItem.username}" class="u-concealed" /></li> <li><xf:fa icon="fa-clock" title="{{ phrase('xfmg_date_added')|for_attr }}" /> <xf:date time="{$mediaItem.media_date}" /></li> <xf:if is="$xf.options.enableTagging AND ($mediaItem.canEditTags() OR $mediaItem.tags)"> <li> <xf:macro template="tag_macros" name="list" arg-tags="{$mediaItem.tags}" arg-tagList="tagList--mediaItem-{$mediaItem.media_id}" arg-editLink="{{ $mediaItem.canEditTags() ? link('media/tags', $mediaItem) : '' }}" /> </li> </xf:if> </ul> </div> </div> </div> </div> <xf:if is="$mediaItem.description"> <div class="xfmgInfoBlock-description"> <div class="bbCodeBlock bbCodeBlock--expandable"> <div class="bbCodeBlock-content"> <div class="bbCodeBlock-expandContent"> {{ structured_text($mediaItem.description) }} </div> <div class="bbCodeBlock-expandLink"><a>{{ phrase('click_to_expand') }}</a></div> </div> </div> </div> </xf:if> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="xfmgMediaFields" arg-group="below_media" arg-onlyInclude="{{ $mediaItem.category_id ? $mediaItem.Category.field_cache : $mediaItem.Album.field_cache }}" arg-set="{$mediaItem.custom_fields}" /> <div class="reactionsBar js-reactionsList {{ $mediaItem.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$mediaItem}" link="media/reactions" /> </div> <xf:if contentcheck="true"> <div class="actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$mediaItem}" link="media/react" list="< .js-mediaInfoBlock | .js-reactionsList" /> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$mediaItem.canReport()"> <a href="{{ link('media/report', $mediaItem) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$mediaItem.canEdit()"> <a href="{{ link('media/edit', $mediaItem) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$mediaItem.canDelete()"> <a href="{{ link('media/delete', $mediaItem) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$mediaItem.canCleanSpam()"> <a href="{{ link('spam-cleaner', $mediaItem) }}" class="actionBar-action actionBar-action--spam actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('spam') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() AND $mediaItem.ip_id"> <a href="{{ link('media/ip', $mediaItem) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$mediaItem.canWarn()"> <a href="{{ link('media/warn', $mediaItem) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$mediaItem.warning_id AND $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $mediaItem.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </div> </div> <div class="block-outer block-outer--after"> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <xf:contentcheck> <xf:if is="$mediaItem.canRate()"> <xf:button href="{{ link('media/media-ratings/rate', $mediaItem) }}" overlay="true"> {{ phrase('leave_rating') }} </xf:button> </xf:if> <xf:if is="$mediaItem.canAddNote()"> <xf:button id="js-noterToggle" class="button--icon" data-active-label="{{ phrase('xfmg_stop_adding_note_tag') }}" data-active-icon="cancel" data-active-message="{{ phrase('xfmg_note_tag_mode_activated') }}" data-inactive-label="{{ phrase('xfmg_add_note_tag') }}" data-inactive-icon="" data-inactive-message="{{ phrase('xfmg_note_tag_mode_deactivated') }}"> {{ phrase('xfmg_add_note_tag') }} </xf:button> </xf:if> <xf:if contentcheck="true"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$mediaItem.canUndelete() AND $mediaItem.media_state == 'deleted'"> <xf:button href="{{ link('media/undelete', $mediaItem) }}" class="button--link" overlay="true"> {{ phrase('undelete') }} </xf:button> </xf:if> <xf:if is="$mediaItem.canApproveUnapprove() AND $mediaItem.media_state == 'moderated'"> <xf:button href="{{ link('media/approve', $mediaItem) }}" class="button--link" overlay="true"> {{ phrase('approve') }} </xf:button> </xf:if> <xf:if is="$mediaItem.canWatch()"> <xf:button href="{{ link('media/watch', $mediaItem) }}" class="button--link" data-xf-click="switch-overlay" data-sk-watch="{{ phrase('watch') }}" data-sk-unwatch="{{ phrase('unwatch') }}"> <xf:if is="{$mediaItem.Watch.{$xf.visitor.user_id}}"> {{ phrase('unwatch') }} <xf:else /> {{ phrase('watch') }} </xf:if> </xf:button> </xf:if> <xf:macro template="bookmark_macros" name="button" arg-content="{$mediaItem}" arg-confirmUrl="{{ link('media/bookmark', $mediaItem) }}" /> <xf:if contentcheck="true"> <div class="buttonGroup-buttonWrapper"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <xf:contentcheck> <!--[XF:media_tools_menu:top]--> <xf:if is="$mediaItem.canSetAsAvatar()"> <a href="{{ link('media/set-as-avatar', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow"> {{ phrase('xfmg_set_as_avatar') }} </a> <xf:if is="$avatarUpdated"> <a href="{{ link('account/avatar') }}" data-xf-click="overlay" data-load-auto-click="true" style="display: none"></a> </xf:if> </xf:if> <xf:if is="$mediaItem.canEdit()"> <a href="{{ link('media/edit', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_edit_media_item') }}</a> </xf:if> <xf:if is="$mediaItem.canEditImage()"> <a href="{{ link('media/edit-image', $mediaItem) }}" class="menu-linkRow">{{ phrase('xfmg_edit_image') }}</a> </xf:if> <xf:if is="$mediaItem.canChangeThumbnail()"> <a href="{{ link('media/change-thumbnail', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_change_thumbnail') }}</a> </xf:if> <xf:if is="$mediaItem.canMove()"> <a href="{{ link('media/move', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_move_media_item') }}</a> </xf:if> <xf:if is="$mediaItem.canDelete('soft')"> <a href="{{ link('media/delete', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('xfmg_delete_media_item') }}</a> </xf:if> <xf:if is="$mediaItem.canViewModeratorLogs()"> <a href="{{ link('media/moderator-actions', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a> </xf:if> <xf:if is="$mediaItem.canViewModeratorLogs()"> <a href="{{ link('media/moderator-actions', $mediaItem) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a> </xf:if> <!--[XF:media_tools_menu:before_footer]--> <xf:if is="$mediaItem.canUseInlineModeration()"> <xf:js src="xf/inline_mod.js" min="1" /> <div class="menu-footer" data-xf-init="inline-mod" data-type="xfmg_media" data-href="{{ link('inline-mod') }}" data-toggle=".js-mediaInlineModToggle"> <xf:checkbox> <xf:option class="js-mediaInlineModToggle" value="{$mediaItem.media_id}">{{ phrase('select_for_moderation') }}</xf:option> </xf:checkbox> </div> </xf:if> <!--[XF:media_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </div> </div> <xf:if is="$mediaItem.canViewComments()"> <div class="columnContainer"> <div class="columnContainer-comments"> <xf:macro template="xfmg_comment_macros" name="comment_list" arg-comments="{$comments}" arg-content="{$mediaItem}" arg-linkPrefix="media/media-comments" arg-link="media" arg-page="{$page}" arg-perPage="{$perPage}" arg-totalItems="{$totalItems}" arg-canInlineMod="{$canInlineModComments}" /> </div> <div class="columnContainer-sidebar"> <xf:macro template="xfmg_media_view_macros" name="info_sidebar" arg-mediaItem="{$mediaItem}" /> <xf:macro template="xfmg_media_view_macros" name="extra_info_sidebar" arg-mediaItem="{$mediaItem}" /> <xf:macro template="xfmg_media_view_macros" name="additional_sidebar" arg-mediaItem="{$mediaItem}" /> <xf:macro template="xfmg_media_view_macros" name="exif_sidebar" arg-mediaItem="{$mediaItem}" /> <xf:macro template="xfmg_media_view_macros" name="user_tags_sidebar" arg-mediaNotes="{$mediaNotes}" /> <xf:macro template="xfmg_media_view_macros" name="share_sidebar" arg-mediaItem="{$mediaItem}" /> </div> </div> <xf:else /> <xf:sidebar key="infoSidebar"> <xf:macro template="xfmg_media_view_macros" name="info_sidebar" arg-mediaItem="{$mediaItem}" /> </xf:sidebar> <xf:sidebar key="extraInfoSidebar"> <xf:macro template="xfmg_media_view_macros" name="extra_info_sidebar" arg-mediaItem="{$mediaItem}" /> </xf:sidebar> <xf:sidebar key="additionalSidebar"> <xf:macro template="xfmg_media_view_macros" name="additional_sidebar" arg-mediaItem="{$mediaItem}" /> </xf:sidebar> <xf:sidebar key="exifSidebar"> <xf:macro template="xfmg_media_view_macros" name="exif_sidebar" arg-mediaItem="{$mediaItem}" /> </xf:sidebar> <xf:sidebar key="userTagsSidebar"> <xf:macro template="xfmg_media_view_macros" name="user_tags_sidebar" arg-mediaNotes="{$mediaNotes}" /> </xf:sidebar> <xf:sidebar key="shareSidebar"> <xf:macro template="xfmg_media_view_macros" name="share_sidebar" arg-mediaItem="{$mediaItem}" /> </xf:sidebar> </xf:if>]]>

</template>


-<template title="xfmg_media_view.less" version_string="2.1.6" version_id="902010570" addon_id="" type="public">

<![CDATA[.media { position: relative; margin-bottom: 10px; } @_buttonWidth: 30px; @_buttonHeight: 50px; .media-button { position: absolute; top: ~"calc(50% - "(@_buttonHeight / 2) + 2~")"; z-index: @zIndex-1; width: @_buttonWidth; height: @_buttonHeight; background: fade(mix(@xf-paletteNeutral2, @xf-paletteNeutral3), 70%); border-radius: @xf-borderRadiusMedium; opacity: 0.2; .m-transition(opacity); cursor: pointer; .has-touchevents &, .media:hover & { opacity: 0.6; } &&:hover { text-decoration: none; opacity: 1; } .media-button-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: #FFF; .m-textOutline(white, black); .m-faBase(); font-size: 1.75em; } &.media-button--next { right: 5px; .media-button-icon { &:before { .m-faContent(@fa-var-chevron-right, .71em, ltr); .m-faContent(@fa-var-chevron-left, .71em, rtl); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-right" /> } } } &.media-button--prev { left: 5px; .media-button-icon { &:before { .m-faContent(@fa-var-chevron-left, .71em, ltr); .m-faContent(@fa-var-chevron-right, .71em, rtl); <xf:macro name="content" template="uix_icons.less" arg-icon="chevron-left" /> } } } } .media-container { display: flex; justify-content: center; align-items: center; border: 1px solid transparent; min-height: @_buttonHeight; img { max-width: 100%; max-height: 80vh; } .bbWrapper { width: 100%; text-align: center; } .bbMediaWrapper { width: 100%; text-align: center; // helps center some embeds .bbMediaWrapper-inner { &.bbMediaWrapper-inner--thumbnail { padding-bottom: xf-option('xfmgThumbnailDimensions.width', px); .video-js { &.vjs-audio { margin: 0; } } } } } .video-js { &audio, &video { display: none; } &.vjs-audio { border: none; margin: 0 (@_buttonWidth * 2); } } .fb-video { iframe { background-color: @xf-contentBg; } } .fb_iframe_widget { margin-left: auto; margin-right: auto; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .media-container { margin-left: -@xf-pageEdgeSpacer; margin-right: -@xf-pageEdgeSpacer; } } {{ include('xfmg_media_note.less') }} {{ include('xfmg_cropper.less') }} {{ include('xfmg_item_view.less') }}]]>

</template>


-<template title="xfrm_category_list_macros" version_string="2.1.4" version_id="2010470" addon_id="" type="public">

<![CDATA[<xf:macro name="simple_category_list" arg-selected="0" arg-pathToSelected="{{ [] }}" arg-children="!" arg-extras="!" arg-isActive="{{ false }}" > <ol class="categoryList toggleTarget{{ $isActive ? ' is-active' : '' }}"> <xf:foreach loop="$children" key="$id" value="$child"> <xf:macro name="simple_category_list_item" arg-selected="{$selected}" arg-pathToSelected="{$pathToSelected}" arg-category="{$child.record}" arg-extras="{$extras.{$id}}" arg-children="{$child}" arg-childExtras="{$extras}" /> </xf:foreach> </ol> </xf:macro> <xf:macro name="simple_category_list_item" arg-selected="!" arg-pathToSelected="{{ [] }}" arg-category="!" arg-extras="!" arg-children="!" arg-childExtras="!" > <xf:set var="$isSelected" value="{{ $category.resource_category_id == $selected }}" /> <xf:set var="$hasPathToSelected" value="{$pathToSelected.{$category.resource_category_id}}" /> <xf:set var="$isActive" value="{{ $isSelected OR $hasPathToSelected AND $children is not empty }}" /> <li class="categoryList-item"> <div class="categoryList-itemRow"> <xf:if is="$children is not empty"> <a class="categoryList-toggler{{ $isActive ? ' is-active' : '' }}" data-xf-click="toggle" data-target="< :up :next" role="button" tabindex="0" aria-label="{{ phrase('toggle_expanded') }}" ></a> <xf:else /> <span class="categoryList-togglerSpacer"></span> </xf:if> <a href="{{ link('resources/categories', $category) }}" class="categoryList-link{{ $isSelected ? ' is-selected' : '' }}"> {$category.title} </a> <span class="categoryList-label"> <span class="label label--subtle label--smallest">{$extras.resource_count|number_short}</span> </span> </div> <xf:if is="$children is not empty"> <xf:macro name="simple_category_list" arg-selected="{$selected}" arg-pathToSelected="{$pathToSelected}" arg-children="{$children}" arg-extras="{$childExtras}" arg-isActive="{$isActive}" /> </xf:if> </li> </xf:macro> <xf:macro name="simple_list_block" arg-categoryTree="!" arg-categoryExtras="!" arg-selected="{{ 0 }}"> <div class="block"> <div class="block-container"> <h3 class="block-minorHeader">{{ phrase('categories') }}</h3> <div class="block-body"> <xf:if is="$categoryTree.count()"> <xf:macro name="simple_category_list" arg-children="{$categoryTree}" arg-extras="{$categoryExtras}" arg-isActive="{{ true }}" arg-selected="{$selected}" arg-pathToSelected="{{ $selected ? $categoryTree.getPathTo($selected) : [] }}" /> <xf:else /> <div class="block-row">{{ phrase('n_a') }}</div> </xf:if> </div> </div> </div> </xf:macro> <xf:macro name="category" arg-category="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-chooseName="" arg-bonusInfo=""> <div class="node node--depth2 node--resourceCategory node--resourceCategory{$category.resource_category_id}"> <div class="node-body"> <div class="node-main js-nodeMain"> <xf:if is="$chooseName"> <xf:checkbox standalone="true"> <xf:option labelclass="u-pullRight" class="js-chooseItem" name="{$chooseName}[]" value="{$category.resource_category_id}" /> </xf:checkbox> </xf:if> <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" /> <h3 class="node-title"> <a href="{{ link('resources/categories', $category) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$category.title}</a> </h3> <xf:if is="$descriptionDisplay != 'none' && $category.description"> <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$category.description|raw}</div> </xf:if> <div class="node-meta"> <div class="node-statsMeta"> <dl class="pairs pairs--inline"> <dt>{{ phrase('xfrm_resources') }}</dt> <dd>{$extras.resource_count|number}</dd> </dl> </div> </div> <xf:if is="$bonusInfo is not empty"> <div class="node-bonus">{$bonusInfo}</div> </xf:if> </div> <div class="node-stats node-stats--single"> <dl class="pairs pairs--rows"> <dt>{{ phrase('xfrm_resources') }}</dt> <dd>{$extras.resource_count|number}</dd> </dl> </div> <div class="node-extra"> <xf:if is="{$extras.last_update}"> <div class="node-extra-row"><a href="{{ link('resources', {'resource_id': $extras.last_resource_id}) }}" class="node-extra-title" title="{$extras.last_resource_title}">{$extras.last_resource_title}</a></div> <div class="node-extra-row"> <xf:date time="{$extras.last_update}" class="node-extra-date" /> </div> <xf:else /> <span class="node-extra-placeholder">{{ phrase('none') }}</span> </xf:if> </div> </div> </div> </xf:macro>]]>

</template>


-<template title="xfrm_resource_update_macros" version_string="2.1.4" version_id="2010470" addon_id="" type="public">

<![CDATA[<xf:macro name="resource_update" arg-update="!" arg-resource="!"> <xf:css src="message.less" /> <div class="message message--simple js-resourceUpdate" id="js-resourceUpdate-{$update.resource_update_id}"> <span class="u-anchorTarget" id="resource-update-{$update.resource_update_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--main"> <div class="js-quickEditTarget"> <div class="message-content js-messageContent"> <div class="message-attribution message-attribution--split"> <h2 class="message-attribution-main block-textHeader" style="margin: 0"> <a href="{{ link('resources/update', $update) }}" rel="nofollow">{$update.title}</a> </h2> <ul class="message-attribution-opposite message-attribution-opposite--list"> <xf:if contentcheck="true"> <li> <xf:contentcheck> <xf:macro template="bookmark_macros" name="link" arg-content="{$update}" arg-confirmUrl="{{ link('resources/update/bookmark', $update) }}" arg-class="bookmarkLink--highlightable" arg-showText="{{ false }}"/> </xf:contentcheck> </li> </xf:if> <li> <a href="{{ link('resources/update', $update) }}" rel="nofollow"> <xf:date time="{$update.post_date}"/> </a> </li> </ul> </div> <xf:if is="$update.message_state == 'deleted'"> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$update.DeletionLog}" /> </div> <xf:elseif is="$update.message_state == 'moderated'" /> <div class="messageNotice messageNotice--moderated"> {{ phrase('this_message_is_awaiting_moderator_approval_and_is_invisible_to_normal') }} </div> </xf:if> <xf:if is="$update.warning_message"> <div class="messageNotice messageNotice--warning"> {$update.warning_message} </div> </xf:if> <div class="message-userContent lbContainer js-lbContainer" data-lb-id="resource_update-{$update.resource_update_id}" data-lb-caption-desc="{{ $resource.User ? $resource.User.username : $resource.username }} &middot; {{ date_time($update.post_date) }}"> <blockquote class="message-body"> {{ bb_code($update.message, 'resource_update', $update) }} </blockquote> <xf:if is="$update.attach_count"> <xf:macro template="message_macros" name="attachments" arg-attachments="{$update.Attachments}" arg-message="{$update}" arg-canView="{{ $resource.canViewUpdateImages() }}" /> </xf:if> </div> <div class="reactionsBar js-reactionsList {{ $update.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$update}" link="resources/update/reactions" /> </div> <xf:if contentcheck="true"> <div class="message-actionBar actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$update}" link="resources/update/react" list="< .js-resourceUpdate | .js-reactionsList" /> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$update.canReport()"> <a href="{{ link('resources/update/report', $update) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$update.canEdit()"> <xf:js src="xf/message.js" min="1" /> <a href="{{ link('resources/update/edit', $update) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem" data-xf-click="quick-edit" data-editor-target="#js-resourceUpdate-{$update.resource_update_id} .js-quickEditTarget" data-menu-closer="true">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$update.canDelete('soft')"> <a href="{{ link('resources/update/delete', $update) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$update.message_state == 'deleted' AND $update.canUndelete()"> <a href="{{ link('resources/update/undelete', $update) }}" data-xf-click="overlay" class="actionBar-action actionBar-action--undelete actionBar-action--menuItem">{{ phrase('undelete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() && $update.ip_id"> <a href="{{ link('resources/update/ip', $update) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$update.canWarn()"> <a href="{{ link('resources/update/warn', $update) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$update.warning_id && $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $update.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$update.canApproveUnapprove()"> <xf:if is="$update.message_state == 'moderated'"> <a href="{{ link('resources/update/approve', $update, {'t': csrf_token()}) }}" class="actionBar-action actionBar-action--approve actionBar-action--menuItem">{{ phrase('approve') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$update.message_state == 'visible'" /> <a href="{{ link('resources/update/unapprove', $update, {'t': csrf_token()}) }}" class="actionBar-action actionBar-action--unapprove actionBar-action--menuItem">{{ phrase('unapprove') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <div class="js-historyTarget toggleTarget" data-href="trigger-href"></div> </div> </div> </div> </div> </div> </xf:macro>]]>

</template>


-<template title="xfrm_resource_view" version_string="2.1.6" version_id="2010570" addon_id="" type="public">

<![CDATA[<xf:title>{{ prefix('resource', $resource, 'escaped') }}{$resource.title}</xf:title> <xf:set var="$descSnippet" value="{{ snippet($description.message, 250, {'stripBbCode': true}) }}" /> <xf:macro template="metadata_macros" name="metadata" arg-description="{$descSnippet}" arg-shareUrl="{{ link('canonical:resources', $resource) }}" arg-canonicalUrl="{{ link('canonical:resources', $resource) }}" /> <xf:page option="ldJsonHtml"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "CreativeWork", "@id": "{{ link('canonical:resources', $resource)|escape('json') }}", "name": "{$resource.title|escape('json')}", "headline": "{$resource.title|escape('json')}", "alternativeHeadline": "{$resource.tag_line|escape('json')}", "description": "{$descSnippet|escape('json')}", <xf:if is="$resource.isVersioned()"> "version": "{$resource.CurrentVersion.version_string|escape('json')}", </xf:if> <xf:if is="$xf.options.xfrmAllowIcons AND $resource.icon_date"> "thumbnailUrl": "{{ $resource.getIconUrl('s', true)|escape('json') }}", </xf:if> "dateCreated": "{{ date($resource.resource_date, 'c')|escape('json') }}", "dateModified": "{{ date($resource.last_update, 'c')|escape('json') }}", <xf:if is="$resource.rating_count">"aggregateRating": { "@type": "AggregateRating", "ratingCount": "{$resource.rating_count|escape('json')}", "ratingValue": "{$resource.rating_avg|escape('json')}" },</xf:if> <xf:if is="$resource.hasViewableDiscussion()"> "discussionUrl": "{{ link('canonical:threads', $resource.Discussion)|escape('json') }}", </xf:if> "author": { "@type": "Person", "name": "{{ ($resource.User ? $resource.User.username : $resource.username)|escape('json') }}" } } </script> </xf:page> <xf:if is="$iconError"> <div class="blockMessage blockMessage--error">{{ phrase('xfrm_new_icon_could_not_be_applied_try_later') }}</div> </xf:if> <xf:wrap template="xfrm_resource_wrapper"> <xf:set var="$pageSelected" value="overview" /> </xf:wrap> <xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{{ $resource.canViewUpdateImages() }}" /> <div class="block"> <xf:if contentcheck="true"> <div class="block-outer"> <div class="block-outer-opposite"> <xf:contentcheck> <xf:macro template="xfrm_resource_wrapper_macros" name="action_buttons" arg-resource="{$resource}" /> </xf:contentcheck> </div> </div> </xf:if> <div class="block-container"> <div class="block-body lbContainer js-resourceBody" data-xf-init="lightbox" data-lb-id="resource-{$resource.resource_id}" data-lb-caption-desc="{{ $resource.User ? $resource.User.username : $resource.username }} &middot; {{ date_time($resource.resource_date) }}"> <div class="resourceBody"> <article class="resourceBody-main js-lbContainer"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="resources" arg-group="above_info" arg-onlyInclude="{$category.field_cache}" arg-set="{$resource.custom_fields}" arg-wrapperClass="resourceBody-fields resourceBody-fields--before" /> <xf:if is="$trimmedDescription"> {{ bb_code($trimmedDescription, 'resource_update', $description) }} <div class="block-rowMessage block-rowMessage--important"> {{ phrase('xfrm_do_not_have_permission_to_view_full_content_of_this_resource') }} <xf:if is="!$xf.visitor.user_id"> <a href="{{ link('login') }}" data-xf-click="overlay">{{ phrase('log_in_or_register_now') }}</a> </xf:if> </div> <xf:else /> {{ bb_code($description.message, 'resource_update', $description) }} </xf:if> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="resources" arg-group="below_info" arg-onlyInclude="{$category.field_cache}" arg-set="{$resource.custom_fields}" arg-wrapperClass="resourceBody-fields resourceBody-fields--after" /> <xf:if is="$description.attach_count"> <xf:if contentcheck="true"> <xf:css src="attachments.less" /> <ul class="attachmentList resourceBody-attachments"> <xf:contentcheck> <xf:foreach loop="$description.Attachments" value="$attachment" if="!$description.isAttachmentEmbedded($attachment)"> <xf:macro template="attachment_macros" name="attachment_list_item" arg-attachment="{$attachment}" arg-canView="{{ $resource.canViewUpdateImages() }}" /> </xf:foreach> </xf:contentcheck> </ul> </xf:if> </xf:if> <xf:if contentcheck="true"> <div class="actionBar"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$description}" link="resources/update/react" list="< .js-resourceBody | .js-reactionsList" /> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$description.canReport()"> <a href="{{ link('resources/update/report', $description) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$resource.canEdit()"> <a href="{{ link('resources/edit', $resource) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$description.canDelete('soft')"> <a href="{{ link('resources/delete', $description) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() && $description.ip_id"> <a href="{{ link('resources/update/ip', $description) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$description.canWarn()"> <a href="{{ link('resources/update/warn', $description) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$description.warning_id && $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $description.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options') }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <div class="reactionsBar js-reactionsList {{ $description.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$description}" link="resources/update/reactions" /> </div> <div class="js-historyTarget toggleTarget" data-href="trigger-href"></div> </article> <div class="resourceBody-sidebar"> <div class="resourceSidebarGroup"> <dl class="pairs pairs--justified"> <dt>{{ phrase('author') }}</dt> <dd><xf:username user="{$resource.User}" defaultname="{$resource.username}" /></dd> </dl> <xf:if is="$resource.isDownloadable()"> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfrm_downloads') }}</dt> <dd>{$resource.download_count|number}</dd> </dl> </xf:if> <dl class="pairs pairs--justified"> <dt>{{ phrase('views') }}</dt> <dd>{{ max($resource.view_count, $resource.download_count, 1)|number }}</dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfrm_first_release') }}</dt> <dd><xf:date time="{$resource.resource_date}" /></dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('xfrm_last_update') }}</dt> <dd><xf:date time="{$resource.last_update}" /></dd> </dl> <dl class="pairs pairs--justified"> <dt>{{ phrase('rating') }}</dt> <dd> <xf:macro template="rating_macros" name="stars_text" arg-rating="{$resource.rating_avg}" arg-count="{$resource.rating_count}" arg-rowClass="ratingStarsRow--textBlock" /> </dd> </dl> </div> <xf:if contentcheck="true"> <div class="resourceSidebarGroup resourceSidebarGroup--buttons"> <xf:contentcheck> <xf:if is="$resource.hasViewableDiscussion()"> <xf:button href="{{ link('threads', $resource.Discussion) }}" class="button--fullWidth">{{ phrase('xfrm_join_discussion') }}</xf:button> </xf:if> <xf:if is="$resource.external_url"> <xf:button href="{$resource.external_url}" class="button--link button--fullWidth">{{ phrase('xfrm_more_information') }}</xf:button> </xf:if> <xf:if is="$resource.alt_support_url AND $resource.Category.enable_support_url"> <xf:button href="{$resource.alt_support_url}" class="button--link button--fullWidth">{{ phrase('xfrm_get_support') }}</xf:button> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if is="$authorOthers is not empty"> <div class="resourceSidebarGroup"> <h4 class="resourceSidebarGroup-title"> <a href="{{ link('resources/authors', $resource.User) }}">{{ phrase('xfrm_more_resources_from_x', {'name': $resource.User.username}) }}</a> </h4> <ul class="resourceSidebarList"> <xf:foreach loop="$authorOthers" value="$authorOther"> <li> <xf:macro template="xfrm_resource_list_macros" name="resource_simple" arg-resource="{$authorOther}" arg-withMeta="{{ false }}" /> </li> </xf:foreach> </ul> </div> </xf:if> <xf:if contentcheck="true"> <div class="resourceSidebarGroup"> <h4 class="resourceSidebarGroup-title">{{ phrase('xfrm_share_this_resource') }}</h4> <xf:contentcheck> <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" /> </xf:contentcheck> </div> </xf:if> </div> </div> </div> </div> </div> <xf:if is="$latestUpdates is not empty"> <div class="block"> <div class="block-container"> <h3 class="block-header">{{ phrase('xfrm_latest_updates') }}</h3> <ol class="block-body"> <xf:foreach loop="$latestUpdates" value="$update"> <li class="block-row block-row--separated"> <h3 class="block-textHeader"> <a href="{{ link('resources/update', $update) }}">{$update.title}</a> </h3> <div>{{ snippet($update.message, 100, {'stripBbCode': true}) }}</div> </xf:foreach> </ol> <div class="block-footer"> <span class="block-footer-controls"><xf:button class="button--link" href="{{ link('resources/updates', $resource) }}">{{ phrase('xfrm_read_more...') }}</xf:button></span> </div> </div> </div> </xf:if> <xf:if is="$latestReviews is not empty"> <div class="block"> <div class="block-container"> <h3 class="block-header">{{ phrase('xfrm_latest_reviews') }}</h3> <div class="block-body"> <xf:foreach loop="$latestReviews" value="$review"> <xf:macro template="xfrm_resource_review_macros" name="review" arg-review="{$review}" arg-resource="{$resource}" /> </xf:foreach> </div> <div class="block-footer"> <span class="block-footer-controls"><xf:button class="button--link" href="{{ link('resources/reviews', $resource) }}">{{ phrase('xfrm_read_more...') }}</xf:button></span> </div> </div> </div> </xf:if>]]>

</template>

</templates>


-<properties>

<group title="iO" description="Style properties for the iO theme" addon_id="" display_order="0" group_name="io"/>

<group title="Global Settings" description="General settings for the theme, as well as for smaller components" addon_id="" display_order="310" group_name="uix_globalSettings"/>

<group title="Icons" description="Settings for the main icon font for the theme." addon_id="" display_order="410" group_name="uix_icons"/>

<group title="Sidebar" description="Style Properties for the sidebar" addon_id="" display_order="730" group_name="uix_sidebar"/>

<group title="Search" description="Settings related to the header search component" addon_id="" display_order="750" group_name="uix_search"/>

<group title="Breadcrumb" description="Settings related to the breadcrumb and its components." addon_id="" display_order="760" group_name="uix_breadcrumb"/>

<group title="Welcome Section" description="Settings related to the welcome section" addon_id="" display_order="770" group_name="uix_welcomeSection"/>

<group title="Node icons" description="Settings related to node icons" addon_id="" display_order="2010" group_name="uix_nodeIcons"/>

<group title="Discussion list" description="Settings related to the discussion list component" addon_id="" display_order="2020" group_name="uix_discussionList"/>

<group title="Canvas Menus" description="On and off canvas menu settings" addon_id="" display_order="2100" group_name="uix_canvas"/>

<group title="Prefixes" description="Sets the color and styling for thread prefixes." addon_id="" display_order="10000" group_name="prefixes"/>


-<property title="Base animation speed" description="All animations within the system base their speed on this value. Smaller values (in seconds) make for faster animations" addon_id="XF" display_order="100" group_name="misc" value_group="" depends_on="" value_type="unit" property_type="value" property_name="animationSpeed">

<value_parameters>step=any</value_parameters>

<value>"0.2s"</value>

</property>


-<property title="Avatar border radius" description="Controls the size of the rounded corners on avatars - a sufficiently large value will make avatars circular" addon_id="XF" display_order="200" group_name="avatar" value_group="" depends_on="" value_type="unit" property_type="value" property_name="avatarBorderRadius">

<value>"@xf-borderRadiusSmall"</value>

</property>


-<property title="Badge" description="Badges appear to indicate a number if items requiring attention, such as unread messages in your inbox" addon_id="XF" display_order="20000" group_name="misc" value_group="" depends_on="" value_type="" property_type="css" property_name="badge" css_components="text,background,border,border_radius,extra">

<value>{ "color": "@xf-textColorDimmed", "background-color": "@xf-contentHighlightBg", "border-radius": "@xf-borderRadiusSmall" }</value>

</property>


-<property title="BB code block - inline code" description="Special styling rules for inline code ([ICODE]) elements." addon_id="XF" display_order="20200" group_name="bbCode" value_group="" depends_on="" value_type="" property_type="css" property_name="bbCodeInlineCode" css_components="text,background,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>{ "font-size": "90%", "background-color": "@xf-contentAltBg", "border-width": "@xf-borderSize", "border-color": "@xf-borderColorLight", "border-radius": "@xf-borderRadiusSmall", "padding-top": "1px", "padding-right": "@xf-paddingSmall", "padding-bottom": "1px", "padding-left": "@xf-paddingSmall" }</value>

</property>


-<property title="Block border framework" description="" addon_id="XF" display_order="20000" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockBorder" css_components="border,extra">

<value>{ "border-width": "0", "border-top-color": "@xf-borderColorLight", "border-right-color": "@xf-borderColor", "border-bottom-color": "@xf-borderColorHeavy", "border-left-color": "@xf-borderColor" }</value>

</property>


-<property title="Block filter bar" description="When the content of a block can be filtered, the controls to do so are styled here" addon_id="XF" display_order="20800" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockFilterBar" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColor", "background-color": "@xf-contentBg", "border-bottom-width": "1px", "border-bottom-color": "@xf-borderColor" }</value>

</property>


-<property title="Block footer" description="When information needs to be conveyed in a footer element for a block, its style is controlled here" addon_id="XF" display_order="21200" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockFooter" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-blockFooterTextColor", "background-color": "@xf-blockFooterBg", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColorLight", "extra": "padding-top: @xf-paddingMedium;\npadding-bottom: @xf-paddingMedium;" }</value>

</property>


-<property title="Block footer background color" description="" addon_id="XF" display_order="7100" group_name="color" value_group="blockFooter" depends_on="" value_type="color" property_type="value" property_name="blockFooterBg">

<value>"@xf-contentHighlightBg"</value>

</property>


-<property title="Block header" description="" addon_id="XF" display_order="20100" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeLarge", "color": "@xf-majorHeadingTextColor", "background-color": "@xf-majorHeadingBg", "border-bottom-width": "1px", "border-bottom-color": "@xf-borderColor" }</value>

</property>


-<property title="Block link" description="Some links are displayed as small blocks such as choices in a popup menu, and their background will highlight when hovered" addon_id="XF" display_order="20900" group_name="misc" value_group="" depends_on="" value_type="" property_type="css" property_name="blockLink" css_components="text,background,extra">

<value>{ "color": "@xf-textColorDimmed", "text-decoration": "none", "background-color": "@xf-contentBg", "extra": "cursor: pointer;" }</value>

</property>


-<property title="Block link - selected" description="Styling for block-type links when in their selected state" addon_id="XF" display_order="21000" group_name="misc" value_group="" depends_on="" value_type="" property_type="css" property_name="blockLinkSelected" css_components="text,background,border_width_simple,border_color_simple,extra">

<value>{ "color": "@xf-uix_primaryColor", "font-weight": "@xf-fontWeightHeavy", "background-color": "xf-intensify(@xf-contentBg, 3%)", "border-width": "@xf-borderSizeFeature", "border-color": "@xf-borderColorFeature" }</value>

</property>


-<property title="Block minor header" description="" addon_id="XF" display_order="20400" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockMinorHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-minorHeadingTextColor", "font-weight": "@xf-fontWeightHeavy" }</value>

</property>


-<property title="Block padding horizontal" description="The horizontal space between the edges of a block and its content" addon_id="XF" display_order="100" group_name="block" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="blockPaddingH">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Block padding vertical" description="" addon_id="XF" display_order="200" group_name="block" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="blockPaddingV">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Block tab header" description="Occasionally, blocks will have multi-part, tab headers, styled with these settings" addon_id="XF" display_order="20200" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockTabHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-blockTabHeaderTextColor", "background-color": "@xf-blockTabHeaderBg", "border-bottom-width": "1px", "border-bottom-color": "@xf-borderColor", "extra": "border-bottom: 1px solid @xf-borderColor;\nfont-weight: @xf-fontWeightHeavy;\ntext-transform: uppercase;" }</value>

</property>


-<property title="Block tab header background color" description="" addon_id="XF" display_order="6500" group_name="color" value_group="blockTabHeader" depends_on="" value_type="color" property_type="value" property_name="blockTabHeaderBg">

<value>"transparent"</value>

</property>


-<property title="Block tab header - selected tab" description="The selected tab in multi-part headers takes additional styling from here" addon_id="XF" display_order="20300" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockTabHeaderSelected" css_components="text,background,border_color_simple,extra">

<value>{ "color": "@xf-uix_secondaryColor", "border-color": "@xf-uix_secondaryColor" }</value>

</property>


-<property title="Block tab header text color" description="" addon_id="XF" display_order="6600" group_name="color" value_group="blockTabHeader" depends_on="" value_type="color" property_type="value" property_name="blockTabHeaderTextColor">

<value>"@xf-textColorMuted"</value>

</property>


-<property title="Block text header" description="Text headers are used for subtle identification of content areas, without changing the background style or color" addon_id="XF" display_order="20700" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="blockTextHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeLarge", "color": "@xf-minorHeadingTextColor" }</value>

</property>


-<property title="Border color" description="" addon_id="XF" display_order="4000" group_name="color" value_group="borderBasic" depends_on="" value_type="color" property_type="value" property_name="borderColor">

<value>"xf-intensify(@xf-contentHighlightBg, 6%)"</value>

</property>


-<property title="Accent content border color" description="" addon_id="XF" display_order="5200" group_name="color" value_group="borderOther" depends_on="" value_type="color" property_type="value" property_name="borderColorAccentContent">

<value>"@xf-borderColorHighlight"</value>

</property>


-<property title="Attention-grabbing border color" description="" addon_id="XF" display_order="5300" group_name="color" value_group="borderOther" depends_on="" value_type="color" property_type="value" property_name="borderColorAttention">

<value>"@xf-borderColorHighlight"</value>

</property>


-<property title="Faint border color" description="" addon_id="XF" display_order="4100" group_name="color" value_group="borderBasic" depends_on="" value_type="color" property_type="value" property_name="borderColorFaint">

<value>"@xf-borderColor"</value>

</property>


-<property title="Feature border color" description="" addon_id="XF" display_order="5100" group_name="color" value_group="borderOther" depends_on="" value_type="color" property_type="value" property_name="borderColorFeature">

<value>"@xf-borderColorHighlight"</value>

</property>


-<property title="Heavy border color" description="" addon_id="XF" display_order="4300" group_name="color" value_group="borderBasic" depends_on="" value_type="color" property_type="value" property_name="borderColorHeavy">

<value>"@xf-borderColor"</value>

</property>


-<property title="Highlight border color" description="" addon_id="XF" display_order="5000" group_name="color" value_group="borderOther" depends_on="" value_type="color" property_type="value" property_name="borderColorHighlight">

<value>"@xf-uix_primaryColor"</value>

</property>


-<property title="Light border color" description="" addon_id="XF" display_order="4200" group_name="color" value_group="borderBasic" depends_on="" value_type="color" property_type="value" property_name="borderColorLight">

<value>"@xf-borderColor"</value>

</property>


-<property title="Large border radius" description="" addon_id="XF" display_order="1200" group_name="borderSpacing" value_group="borderRadius" depends_on="" value_type="unit" property_type="value" property_name="borderRadiusLarge">

<value>"8px"</value>

</property>


-<property title="Medium border radius" description="" addon_id="XF" display_order="1100" group_name="borderSpacing" value_group="borderRadius" depends_on="" value_type="unit" property_type="value" property_name="borderRadiusMedium">

<value>"8px"</value>

</property>


-<property title="Small border radius" description="" addon_id="XF" display_order="1000" group_name="borderSpacing" value_group="borderRadius" depends_on="" value_type="unit" property_type="value" property_name="borderRadiusSmall">

<value>"4px"</value>

</property>


-<property title="Feature border size" description="" addon_id="XF" display_order="200" group_name="borderSpacing" value_group="borderSize" depends_on="" value_type="unit" property_type="value" property_name="borderSizeFeature">

<value>"2px"</value>

</property>


-<property title="Minor feature border size" description="" addon_id="XF" display_order="300" group_name="borderSpacing" value_group="borderSize" depends_on="" value_type="unit" property_type="value" property_name="borderSizeMinorFeature">

<value>"@xf-borderSizeFeature"</value>

</property>


-<property title="Button base" description="Defines the styling for the basic elements that are common to all text-based buttons" addon_id="XF" display_order="20000" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="buttonBase" css_components="text,border_radius,padding,extra">

<value>{ "font-size": "15px", "font-weight": "@xf-fontWeightNormal", "border-radius": "@xf-borderRadiusMedium", "padding-top": "0", "padding-right": "15px", "padding-bottom": "0", "padding-left": "15px", "extra": "text-align: center;\noutline: none;\nline-height: 35px;\nheight: 35px;\ntext-decoration: none;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\ncursor: pointer;\nbox-sizing: content-box;\n-webkit-appearance: none;\nwill-change: box-shadow;\ntransition: all 0.3s cubic-bezier(.25,.8,.25,1);\nborder: none;\nwhite-space: nowrap;\nborder-radius: @xf-borderRadiusSmall;" }</value>

</property>


-<property title="Default button background color" description="" addon_id="XF" display_order="8200" group_name="color" value_group="buttons" depends_on="" value_type="color" property_type="value" property_name="buttonBg">

<value>"transparent"</value>

</property>


-<property title="Button - call to action" description="Call to action buttons sit alone and invite the user to do something, like post a new thread" addon_id="XF" display_order="20300" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="buttonCta" css_components="text,background,extra">

<value>{ "color": "#fff", "background-color": "@xf-buttonCtaBg", "extra": "box-shadow: @xf-uix_elevation1;\nborder: none;\nbackground: linear-gradient(@xf-uix_secondaryColor, darken(@xf-uix_secondaryColor, 10%) );" }</value>

</property>


-<property title="Call-to-action button background" description="" addon_id="XF" display_order="8400" group_name="color" value_group="buttons" depends_on="" value_type="color" property_type="value" property_name="buttonCtaBg">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Button - default" description="Most buttons use this styling, except for primary form submit buttons" addon_id="XF" display_order="20100" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="buttonDefault" css_components="text,background,extra">

<value>{ "color": "@xf-buttonTextColor", "background-color": "@xf-buttonBg" }</value>

</property>


-<property title="Button - disabled" description="When buttons are disabled and unclickable, they use these styling rules" addon_id="XF" display_order="20400" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="buttonDisabled" css_components="text,background,extra">

<value>{ "color": "@xf-textColorMuted", "font-style": "italic", "background-color": "rgba(0,0,0,.12)", "extra": "cursor: default;\nbox-shadow: none !important;\nfont-style: initial;" }</value>

</property>


-<property title="Button - primary" description="These rules are used mostly for the main submit button for forms" addon_id="XF" display_order="20200" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="buttonPrimary" css_components="text,background,extra">

<value>{ "color": "#fff", "background-color": "@xf-buttonPrimaryBg", "extra": "box-shadow: @xf-uix_elevation1;\nborder: none;\nbackground: linear-gradient(@xf-uix_primaryColor, darken(@xf-uix_primaryColor, 10%) );" }</value>

</property>


-<property title="Primary button background color" description="" addon_id="XF" display_order="8300" group_name="color" value_group="buttons" depends_on="" value_type="color" property_type="value" property_name="buttonPrimaryBg">

<value>"@xf-uix_primaryColor"</value>

</property>


-<property title="Default button text color" description="" addon_id="XF" display_order="8100" group_name="color" value_group="buttons" depends_on="" value_type="color" property_type="value" property_name="buttonTextColor">

<value>"@xf-uix_primaryColor"</value>

</property>


-<property title="Chips" description="The primary use for chips is in tagging content, where each tag will appear as a chip" addon_id="XF" display_order="20200" group_name="misc" value_group="" depends_on="" value_type="" property_type="css" property_name="chip" css_components="text,background,border_width_simple,border_color_simple,extra">

<value>{ "color": "@xf-textColorMuted", "background-color": "@xf-contentHighlightBg", "border-width": "@xf-borderSize", "border-color": "@xf-borderColor", "extra": "display: inline-block;\nmax-width: 100%;\npadding: 0 6px 1px;\nmargin: 0 0 2px;\nborder-radius: 3px;" }</value>

</property>


-<property title="Accented content area base" description="When attention needs to be directed to content, this background may be employed" addon_id="XF" display_order="20300" group_name="content" value_group="" depends_on="" value_type="" property_type="css" property_name="contentAccentBase" css_components="text,background,extra">

<value>{ "color": "@xf-textColorDimmed", "background-color": "@xf-contentAccentBg" }</value>

</property>


-<property title="Accented content background color" description="This background color is used for further differentiation from regular content" addon_id="XF" display_order="2400" group_name="color" value_group="contentBackground" depends_on="" value_type="color" property_type="value" property_name="contentAccentBg">

<value>"@xf-paletteColor5"</value>

</property>


-<property title="Accented content area links" description="Links within accented content will be styled with these settings" addon_id="XF" display_order="20400" group_name="content" value_group="" depends_on="" value_type="" property_type="css" property_name="contentAccentLink" css_components="text,background,extra">

<value>{ "color": "@xf-uix_primaryColor" }</value>

</property>


-<property title="Alternate content background color" description="In order to differentiate it, some content will be presented on this alternative background" addon_id="XF" display_order="2200" group_name="color" value_group="contentBackground" depends_on="" value_type="color" property_type="value" property_name="contentAltBg">

<value>"@xf-paletteColor2"</value>

</property>


-<property title="Content area base" description="" addon_id="XF" display_order="20000" group_name="content" value_group="" depends_on="" value_type="" property_type="css" property_name="contentBase" css_components="text,background,extra">

<value>{ "color": "@xf-textColor", "background-color": "@xf-contentBg" }</value>

</property>


-<property title="Content background color" description="Most normal content will sit on this background" addon_id="XF" display_order="2000" group_name="color" value_group="contentBackground" depends_on="" value_type="color" property_type="value" property_name="contentBg">

<value>"@xf-paletteColor1"</value>

</property>


-<property title="Highlighted content background color" description="When the standard background color is highlighted or selected, it will use this color" addon_id="XF" display_order="2300" group_name="color" value_group="contentBackground" depends_on="" value_type="color" property_type="value" property_name="contentHighlightBg">

<value>"@xf-paletteColor3"</value>

</property>


-<property title="Data list header" description="The title bar of a data list is styled with these settings" addon_id="XF" display_order="20000" group_name="dataList" value_group="" depends_on="" value_type="" property_type="css" property_name="dataListHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-majorHeadingTextColor", "font-weight": "@xf-fontWeightHeavy", "background-color": "@xf-contentHighlightBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorHeavy", "extra": "text-transform: none;" }</value>

</property>


-<property title="Body Text Font" description="This font is used for the text of messages etc." addon_id="XF" display_order="200" group_name="fonts" value_group="font" depends_on="" value_type="string" property_type="value" property_name="fontFamilyBody">

<value>"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif"</value>

</property>


-<property title="Code Font" description="The font list used for mono-spaced text input and output" addon_id="XF" display_order="300" group_name="fonts" value_group="font" depends_on="" value_type="string" property_type="value" property_name="fontFamilyCode">

<value>"'Roboto Mono', 'Andale Mono', 'Ubuntu Mono', monospace"</value>

</property>


-<property title="User Interface Font" description="The font list for your main text" addon_id="XF" display_order="100" group_name="fonts" value_group="font" depends_on="" value_type="string" property_type="value" property_name="fontFamilyUi">

<value>"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif"</value>

</property>


-<property title="Large font size" description="" addon_id="XF" display_order="1400" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeLarge">

<value>"1.6rem"</value>

</property>


-<property title="Larger font size" description="" addon_id="XF" display_order="1500" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeLarger">

<value>"1.8rem"</value>

</property>


-<property title="Largest font size" description="" addon_id="XF" display_order="1600" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeLargest">

<value>"3.6rem"</value>

</property>


-<property title="Normal font size" description="" addon_id="XF" display_order="1000" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeNormal">

<value>"1.3rem"</value>

</property>


-<property title="Small font size" description="" addon_id="XF" display_order="1100" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeSmall">

<value>"1.2rem"</value>

</property>


-<property title="Smaller font size" description="" addon_id="XF" display_order="1200" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeSmaller">

<value>"1.2rem"</value>

</property>


-<property title="Smallest font size" description="" addon_id="XF" display_order="1300" group_name="fonts" value_group="size" depends_on="" value_type="unit" property_type="value" property_name="fontSizeSmallest">

<value>"1.1rem"</value>

</property>


-<property title="Heavy font weight" description="" addon_id="XF" display_order="2200" group_name="fonts" value_group="weight" depends_on="" value_type="number" property_type="value" property_name="fontWeightHeavy">

<value_parameters>step=100 min=100 max=900</value_parameters>

<value>"700"</value>

</property>


-<property title="Form row horizontal padding (outer)" description="This padding is applied to the outer edges of the form content" addon_id="XF" display_order="400" group_name="form" value_group="" depends_on="" value_type="unit" property_type="value" property_name="formRowPaddingHOuter">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Form row vertical padding" description="Each form row has this padding above and below its content" addon_id="XF" display_order="200" group_name="form" value_group="" depends_on="" value_type="unit" property_type="value" property_name="formRowPaddingV">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Global action indicator color" description="This is the base color of the gadgets that display when an action is being processed in the background." addon_id="XF" display_order="400" group_name="misc" value_group="" depends_on="" value_type="color" property_type="value" property_name="globalActionColor">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Inline moderation bar" description="A bar containing controls appears when content is selected for inline moderation. Its appearance is controlled here" addon_id="XF" display_order="20000" group_name="inlineMod" value_group="" depends_on="" value_type="" property_type="css" property_name="inlineModBar" css_components="text,background,border,padding,extra">

<value>{ "color": "#fff", "background-color": "@xf-uix_primaryColorDarker", "border-bottom-width": "0", "border-bottom-color": "xf-intensify(@xf-paletteColor5, 10%)", "padding-top": "@xf-paddingSmall", "padding-bottom": "@xf-paddingSmall" }</value>

</property>


-<property title="Inline moderation highlight color" description="When content is selected for inline moderation, its background color will be replaced with this" addon_id="XF" display_order="2500" group_name="color" value_group="contentBackground" depends_on="" value_type="color" property_type="value" property_name="inlineModHighlightColor">

<value>"mix(@xf-paletteAccent1, @xf-contentBg, 10%)"</value>

</property>


-<property title="Form input" description="Controls the style of most text-input boxes" addon_id="XF" display_order="20000" group_name="input" value_group="" depends_on="" value_type="" property_type="css" property_name="input" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-textColor", "background-color": "@xf-inputBgColor", "border-width": "@xf-borderSize", "border-radius": "@xf-borderRadiusMedium", "border-top-color": "@xf-borderColorHeavy", "border-right-color": "@xf-borderColorLight", "border-bottom-color": "@xf-borderColorLight", "border-left-color": "@xf-borderColorHeavy", "padding": "6px", "extra": "box-shadow: inset 0 1px 4px rgba(0,0,0,.1);" }</value>

</property>


-<property title="Text input box background color" description="" addon_id="XF" display_order="8500" group_name="color" value_group="input" depends_on="" value_type="color" property_type="value" property_name="inputBgColor">

<value>"@xf-contentAltBg"</value>

</property>


-<property title="Form input - disabled" description="When text boxes are disabled, these rules are applied" addon_id="XF" display_order="20200" group_name="input" value_group="" depends_on="" value_type="" property_type="css" property_name="inputDisabled" css_components="text,background,border,extra">

<value>{ "color": "@xf-textColorMuted", "background-color": "fade(@xf-textColorMuted, 20%)" }</value>

</property>


-<property title="Focused text box background color" description="" addon_id="XF" display_order="8600" group_name="color" value_group="input" depends_on="" value_type="color" property_type="value" property_name="inputFocusBgColor">

<value>"@xf-contentBg"</value>

</property>


-<property title="Enable smart node gradients" description="Generates node colors based on the primary brand color" addon_id="" display_order="0" group_name="io" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="io_nodeGradients">

<value>1</value>

</property>


-<property title="Link color" description="Basic hyperlinks on standard background colors will use this style" addon_id="XF" display_order="1000" group_name="color" value_group="links" depends_on="" value_type="color" property_type="value" property_name="linkColor">

<value>"@xf-uix_primaryColor"</value>

</property>


-<property title="Link hover color" description="Basic hyperlinks will turn this color when hovered" addon_id="XF" display_order="1100" group_name="color" value_group="links" depends_on="" value_type="color" property_type="value" property_name="linkHoverColor">

<value>"xf-intensify(@xf-linkColor, 17%)"</value>

</property>


-<property title="Major heading background color" description="" addon_id="XF" display_order="6100" group_name="color" value_group="heading" depends_on="" value_type="color" property_type="value" property_name="majorHeadingBg">

<value>"transparent"</value>

</property>


-<property title="Major heading text color" description="" addon_id="XF" display_order="6200" group_name="color" value_group="heading" depends_on="" value_type="color" property_type="value" property_name="majorHeadingTextColor">

<value>"@xf-textColor"</value>

</property>


-<property title="Member profile header" description="The member profile page's content header is styled with these settings" addon_id="XF" display_order="20000" group_name="member" value_group="" depends_on="" value_type="" property_type="css" property_name="memberHeader" css_components="text,background,border,extra">

<value>{ "background-color": "@xf-contentAltBg", "border-bottom-width": "0", "border-bottom-color": "@xf-borderColorLight" }</value>

</property>


-<property title="Member profile header - name" description="The styling of the name of the member whose page is being viewed is controlled here" addon_id="XF" display_order="20100" group_name="member" value_group="" depends_on="" value_type="" property_type="css" property_name="memberHeaderName" css_components="text,extra">

<value>{ "font-size": "@xf-fontSizeLargest", "color": "@xf-textColor" }</value>

</property>


-<property title="Member tooltip header" description="The member tooltip, which appears when hovering over user names, is styled with these controls" addon_id="XF" display_order="20200" group_name="member" value_group="" depends_on="" value_type="" property_type="css" property_name="memberTooltipHeader" css_components="text,background,border,extra">

<value>{ "background-color": "@xf-contentHighlightBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorLight", "extra": "display: flex;" }</value>

</property>


-<property title="Member tooltip header - name" description="Styling for the name of the user whose tooltip is being displayed" addon_id="XF" display_order="20300" group_name="member" value_group="" depends_on="" value_type="" property_type="css" property_name="memberTooltipName" css_components="text,extra">

<value>{ "font-size": "@xf-fontSizeLarger", "color": "@xf-contentText" }</value>

</property>


-<property title="Menu" description="Controls the main block of all popup menus" addon_id="XF" display_order="20000" group_name="menu" value_group="" depends_on="" value_type="" property_type="css" property_name="menu" css_components="text,background,border_width_simple,border_color_simple,border_radius_simple,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColor", "background-color": "@xf-contentBg", "border-width": "0", "border-color": "@xf-borderColor", "border-radius": "@xf-borderRadiusSmall", "extra": "box-shadow: 0px 10px 20px rgba(0,0,0,0.15), rgba(0,0,0,0.1) 0px 0px 0px 1px;" }</value>

</property>


-<property title="Menu border radius" description="Controls the size of the border radius for all menus" addon_id="XF" display_order="200" group_name="menu" value_group="" depends_on="" value_type="unit" property_type="value" property_name="menuBorderRadius">

<value>"@xf-borderRadiusMedium"</value>

</property>


-<property title="Menu feature border color" description="Popup menus have a thick feature border on their upper edge, the styling of which is controlled here" addon_id="XF" display_order="100" group_name="menu" value_group="" depends_on="" value_type="color" property_type="value" property_name="menuFeatureBorderColor">

<value>"@xf-borderColor"</value>

</property>


-<property title="Menu footer" description="When a popup menu has a bottom, footer element, it will use these settings" addon_id="XF" display_order="20400" group_name="menu" value_group="" depends_on="" value_type="" property_type="css" property_name="menuFooter" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-textColorDimmed", "background-color": "@xf-contentAltBg", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColorLight", "extra": "padding: 8px;" }</value>

</property>


-<property title="Menu header" description="Most menus identify themselves with a header just underneath their top border" addon_id="XF" display_order="20100" group_name="menu" value_group="" depends_on="" value_type="" property_type="css" property_name="menuHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeLarge", "color": "@xf-textColor", "background-color": "@xf-contentBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorLight" }</value>

</property>


-<property title="Menu link row - selected" description="Styling for link rows in menus, when selected or hovered" addon_id="XF" display_order="20500" group_name="menu" value_group="" depends_on="" value_type="" property_type="css" property_name="menuLinkRowSelected" css_components="text,background,extra">

<value>{ "color": "@xf-uix_primaryColor", "text-decoration": "none", "background-color": "@xf-contentHighlightBg" }</value>

</property>


-<property title="Menu tab header" description="Multi-part, tabbed menu headers use these settings" addon_id="XF" display_order="20200" group_name="menu" value_group="" depends_on="" value_type="" property_type="css" property_name="menuTabHeader" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-uix_primaryColor", "background-color": "@xf-contentBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorLight" }</value>

</property>


-<property title="New message indicator" description="Usually a small token attached to the message block, the indicator that a message is new/unread is controlled here" addon_id="XF" display_order="20100" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="messageNewIndicator" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "90%", "color": "contrast(@xf-uix_primaryColorDarker)", "background-color": "@xf-uix_primaryColorDarker", "border-radius": "@xf-borderRadiusSmall", "padding-top": "1px", "padding-right": "4px", "padding-bottom": "1px", "padding-left": "4px" }</value>

</property>


-<property title="Message padding" description="When using the full-size message block, this value defines the size of the padding around the message text" addon_id="XF" display_order="200" group_name="message" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="messagePadding">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Message padding small" description="This value controls the padding around the message text when using the small message block" addon_id="XF" display_order="400" group_name="message" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="messagePaddingSmall">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Message signature" description="Any rules used to apply styling to users' signatures in their messages are defined here" addon_id="XF" display_order="20200" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="messageSignature" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-textColorMuted", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColorLight", "padding-top": "@xf-messagePadding", "padding-bottom": "@xf-messagePadding", "extra": "margin-top: 0;" }</value>

</property>


-<property title="Message user info block" description="Apart from its width, the (left) message user info column is styled here" addon_id="XF" display_order="20000" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="messageUserBlock" css_components="text,background,border_width_simple,border_color_simple,extra">

<value>{ "background-color": "@xf-contentBg", "border-width": "0" }</value>

</property>


-<property title="Message user info elements" description="The elements selected here will be displayed in the message user info block. It will not be displayed below the single column width." addon_id="XF" display_order="600" group_name="message" value_group="user" depends_on="" value_type="template" property_type="value" property_name="messageUserElements">

<value_parameters>template=style_property_template_messageUserElements type=array</value_parameters>

<value>{ "register_date": "1", "message_count": "1", "reaction_score": "1", "trophy_points": "1", "age": "1", "location": "1", "website": "1", "custom_fields": "1" }</value>

</property>


-<property title="Minor heading text color" description="" addon_id="XF" display_order="6400" group_name="color" value_group="heading" depends_on="" value_type="color" property_type="value" property_name="minorHeadingTextColor">

<value>"@xf-textColorDimmed"</value>

</property>


-<property title="Read node icon color" description="" addon_id="XF" display_order="200" group_name="nodeList" value_group="" depends_on="" value_type="color" property_type="value" property_name="nodeIconReadColor">

<value>"@xf-textColorMuted"</value>

</property>


-<property title="Unread node icon color" description="" addon_id="XF" display_order="100" group_name="nodeList" value_group="" depends_on="" value_type="color" property_type="value" property_name="nodeIconUnreadColor">

<value>"#fff"</value>

</property>


-<property title="Description display style" description="To save vertical space, it is possible to hide node descriptions until the node title is hovered, at which point they are displayed in a tooltip" addon_id="XF" display_order="400" group_name="nodeList" value_group="" depends_on="" value_type="radio" property_type="value" property_name="nodeListDescriptionDisplay">

<value_parameters>tooltip={{ phrase('tooltip') }} inline={{ phrase('inline') }} none={{ phrase('none') }}</value_parameters>

<value>"inline"</value>

</property>


-<property title="Sub-forums display style" description="Choose the style in which sub-forums will be displayed within a particular node element, according to the amount of space you want them to occupy" addon_id="XF" display_order="300" group_name="nodeList" value_group="" depends_on="" value_type="radio" property_type="value" property_name="nodeListSubDisplay">

<value_parameters>menu={{ phrase('popup_menu') }} flat={{ phrase('listed_below_node') }} none={{ phrase('none') }}</value_parameters>

<value>"menu"</value>

</property>


-<property title="Overlay header" description="Overlays use a header element to identify their contents, styled here" addon_id="XF" display_order="20000" group_name="overlay" value_group="" depends_on="" value_type="" property_type="css" property_name="overlayHeader" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-fontSizeLarger", "color": "@xf-textColor", "background-color": "@xf-contentHighlightBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorLight", "padding-top": "@xf-paddingMedium", "padding-right": "@xf-paddingLarge", "padding-bottom": "@xf-paddingMedium", "padding-left": "@xf-paddingLarge" }</value>

</property>


-<property title="Large padding" description="" addon_id="XF" display_order="2200" group_name="borderSpacing" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="paddingLarge">

<value>"16px"</value>

</property>


-<property title="Largest padding" description="" addon_id="XF" display_order="2300" group_name="borderSpacing" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="paddingLargest">

<value>"24px"</value>

</property>


-<property title="Medium padding" description="" addon_id="XF" display_order="2100" group_name="borderSpacing" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="paddingMedium">

<value>"10px"</value>

</property>


-<property title="Small padding" description="" addon_id="XF" display_order="2000" group_name="borderSpacing" value_group="padding" depends_on="" value_type="unit" property_type="value" property_name="paddingSmall">

<value>"4px"</value>

</property>


-<property title="Page background color" description="The background of the page itself, on which all other content rests" addon_id="XF" display_order="2100" group_name="color" value_group="contentBackground" depends_on="" value_type="color" property_type="value" property_name="pageBg">

<value>"@xf-paletteColor4"</value>

</property>


-<property title="Page edge spacer" description="" addon_id="XF" display_order="3100" group_name="borderSpacing" value_group="spacer" depends_on="" value_type="unit" property_type="value" property_name="pageEdgeSpacer">

<value>"20px"</value>

</property>


-<property title="Accent 1" description="" addon_id="XF" display_order="2000" group_name="palette" value_group="accent" depends_on="" value_type="color" property_type="value" property_name="paletteAccent1">

<value_parameters>hidePalette=true</value_parameters>

<value>"#31333a"</value>

</property>


-<property title="Accent 2" description="" addon_id="XF" display_order="2100" group_name="palette" value_group="accent" depends_on="" value_type="color" property_type="value" property_name="paletteAccent2">

<value_parameters>hidePalette=true</value_parameters>

<value>"#31333a"</value>

</property>


-<property title="Accent 3" description="" addon_id="XF" display_order="2200" group_name="palette" value_group="accent" depends_on="" value_type="color" property_type="value" property_name="paletteAccent3">

<value_parameters>hidePalette=true</value_parameters>

<value>"#c83637"</value>

</property>


-<property title="Color 1" description="" addon_id="XF" display_order="1000" group_name="palette" value_group="primary" depends_on="" value_type="color" property_type="value" property_name="paletteColor1">

<value_parameters>hidePalette=true</value_parameters>

<value>"#22242b"</value>

</property>


-<property title="Color 2" description="" addon_id="XF" display_order="1100" group_name="palette" value_group="primary" depends_on="" value_type="color" property_type="value" property_name="paletteColor2">

<value_parameters>hidePalette=true</value_parameters>

<value>"rgb(244, 233, 233)"</value>

</property>


-<property title="Color 3" description="" addon_id="XF" display_order="1200" group_name="palette" value_group="primary" depends_on="" value_type="color" property_type="value" property_name="paletteColor3">

<value_parameters>hidePalette=true</value_parameters>

<value>"#22242b"</value>

</property>


-<property title="Color 4" description="" addon_id="XF" display_order="1300" group_name="palette" value_group="primary" depends_on="" value_type="color" property_type="value" property_name="paletteColor4">

<value_parameters>hidePalette=true</value_parameters>

<value>"#17191f"</value>

</property>


-<property title="Color 5" description="" addon_id="XF" display_order="1400" group_name="palette" value_group="primary" depends_on="" value_type="color" property_type="value" property_name="paletteColor5">

<value_parameters>hidePalette=true</value_parameters>

<value>"@xf-paletteColor2"</value>

</property>


-<property title="Neutral 1" description="" addon_id="XF" display_order="3000" group_name="palette" value_group="neutral" depends_on="" value_type="color" property_type="value" property_name="paletteNeutral1">

<value_parameters>hidePalette=true</value_parameters>

<value>"desaturate(rgb(140, 156, 189), 10%)"</value>

</property>


-<property title="Neutral 2" description="" addon_id="XF" display_order="3100" group_name="palette" value_group="neutral" depends_on="" value_type="color" property_type="value" property_name="paletteNeutral2">

<value_parameters>hidePalette=true</value_parameters>

<value>"desaturate(rgb(184, 196, 224), 10%)"</value>

</property>


-<property title="Neutral 3" description="" addon_id="XF" display_order="3200" group_name="palette" value_group="neutral" depends_on="" value_type="color" property_type="value" property_name="paletteNeutral3">

<value_parameters>hidePalette=true</value_parameters>

<value>"desaturate(rgb(222, 229, 242), 10%)"</value>

</property>


-<property title="Progress bar color" description="The progress bar appears at the top of the window when the system is waiting for a response from the server" addon_id="XF" display_order="300" group_name="misc" value_group="" depends_on="" value_type="color" property_type="value" property_name="progressBarColor">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Favicon URL (32x32)" description="Path to the small logo that is associated with bookmarks pointing to your site" addon_id="XF" display_order="400" group_name="basic" value_group="logo" depends_on="" value_type="string" property_type="value" property_name="publicFaviconUrl">

<value>"@xf-uix_imagePath/images/favicon.png"</value>

</property>


-<property title="Footer" description="" addon_id="XF" display_order="20000" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="publicFooter" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColorDimmed", "background-color": "@xf-contentHighlightBg" }</value>

</property>


-<property title="Footer links" description="Controls styling for individual links within the footer" addon_id="XF" display_order="20100" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="publicFooterLink" css_components="text,extra">

<value>{ "color": "@xf-textColor" }</value>

</property>


-<property title="Header/logo row" description="" addon_id="XF" display_order="20000" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicHeader" css_components="text,background,extra">

<value>{ "color": "rgba(255,255,255,.7)", "background-color": "@xf-uix_primaryColor", "extra": "padding-top: @xf-paddingLarge;\npadding-bottom: @xf-paddingLarge;" }</value>

</property>


-<property title="Header adjustment color" description="" addon_id="XF" display_order="100" group_name="headerNav" value_group="header" depends_on="" value_type="color" property_type="value" property_name="publicHeaderAdjustColor">

<value>""</value>

</property>


-<property title="Logo URL" description="" addon_id="XF" display_order="100" group_name="basic" value_group="logo" depends_on="" value_type="string" property_type="value" property_name="publicLogoUrl">

<value>"@xf-uix_imagePath/io/images/logo.png"</value>

</property>


-<property title="2x logo URL" description="" addon_id="XF" display_order="200" group_name="basic" value_group="logo" depends_on="" value_type="string" property_type="value" property_name="publicLogoUrl2x">

<value>""</value>

</property>


-<property title="Navigation row" description="" addon_id="XF" display_order="20100" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicNav" css_components="text,background,extra">

<value>{ "color": "@xf-textColorMuted", "font-weight": "@xf-fontWeightNormal", "background-color": "@xf-contentBg" }</value>

</property>


-<property title="Navigation collapse width" description="Below this page width, the navigation system will collapse down into an off canvas menu" addon_id="XF" display_order="1300" group_name="headerNav" value_group="navigation" depends_on="" value_type="unit" property_type="value" property_name="publicNavCollapseWidth">

<value>"@xf-responsiveWide"</value>

</property>


-<property title="Navigation padding horizontal" description="Defines the amount of padding applied horizontally to each main navigational tab in the header" addon_id="XF" display_order="4100" group_name="headerNav" value_group="navPad" depends_on="" value_type="unit" property_type="value" property_name="publicNavPaddingH">

<value>"16px"</value>

</property>


-<property title="Navigation padding vertical" description="This value defines the amount of padding applied to the main navigational tabs in the header" addon_id="XF" display_order="4000" group_name="headerNav" value_group="navPad" depends_on="" value_type="unit" property_type="value" property_name="publicNavPaddingV">

<value>"16px"</value>

</property>


-<property title="Navigation row - selected tab" description="" addon_id="XF" display_order="20300" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicNavSelected" css_components="text,background,border,border_radius,extra">

<value>{ "color": "@xf-uix_secondaryColor", "font-weight": "@xf-fontWeightHeavy", "extra": "// box-shadow: inset 0 -2px @xf-uix_secondaryColor;" }</value>

</property>


-<property title="Sticky navigation element" description="" addon_id="XF" display_order="1200" group_name="headerNav" value_group="navigation" depends_on="" value_type="radio" property_type="value" property_name="publicNavSticky">

<value_parameters>primary={{ phrase('primary_navigation_row_only') }} all={{ phrase('primary_and_sub_navigation_rows') }} none={{ phrase('none') }}</value_parameters>

<value>"all"</value>

</property>


-<property title="Navigation row - tab" description="" addon_id="XF" display_order="20200" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicNavTab" css_components="text,background,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-textColorMuted", "text-decoration": "none", "extra": "text-transform: uppercase;\nline-height: 1;\nborder-top-left-radius: @xf-borderRadiusSmall;\nborder-top-right-radius: @xf-borderRadiusSmall;\nheight: @xf-uix_navigationBarHeight;" }</value>

</property>


-<property title="Navigation row - hovered tab" description="" addon_id="XF" display_order="20400" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicNavTabHover" css_components="text,background,extra">

<value>{ "color": "@xf-textColor", "text-decoration": "none" }</value>

</property>


-<property title="Navigation row - menu open" description="Styling applied when the popup menu for the current tab is visible" addon_id="XF" display_order="20450" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicNavTabMenuOpen" css_components="text,background,extra">

<value>{ "text-decoration": "none" }</value>

</property>


-<property title="Staff tools bar" description="" addon_id="XF" display_order="20700" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicStaffBar" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "rgba(255,255,255,.7)", "extra": "background: linear-gradient(-270deg, @xf-uix_primaryColor 0%, lighten(@xf-uix_primaryColor, 15%) 100%);" }</value>

</property>


-<property title="Sub-navigation row" description="" addon_id="XF" display_order="20500" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicSubNav" css_components="text,background,border,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-subNavTextColor", "background-color": "@xf-subNavBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColor" }</value>

</property>


-<property title="Sub-navigation row - hovered element" description="" addon_id="XF" display_order="20600" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicSubNavElHover" css_components="text,extra">

<value>{ "color": "@xf-textColor" }</value>

</property>


-<property title="Sub-navigation row - menu-open element" description="Styles sub-navigation elements whose popup menu is currently open" addon_id="XF" display_order="20650" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="publicSubNavElMenuOpen" css_components="text,background,extra">

<value>{ "text-decoration": "none" }</value>

</property>


-<property title="Sub-navigation padding vertical" description="Defines the amount of vertical padding applied to each item in the sub-navigation bar in the header" addon_id="XF" display_order="5000" group_name="headerNav" value_group="subNavPad" depends_on="" value_type="unit" property_type="value" property_name="publicSubNavPaddingV">

<value>"2px"</value>

</property>


-<property title="Page edge spacer removal break point" description="When the page is narrower than this value, the spacers at the edge of the page are discarded" addon_id="XF" display_order="2300" group_name="page" value_group="responsive" depends_on="" value_type="unit" property_type="value" property_name="responsiveEdgeSpacerRemoval">

<value>"@xf-responsiveWide"</value>

</property>


-<property title="Display page jump buttons on scroll" description="If enabled, floating buttons will be displayed shortly after the page is scrolled which allow you to jump to the top or bottom of the page. If this is only triggered when scrolling up, only a jump to top button will be displayed." addon_id="XF" display_order="3000" group_name="page" value_group="" depends_on="" value_type="radio" property_type="value" property_name="scrollJumpButtons">

<value_parameters>={{ phrase('scroll_buttons_do_not_display') }} up={{ phrase('scroll_buttons_when_scrolling_up') }} both={{ phrase('scroll_buttons_when_scrolling_up_or_down') }}</value_parameters>

<value>"both"</value>

</property>


-<property title="Sidebar and side navigation spacer" description="" addon_id="XF" display_order="1000" group_name="page" value_group="sidebar" depends_on="" value_type="unit" property_type="value" property_name="sidebarSpacer">

<value>"@xf-elementSpacer"</value>

</property>


-<property title="Standalone tabs" description="Tabs that are not part of block headers are styled here" addon_id="XF" display_order="20000" group_name="tab" value_group="" depends_on="" value_type="" property_type="css" property_name="standaloneTab" css_components="text,background,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-textColorMuted", "extra": "border-bottom: 1px solid @xf-borderColor;\nfont-weight: @xf-fontWeightHeavy;\ntext-transform: uppercase;\noutline: none;" }</value>

</property>


-<property title="Standalone tabs - selected tab" description="The selected tab in groups that are not part of block headers" addon_id="XF" display_order="20100" group_name="tab" value_group="" depends_on="" value_type="" property_type="css" property_name="standaloneTabSelected" css_components="text,background,border_color_simple,extra">

<value>{ "color": "@xf-uix_secondaryColor", "border-color": "@xf-uix_secondaryColor" }</value>

</property>


-<property title="Style type" description="This defines the general type of style in use based on whether the content is placed on a light or dark background. This may change how colors are selected in certain scenarios." addon_id="XF" display_order="100" group_name="palette" value_group="setup" depends_on="" value_type="radio" property_type="value" property_name="styleType">

<value_parameters>light={{ phrase('light') }} dark={{ phrase('dark') }}</value_parameters>

<value>"dark"</value>

</property>


-<property title="Page sub-navigation text color" description="" addon_id="XF" display_order="6090" group_name="color" value_group="chrome" depends_on="" value_type="color" property_type="value" property_name="subNavTextColor">

<value>"@xf-textColorMuted"</value>

</property>


-<property title="Text color" description="Unless otherwise specified, text will be this color" addon_id="XF" display_order="100" group_name="color" value_group="textBasic" depends_on="" value_type="color" property_type="value" property_name="textColor">

<value>"@xf-paletteNeutral3"</value>

</property>


-<property title="Accented content text color" description="" addon_id="XF" display_order="3200" group_name="color" value_group="textOther" depends_on="" value_type="color" property_type="value" property_name="textColorAccentContent">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Attention-grabbing text color" description="" addon_id="XF" display_order="3300" group_name="color" value_group="textOther" depends_on="" value_type="color" property_type="value" property_name="textColorAttention">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Dimmed text color" description="" addon_id="XF" display_order="200" group_name="color" value_group="textBasic" depends_on="" value_type="color" property_type="value" property_name="textColorDimmed">

<value>"@xf-paletteNeutral2"</value>

</property>


-<property title="Emphasized text color" description="" addon_id="XF" display_order="3100" group_name="color" value_group="textOther" depends_on="" value_type="color" property_type="value" property_name="textColorEmphasized">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Feature text color" description="" addon_id="XF" display_order="3000" group_name="color" value_group="textOther" depends_on="" value_type="color" property_type="value" property_name="textColorFeature">

<value>"@xf-textColor"</value>

</property>


-<property title="Muted text color" description="" addon_id="XF" display_order="300" group_name="color" value_group="textBasic" depends_on="" value_type="color" property_type="value" property_name="textColorMuted">

<value>"@xf-paletteNeutral1"</value>

</property>


-<property title="Enable Abridged Signatures" description="" addon_id="" display_order="1400" group_name="message" value_group="uix_abridgedSignatures" depends_on="" value_type="boolean" property_type="value" property_name="uix_abridgedSignatures">

<value>1</value>

</property>


-<property title="Mobile active navigation title" description="Adds a short version of the active navigation to the header when navigation links collapse to the canvas navigation" addon_id="" display_order="40" group_name="basic" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_activeNavTitle">

<value>1</value>

</property>


-<property title="Mobile active navigation title style" description="" addon_id="" display_order="0" group_name="basic" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_activeNavTitleStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "18px", "color": "#fff", "border-left-width": "1px", "border-left-color": "rgba(255,255,255,.3)", "padding-right": "@xf-paddingMedium", "padding-left": "@xf-paddingMedium", "extra": "font-weight: @xf-fontWeightHeavy;" }</value>

</property>


-<property title="List of additional css templates to include" description="A comma separated list of additional CSS/less templates to load. Requires the .css or .less suffix" addon_id="" display_order="400" group_name="uix_globalSettings" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_additionalCss">

<value>"io.less,iodark.less"</value>

</property>


-<property title="Avatar shape" description="Changes the shape of avatars (may overwrite avatar border radius style property)" addon_id="" display_order="10" group_name="avatar" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_avatarShape">

<value_parameters>0=Default 1=Circle 2=Square 3=Diamond 4=Pentagon 5=Hexagon 6=Octagon</value_parameters>

<value>"1"</value>

</property>


-<property title="Backstretch" description="Adds an image or image slideshow to any target element" addon_id="" display_order="1000" group_name="uix_globalSettings" value_group="uix_backstretch" depends_on="" value_type="boolean" property_type="value" property_name="uix_backstretch">

<value>0</value>

</property>


-<property title="Backstretch duration" description="Sets the amount of time (in milliseconds) that each image will be visible." addon_id="" display_order="1400" group_name="uix_globalSettings" value_group="uix_backstretch" depends_on="" value_type="number" property_type="value" property_name="uix_backstretchDuration">

<value>"4000"</value>

</property>


-<property title="Backstretch fade" description="Sets the speed (in milliseconds) that the images fade out/in." addon_id="" display_order="1300" group_name="uix_globalSettings" value_group="uix_backstretch" depends_on="" value_type="number" property_type="value" property_name="uix_backstretchFade">

<value>"500"</value>

</property>


-<property title="Backstretch images" description="Enter a list of images where each image is wrapped in quotes. If you add multiple images, every line minus the last one should be followed by a comma. Ex: "image/bg1.jpg", "image/bg2.jpg"" addon_id="" display_order="1100" group_name="uix_globalSettings" value_group="uix_backstretch" depends_on="uix_backstretch" value_type="string" property_type="value" property_name="uix_backstretchImages">

<value>"\"@xf-uix_imagePath/images/bg/1.jpg\", \"@xf-uix_imagePath/images/bg/2.jpg\", \"@xf-uix_imagePath/images/bg/3.jpg\""</value>

</property>


-<property title="Backstretch selector" description="CSS selector for where to apply Backstretch to. For entire document, enter: body" addon_id="" display_order="1200" group_name="uix_globalSettings" value_group="uix_backstretch" depends_on="" value_type="string" property_type="value" property_name="uix_backstretchSelector">

<value>"body"</value>

</property>


-<property title="Beta Mode" description="For development and bug-finding purposes. DO NOT enable on a live site." addon_id="" display_order="10200" group_name="uix_globalSettings" value_group="theme" depends_on="" value_type="boolean" property_type="value" property_name="uix_betaMode">

<value>0</value>

</property>


-<property title="Block body" description="Styles the body of block level components" addon_id="" display_order="10" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_blockBody" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>[]</value>

</property>


-<property title="Block container" description="Styles the container for Block level components" addon_id="" display_order="0" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_blockContainer" css_components="text,background,border,padding,extra">

<value>{ "extra": "box-shadow: @xf-uix_elevation1;" }</value>

</property>


-<property title="Block message" description="" addon_id="" display_order="20" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_blockMessage" css_components="text,background,border,padding,extra">

<value>{ "background-color": "@xf-contentBg", "extra": "box-shadow: @xf-uix_elevation1;" }</value>

</property>


-<property title="Block outer" description="" addon_id="" display_order="30" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_blockOuter" css_components="background,border,padding,extra">

<value>{ "padding-bottom": "@xf-blockPaddingV" }</value>

</property>


-<property title="Block header tab" description="" addon_id="" display_order="0" group_name="block" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_blockTabHeaderTab" css_components="text,background,border,border_radius,padding,extra">

<value>[]</value>

</property>


-<property title="Enable Smart Border Radius Javascript" description="Enables context-aware border-radius rules. Very helpful, especially in the header." addon_id="" display_order="5000" group_name="borderSpacing" value_group="uix_smartBorder" depends_on="" value_type="boolean" property_type="value" property_name="uix_borderRadiusJs">

<value>0</value>

</property>


-<property title="Border Radius Javascript Selectors" description="Only used if smart radius javascript is enabled. Comma separated list of javascript selectors. Do not include single quotes (')" addon_id="" display_order="5100" group_name="borderSpacing" value_group="uix_smartBorder" depends_on="" value_type="string" property_type="value" property_name="uix_borderRadiusSelectors">

<value>".p-footer-inner, .uix_extendedFooter, .p-nav, .p-sectionLinks, .p-staffBar, .p-header, #wpadminbar"</value>

</property>


-<property title="Bottom breadcrumb location" description="" addon_id="" display_order="200" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_bottomBreadcrumbLocation">

<value_parameters>belowMainContainer=Below main container mainContainerBottom = Bottom of main container mainContentBottom=Bottom of main content belowMainContent=Below main content</value_parameters>

<value>"belowMainContainer"</value>

</property>


-<property title="Logo breakpoint" description="Max viewport width to switch to the brandmark image. Use 100% for always, 0 for never, and other values in pixels" addon_id="" display_order="700" group_name="basic" value_group="uix_responsiveLogo" depends_on="" value_type="string" property_type="value" property_name="uix_brandmarkImage__breakpoint">

<value>"0"</value>

</property>


-<property title="Breadcrumb Item" description="Individual breadcrumb items" addon_id="" display_order="100" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_breadcrumbItem" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>{ "color": "@xf-textColorMuted" }</value>

</property>


-<property title="Breadcrumb Item (Active)" description="" addon_id="" display_order="110" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_breadcrumbItem__active" css_components="text,background,extra">

<value>{ "color": "@xf-textColorDimmed" }</value>

</property>


-<property title="Breadcrumb Container" description="Styles the breadcrumb container" addon_id="" display_order="90" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_breadcrumbStyle" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>{ "color": "@xf-textColorMuted" }</value>

</property>


-<property title="Breadcrumb wrapper" description="container surrounding breadcrumb and page action if applicable" addon_id="" display_order="80" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_breadcrumbWrapper" css_components="background,border,border_radius,padding,extra">

<value>[]</value>

</property>


-<property title="Breadcrumb Wrapper (bottom)" description="" addon_id="" display_order="0" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_breadcrumbWrapperBottom" css_components="text,background,border,border_radius,padding,extra">

<value>{ "extra": "margin-top: @xf-elementSpacer;" }</value>

</property>


-<property title="Button - default (active)" description="" addon_id="" display_order="20120" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonActive" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "fade(@xf-buttonDefault--color, 20%)" }</value>

</property>


-<property title="Button - call to action (active)" description="" addon_id="" display_order="20320" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonCtaActive" css_components="text,background,border,padding,extra">

<value>{ "extra": "background: linear-gradient(darken(@xf-uix_secondaryColor, 15%), darken(@xf-uix_secondaryColor, 25%) );" }</value>

</property>


-<property title="Button - call to action (hover)" description="" addon_id="" display_order="20310" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonCtaHover" css_components="text,background,extra">

<value>{ "extra": "box-shadow: @xf-uix_elevation2;\nbackground: linear-gradient(darken(@xf-uix_secondaryColor, 5%), darken(@xf-uix_secondaryColor, 15%) );" }</value>

</property>


-<property title="Button - default (hover)" description="" addon_id="" display_order="20110" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonHover" css_components="text,background,extra">

<value>{ "background-color": "fade(@xf-buttonDefault--color, 15%)" }</value>

</property>


-<property title="Button Group Link" description="Styles button group links" addon_id="" display_order="0" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonLink" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-contentBg", "border-width": "1px", "border-color": "@xf-borderColor", "extra": "text-transform: initial;" }</value>

</property>


-<property title="Button - primary (active)" description="" addon_id="" display_order="20220" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonPrimaryActive" css_components="text,background,border,padding,extra">

<value>{ "extra": "background: linear-gradient(darken(@xf-uix_primaryColor, 15%), darken(@xf-uix_primaryColor, 25%) );" }</value>

</property>


-<property title="Button primary (hover)" description="" addon_id="" display_order="20210" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonPrimaryHover" css_components="text,background,extra">

<value>{ "color": "#fff", "extra": "box-shadow: @xf-uix_elevation2;\nbackground: linear-gradient(darken(@xf-uix_primaryColor, 5%), darken(@xf-uix_primaryColor, 15%) );" }</value>

</property>


-<property title="Button ripple effect" description="Adds a ripple animation to buttons on press" addon_id="" display_order="100" group_name="button" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_buttonRipple">

<value>1</value>

</property>


-<property title="Button (small)" description="Styles small (and also filter bar) buttons" addon_id="" display_order="20500" group_name="button" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_buttonSmall" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-fontSizeSmaller", "padding": "0", "padding-right": "8px", "padding-left": "8px", "extra": "height: 28px;\nline-height: 28px;" }</value>

</property>


-<property title="Canvas" description="" addon_id="" display_order="0" group_name="uix_canvas" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_canvas" css_components="text,background,border,padding,extra">

<value>{ "color": "@xf-textColorDimmed", "background-color": "@xf-contentBg" }</value>

</property>


-<property title="Canvas Header" description="" addon_id="" display_order="0" group_name="uix_canvas" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_canvasHeader" css_components="text,background,border,padding,extra">

<value>[]</value>

</property>


-<property title="Canvas navigation item" description="" addon_id="" display_order="0" group_name="uix_canvas" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_canvasNavItem" css_components="text,background,border,padding,extra">

<value>{ "extra": "border-top-right-radius: @xf-borderRadiusMedium;\nborder-bottom-right-radius: @xf-borderRadiusMedium;" }</value>

</property>


-<property title="Canvas navigation item (active)" description="" addon_id="" display_order="0" group_name="uix_canvas" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_canvasNavItemActive" css_components="text,background,border,padding,extra">

<value>{ "color": "@xf-uix_primaryColor", "background-color": "rgba(0,0,0,.08)" }</value>

</property>


-<property title="Canvas navigation item (hover)" description="" addon_id="" display_order="0" group_name="uix_canvas" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_canvasNavItemHover" css_components="text,background,border,padding,extra">

<value>{ "background-color": "xf-intensify(@xf-pageBg, 3%)" }</value>

</property>


-<property title="Canvas navigation sub-item" description="" addon_id="" display_order="0" group_name="uix_canvas" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_canvasNavSubItem" css_components="text,background,border,padding,extra">

<value>{ "extra": "border-top-right-radius: @xf-borderRadiusMedium;\nborder-bottom-right-radius: @xf-borderRadiusMedium;" }</value>

</property>


-<property title="Collapsible categories" description="Enables a trigger to collapse 1st level category nodes" addon_id="" display_order="1000" group_name="nodeList" value_group="uix_nodeCategories" depends_on="" value_type="boolean" property_type="value" property_name="uix_categoryCollapse">

<value>1</value>

</property>


-<property title="Category description" description="" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_categoryDescription" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "@xf-fontSizeSmaller", "color": "#fff", "font-weight": "@xf-fontWeightNormal", "padding-top": "4px", "extra": "line-height: 1.5;" }</value>

</property>


-<property title="Category description display" description="" addon_id="" display_order="1100" group_name="nodeList" value_group="uix_nodeCategories" depends_on="" value_type="radio" property_type="value" property_name="uix_categoryDescriptionDisplay">

<value_parameters>tooltip=Tooltip inline=Inline none=None</value_parameters>

<value>"tooltip"</value>

</property>


-<property title="Category icon style" description="Styles the category strip icon if applicable" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_categoryIconStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "24px", "color": "#fff", "padding-right": "@xf-paddingMedium" }</value>

</property>


-<property title="Category Strip" description="Styles the category strip for nodes" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_categoryStrip" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>{ "font-size": "@xf-fontSizeLarge", "color": "#fff", "font-weight": "@xf-fontWeightHeavy", "border-bottom-width": "0", "padding": "@xf-paddingLarge", "extra": "line-height: 1;\nbackground-size: cover;\nbackground-position: center;\nbackground: linear-gradient(-270deg, @xf-uix_primaryColor 0%, xf-diminish(@xf-uix_primaryColor, 15%) 100%);" }</value>

</property>


-<property title="Category strip icons" description="Adds the UI.X Folder icon to category strips" addon_id="" display_order="200" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_categoryStripIcons">

<value>0</value>

</property>


-<property title="Move category strip outside wrapper" description="Moves the category strip outside of the level 1 node container" addon_id="" display_order="1200" group_name="nodeList" value_group="uix_nodeCategories" depends_on="" value_type="boolean" property_type="value" property_name="uix_categoryStripOutsideWrapper">

<value>0</value>

</property>


-<property title="Clickable threads" description="Makes the entire thread list item clickable" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_clickableThreads">

<value>1</value>

</property>


-<property title="Collapsible extra info" description="Collapses the postbit extra info (such as joined, messages, trophies, etc..) and adds a trigger to expand them" addon_id="" display_order="1000" group_name="message" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_collapseExtraInfo">

<value>1</value>

</property>


-<property title="Collapse staffbar links" description="" addon_id="" display_order="7200" group_name="headerNav" value_group="uix_staffbar" depends_on="" value_type="boolean" property_type="value" property_name="uix_collapseStaffbarLinks">

<value>1</value>

</property>


-<property title="Collapsible sidebar" description="Adds a trigger to collapse and expand the sidebar" addon_id="" display_order="100" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_collapsibleSidebar">

<value>1</value>

</property>


-<property title="Collapsible sticky threads" description="Allows the users to collapse sticky threads. Requires Separate Sticky Threads" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="uix_separateThreads" value_type="boolean" property_type="value" property_name="uix_collapsibleStickyThreads">

<value>1</value>

</property>


-<property title="Condense visitor tabs" description="" addon_id="" display_order="2250" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="boolean" property_type="value" property_name="uix_condenseVisitorTabs">

<value>0</value>

</property>


-<property title="Content Wrapper" description="Sets where the styling for Content Wrapper will be applied" addon_id="" display_order="300" group_name="page" value_group="page" depends_on="" value_type="select" property_type="value" property_name="uix_contentWrapper">

<value_parameters>0=Default (no wrapper) 1= Wrapper around main content and sidebar 2=Wrapper around main content only</value_parameters>

<value>"0"</value>

</property>


-<property title="Content Wrapper" description="" addon_id="" display_order="0" group_name="page" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_contentWrapperStyle" css_components="background,border,extra">

<value>{ "background-color": "#fff", "border-width": "@xf-borderSize", "border-color": "@xf-borderColor" }</value>

</property>


-<property title="Copyright row order" description="" addon_id="" display_order="300" group_name="footer" value_group="uix_footerPositions" depends_on="" value_type="number" property_type="value" property_name="uix_copyrightOrder">

<value>"20"</value>

</property>


-<property title="Add default navigation tab icon" description="This will add a stock default navigation icon. (Note: this may cause any custom icons you set to be overwritten. Disable this feature if this is the case.)" addon_id="" display_order="1800" group_name="headerNav" value_group="navigation" depends_on="uix_navTabIcons" value_type="boolean" property_type="value" property_name="uix_defaultNavIcon">

<value>1</value>

</property>


-<property title="Add default sidebar icons for custom HTML widgets" description="" addon_id="" display_order="350" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_defaultSidebarIcon">

<value>1</value>

</property>


-<property title="Separate Header from Content Wrapper" description="Adds margin-bottom to header" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_detachedNavigation">

<value>1</value>

</property>


-<property title="Discussion list" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionList" css_components="background,border,border_radius,padding,extra">

<value>{ "border-radius": "@xf-blockBorderRadius" }</value>

</property>


-<property title="Discussion list animation" description="Adds animation to discussion list items on page load" addon_id="" display_order="3200" group_name="misc" value_group="uix_pageAnimation" depends_on="" value_type="boolean" property_type="value" property_name="uix_discussionListAnimation">

<value>1</value>

</property>


-<property title="Width to collapse discussion list items" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_discussionListCollapseWidth">

<value>"10000px"</value>

</property>


-<property title="Discussion list item" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionListItem" css_components="text,background,border,border_radius">

<value>{ "border-radius": "@xf-borderRadiusLarge" }</value>

</property>


-<property title="Discussion list item (deleted)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionListItemDeleted" css_components="background,border">

<value>[]</value>

</property>


-<property title="Discussion list item (even)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_discussionListItemEven">

<value>""</value>

</property>


-<property title="Discussion list item (hover)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_discussionListItemHover">

<value>"@xf-contentAltBg"</value>

</property>


-<property title="Discussion list item (moderated)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionListItemModerated" css_components="background,border">

<value>[]</value>

</property>


-<property title="Discussion list item (sticky)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionListItemSticky" css_components="background,border">

<value>[]</value>

</property>


-<property title="Title" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionListTitle" css_components="text">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-textColor", "font-weight": "@xf-fontWeightHeavy" }</value>

</property>


-<property title="Title (unread)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_discussionListTitleUnread" css_components="text">

<value>{ "font-weight": "@xf-fontWeightHeavy" }</value>

</property>


-<property title="Elevation 1" description="Sets the box-shadow value for elevation level 1" addon_id="" display_order="2000" group_name="uix_globalSettings" value_group="elevation" depends_on="" value_type="string" property_type="value" property_name="uix_elevation1">

<value>"0 4px 15px 0 fade(shade(darken(@xf-pageBg, 20%), 40%), 20%)"</value>

</property>


-<property title="Elevation 2" description="Sets the box shadow value for elevation level 2" addon_id="" display_order="2100" group_name="uix_globalSettings" value_group="elevation" depends_on="" value_type="string" property_type="value" property_name="uix_elevation2">

<value>"0 4px 15px 0 fade(shade(darken(@xf-pageBg, 20%), 40%), 20%)"</value>

</property>


-<property title="Enable Extended Footer" description="" addon_id="" display_order="100" group_name="footer" value_group="uix_extendedFooter" depends_on="" value_type="boolean" property_type="value" property_name="uix_enableExtendedFooter">

<value>1</value>

</property>


-<property title="Main page tabs" description="" addon_id="" display_order="5000" group_name="uix_globalSettings" value_group="uix_mainTabs" depends_on="" value_type="boolean" property_type="value" property_name="uix_enableMainTabs">

<value>0</value>

</property>


-<property title="Welcome block image hero" description="Adds the welcome block image to the entire header component. (Note: only applicable when welcome block is in header)" addon_id="" display_order="0" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_enableWelcomeHeaderImage">

<value>0</value>

</property>


-<property title="Extended footer order" description="" addon_id="" display_order="200" group_name="footer" value_group="uix_footerPositions" depends_on="" value_type="number" property_type="value" property_name="uix_extendedFooterOrder">

<value>"10"</value>

</property>


-<property title="Extended Footer" description="" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_extendedFooterStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-contentBg", "border-top-width": "0", "border-top-color": "@xf-borderColor", "border-bottom-width": "0", "padding-top": "@xf-paddingLargest * 2", "padding-bottom": "@xf-paddingLargest * 2", "extra": "line-height: 1.7;" }</value>

</property>


-<property title="Extended Footer White Text" description="Checking this option will add CSS to make all text white for legibility. Only use this Style Property if you have a dark background that is causing legibility issues. (Most often useful for a dark footer on a light theme.)" addon_id="" display_order="2400" group_name="footer" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_extendedFooter__whiteText">

<value>0</value>

</property>


-<property title="Add Icon for external links" description="If enabled, will add the Open In New icon to external anchors. This uses the board options for the site url and home url." addon_id="" display_order="100" group_name="uix_icons" value_group="uix_iconOptions" depends_on="" value_type="boolean" property_type="value" property_name="uix_externalLinkIcon">

<value>1</value>

</property>


-<property title="Page action as floating action button" description="Adds the page action as a floating action button" addon_id="" display_order="1000" group_name="button" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_fab">

<value_parameters>never=Never mobile=Mobile always=Always</value_parameters>

<value>"never"</value>

</property>


-<property title="Floating action button placeholder background color" description="Sets the background color of the placeholder spacer in the footer." addon_id="" display_order="1300" group_name="button" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_fabBarBackground">

<value>"@xf-contentBg"</value>

</property>


-<property title="Show FAB on scroll up only" description="" addon_id="" display_order="1200" group_name="button" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_fabScroll">

<value>1</value>

</property>


-<property title="Floating action button Viewport width" description="Sets the minimum viewport width to hide the floating action button" addon_id="" display_order="1100" group_name="button" value_group="" depends_on="uix_fab" value_type="string" property_type="value" property_name="uix_fabVw">

<value>"@xf-responsiveMedium"</value>

</property>


-<property title="Footer chooser" description="Styles the footer chooser (ex. style chooser, width toggle, language chooser)" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerChooser" css_components="text,background,border,extra">

<value>{ "color": "@xf-textColorMuted", "border-width": "2px", "border-color": "@xf-borderColor" }</value>

</property>


-<property title="Footer chooser hover" description="" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerChooserHover" css_components="text,background,extra">

<value>{ "color": "@xf-textColor", "background-color": "@xf-borderColor" }</value>

</property>


-<property title="Footer copyright row" description="" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerCopyrightRow" css_components="text,background,border,padding,extra">

<value>{ "color": "@xf-textColorDimmed", "padding-top": "@xf-paddingLarge", "padding-bottom": "@xf-paddingLarge" }</value>

</property>


-<property title="Footer widget icons" description="Adds icons to the footer widget titles" addon_id="" display_order="2200" group_name="footer" value_group="uix_footerWidgets" depends_on="" value_type="boolean" property_type="value" property_name="uix_footerIcons">

<value>1</value>

</property>


-<property title="Move footer inside main content" description="Moves the footer into the main content, as opposed to being full width at the bottom" addon_id="" display_order="1300" group_name="footer" value_group="uix_footerCovered" depends_on="" value_type="boolean" property_type="value" property_name="uix_footerInsideContent">

<value>0</value>

</property>


-<property title="Footer links hover" description="" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerLinkHover" css_components="text,background,extra">

<value>{ "color": "@xf-uix_primaryColor", "extra": "text-decoration: none;" }</value>

</property>


-<property title="Footer menu" description="Styles the footer menu bar" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerMenu" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-contentHighlightBg", "padding-top": "0" }</value>

</property>


-<property title="Footer menu order" description="" addon_id="" display_order="200" group_name="footer" value_group="uix_footerPositions" depends_on="" value_type="number" property_type="value" property_name="uix_footerMenuOrder">

<value>"30"</value>

</property>


-<property title="Footer widget" description="Styles the widget block" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerWidget" css_components="text,background,border,padding,extra">

<value>{ "background-color": "none", "extra": "box-shadow: none;" }</value>

</property>


-<property title="Footer Widget body" description="Styles the body of the footer widgets" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerWidgetBody" css_components="text,background,border,padding,extra">

<value>[]</value>

</property>


-<property title="Footer widget footer" description="Styles the footer area of widgets in the footer." addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerWidgetFooter" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "none", "padding-right": "0", "padding-bottom": "0", "padding-left": "0" }</value>

</property>


-<property title="Footer widget header" description="Styles the minor heading block is footer widgets" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerWidgetHeader" css_components="text,background,border,padding,extra">

<value>{ "background-color": "none", "border-bottom-width": "0", "padding": "0", "padding-bottom": "@xf-paddingMedium" }</value>

</property>


-<property title="Footer widget spacing" description="Sets the spacing in between each widget." addon_id="" display_order="2100" group_name="footer" value_group="uix_footerWidgets" depends_on="" value_type="unit" property_type="value" property_name="uix_footerWidgetPadding">

<value>"@xf-paddingLarge"</value>

</property>


-<property title="Footer Widget Row" description="" addon_id="" display_order="0" group_name="footer" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_footerWidgetRow" css_components="text,background,border,padding,extra">

<value>{ "padding-right": "0", "padding-left": "0" }</value>

</property>


-<property title="Footer widget preferred width" description="Set the preferred widget size. (Uses flex-basis)" addon_id="" display_order="2000" group_name="footer" value_group="uix_footerWidgets" depends_on="" value_type="unit" property_type="value" property_name="uix_footerWidgetWidth">

<value>"280px"</value>

</property>


-<property title="Force cover copyright row" description="Forces the copyright row to be full width regardless of the Page Setup > Page Style style property." addon_id="" display_order="1200" group_name="footer" value_group="uix_footerCovered" depends_on="" value_type="boolean" property_type="value" property_name="uix_forceCoverCopyright">

<value>0</value>

</property>


-<property title="Force cover extended footer" description="Forces the extended footer row to be full width regardless of the Page Setup > Page Style style property." addon_id="" display_order="1000" group_name="footer" value_group="uix_footerCovered" depends_on="" value_type="boolean" property_type="value" property_name="uix_forceCoverExtendedFooter">

<value>0</value>

</property>


-<property title="Force cover footer menu" description="Forces the footer menu row to be full width regardless of the Page Setup > Page Style style property." addon_id="" display_order="1100" group_name="footer" value_group="uix_footerCovered" depends_on="" value_type="boolean" property_type="value" property_name="uix_forceCoverFooterMenu">

<value>0</value>

</property>


-<property title="Category icon" description="" addon_id="" display_order="1300" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_glyphCategoryIcon">

<value>"@xf-uix_icon_folder"</value>

</property>


-<property title="Forum icon" description="" addon_id="" display_order="1000" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_glyphForumIcon">

<value>"@xf-uix_icon_forum"</value>

</property>


-<property title="Link icon" description="" addon_id="" display_order="1100" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_glyphLinkIcon">

<value>"@xf-uix_icon_link"</value>

</property>


-<property title="Page icon" description="" addon_id="" display_order="1200" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_glyphPageIcon">

<value>"@xf-uix_icon_page"</value>

</property>


-<property title="Google Fonts" description="Choose the fonts in which to load from Google Fonts API." addon_id="" display_order="0" group_name="fonts" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_googleFonts">

<value>""</value>

</property>


-<property title="Header whitespace" description="Pixel value of the margin between navigation, user bar, and logo block" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_headerWhiteSpace">

<value>"0px"</value>

</property>


-<property title="Header wrapper" description="Styles the wrapper around the entire header" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_headerWrapper" css_components="background,border,border_radius,padding,extra">

<value>[]</value>

</property>


-<property title="Secondary font" description="Font family used for headings and other decorative text situations." addon_id="" display_order="210" group_name="fonts" value_group="font" depends_on="" value_type="string" property_type="value" property_name="uix_headingFont">

<value>"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif"</value>

</property>


-<property title="Heading font weight regular" description="" addon_id="" display_order="2210" group_name="fonts" value_group="weight" depends_on="" value_type="number" property_type="value" property_name="uix_headingFontWeight">

<value>"400"</value>

</property>


-<property title="Heading font weight (heavy)" description="" addon_id="" display_order="2220" group_name="fonts" value_group="weight" depends_on="" value_type="number" property_type="value" property_name="uix_headingFontWeightHeavy">

<value>"700"</value>

</property>


-<property title="Hide elements during javascript loading" description="Disabling this will potentially cause flashes of unstyled content, but may be necessary for some caches or CDNs." addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideElementsDuringJSLoad">

<value>1</value>

</property>


-<property title="Hide extended footer for mobile" description="" addon_id="" display_order="150" group_name="footer" value_group="uix_extendedFooter" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideExtendedFooterMobile">

<value>0</value>

</property>


-<property title="Hide node last post" description="" addon_id="" display_order="2100" group_name="nodeList" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideNodeLastPost">

<value>0</value>

</property>


-<property title="Hide node stats" description="" addon_id="" display_order="2400" group_name="nodeList" value_group="uix_nodeStats" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideNodeStats">

<value>0</value>

</property>


-<property title="Ignore home link when checking "content checking" breadcrumb" description="Removes the breadcrumb when the only crumb is the home link" addon_id="" display_order="300" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideSingleCrumb">

<value>1</value>

</property>


-<property title="Hide footer style chooser" description="" addon_id="" display_order="2300" group_name="footer" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideStyleChoose">

<value>0</value>

</property>


-<property title="Hide top page nav for mobile" description="Removes the top page navigation buttons for mobile to save important vertical space." addon_id="" display_order="700" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_hideTopPagenavMobile">

<value>1</value>

</property>


-<property title="Home breadcrumb as icon" description="Swaps out the "home" text in the breadcrumb for the home icon" addon_id="" display_order="600" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_homeCrumbIcon">

<value>1</value>

</property>


-<property title="Icon font" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_iconFont" css_components="extra">

<value>{ "extra": "display: inline-block;\nfont: normal normal normal 18px/1 \"Material Design Icons\";\nfont-size: inherit;\ntext-rendering: auto;\nline-height: 1;\n-webkit-font-smoothing: antialiased;\n-moz-osx-font-smoothing: grayscale;\ntransform: translate(0, 0);\nwidth: auto !important;" }</value>

</property>


-<property title="Icon font" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_iconFontFamily">

<value_parameters>fontawesome=Font Awesome material=Material</value_parameters>

<value>"material"</value>

</property>


-<property title="Icon font size" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="uix_iconOptions" depends_on="" value_type="unit" property_type="value" property_name="uix_iconSize">

<value>"18px"</value>

</property>


-<property title="Icon large font size" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="uix_iconOptions" depends_on="" value_type="unit" property_type="value" property_name="uix_iconSizeLarge">

<value>"22px"</value>

</property>


-<property title="Alert" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_alert">

<value>"\\f09c"</value>

</property>


-<property title="Alert (off)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_alertOff">

<value>"\\fa90"</value>

</property>


-<property title="Apple" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_apple">

<value>"\\f035"</value>

</property>


-<property title="Arrow down" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_arrowDown">

<value>"\\f045"</value>

</property>


-<property title="Arrow left" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_arrowLeft">

<value>"\\f04d"</value>

</property>


-<property title="Arrow right" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_arrowRight">

<value>"\\f054"</value>

</property>


-<property title="Arrow up" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_arrowUp">

<value>"\\f05d"</value>

</property>


-<property title="Arrow up (variant)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_arrowUpVariant">

<value>"\\f05f"</value>

</property>


-<property title="Article" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_article">

<value>"\\f9ec"</value>

</property>


-<property title="Attachment" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_attachment">

<value>"\\f066"</value>

</property>


-<property title="Attention" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_attention">

<value>"\\f0e6"</value>

</property>


-<property title="Audio" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_audio">

<value>"\\f759"</value>

</property>


-<property title="Birthday" description="Styles the birthday (or age) label for users" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_birthday">

<value>"\\f0eb"</value>

</property>


-<property title="Bookmark" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_bookmark">

<value>"\\f0c0"</value>

</property>


-<property title="Brush" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_brush">

<value>"\\f0e3"</value>

</property>


-<property title="Camera" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_camera">

<value>"\\fb46"</value>

</property>


-<property title="Check" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_check">

<value>"\\f5e0"</value>

</property>


-<property title="Checkbox (unchecked)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_checkbox">

<value>"\\f131"</value>

</property>


-<property title="Checkbox (checked)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_checkboxChecked">

<value>"\\f135"</value>

</property>


-<property title="Chevron down" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_chevronDown">

<value>"\\f140"</value>

</property>


-<property title="Chevron left" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_chevronLeft">

<value>"\\f141"</value>

</property>


-<property title="Chevron right" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_chevronRight">

<value>"\\f142"</value>

</property>


-<property title="Chevron up" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_chevronUp">

<value>"\\f143"</value>

</property>


-<property title="Clock" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_clock">

<value>"\\f150"</value>

</property>


-<property title="Clone" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_clone">

<value>"\\f191"</value>

</property>


-<property title="Close" description="Such as closing modals, canvas navigation" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_close">

<value>"\\f156"</value>

</property>


-<property title="Collapse" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_collapse">

<value>"\\f615"</value>

</property>


-<property title="Comment alert" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_commentAlert">

<value>"\\f17e"</value>

</property>


-<property title="Comments (multiple)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_commentMultiple">

<value>"\\f181"</value>

</property>


-<property title="Convert" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_convert">

<value>"\\f4e1"</value>

</property>


-<property title="Delete" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_delete">

<value>"\\f9e6"</value>

</property>


-<property title="Disable" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_disable">

<value>"\\f697"</value>

</property>


-<property title="Download" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_download">

<value>"\\f1da"</value>

</property>


-<property title="Earth" description="Used for translate" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_earth">

<value>"\\f1e7"</value>

</property>


-<property title="Edit" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_edit">

<value>"\\f3eb"</value>

</property>


-<property title="Email" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_email">

<value>"\\f1f0"</value>

</property>


-<property title="Embed" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_embed">

<value>"\\f167"</value>

</property>


-<property title="Expand" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_expand">

<value>"\\f616"</value>

</property>


-<property title="Export" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_export">

<value>"\\f207"</value>

</property>


-<property title="Facebook" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_facebook">

<value>"\\f20c"</value>

</property>


-<property title="File" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_file">

<value>"\\f214"</value>

</property>


-<property title="File (Document)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_fileDocument">

<value>"\\f9ed"</value>

</property>


-<property title="Folder" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_folder">

<value>"\\f256"</value>

</property>


-<property title="Forum" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_forum">

<value>"\\f36a"</value>

</property>


-<property title="GitHub" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_github">

<value>"\\f6da"</value>

</property>


-<property title="Google+" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_googlePlus">

<value>"\\f2bd"</value>

</property>


-<property title="Graph" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_graph">

<value>"\\f128"</value>

</property>


-<property title="Grid" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_grid">

<value>"\\f570"</value>

</property>


-<property title="Help" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_help">

<value>"\\f625"</value>

</property>


-<property title="History" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_history">

<value>"\\f2da"</value>

</property>


-<property title="Home" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_home">

<value>"\\f6a0"</value>

</property>


-<property title="Ignored" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_ignored">

<value>"\\f36d"</value>

</property>


-<property title="Import" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_import">

<value>"\\f2fa"</value>

</property>


-<property title="Inbox" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_inbox">

<value>"\\f1f0"</value>

</property>


-<property title="Info" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_info">

<value>"\\f2fd"</value>

</property>


-<property title="Instagram" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_instagram">

<value>"\\f2fe"</value>

</property>


-<property title="IP address" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_ipAddress">

<value>"\\f5d2"</value>

</property>


-<property title="Like (thumbs up)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_like">

<value>"\\f514"</value>

</property>


-<property title="Link" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_link">

<value>"\\f339"</value>

</property>


-<property title="LinkedIn" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_linkedin">

<value>"\\f33b"</value>

</property>


-<property title="List" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_list">

<value>"\\f279"</value>

</property>


-<property title="Location" description="location for users" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_location">

<value>"\\f34e"</value>

</property>


-<property title="Lock" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_lock">

<value>"\\f33e"</value>

</property>


-<property title="Login" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_login">

<value>"\\f306"</value>

</property>


-<property title="Media" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_media">

<value>"\\f2e9"</value>

</property>


-<property title="Menu" description="Ex. Canvas navigation trigger" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_menu">

<value>"\\f35c"</value>

</property>


-<property title="Menu Down" description="Ex. Arrow for dropdown menus" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_menuDown">

<value>"\\f35d"</value>

</property>


-<property title="Menu left" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_menuLeft">

<value>"\\f35e"</value>

</property>


-<property title="Menu right" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_menuRight">

<value>"\\f35f"</value>

</property>


-<property title="Menu Up" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_menuUp">

<value>"\\f360"</value>

</property>


-<property title="Merge" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_merge">

<value>"\\f0f8"</value>

</property>


-<property title="Messages" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_messages">

<value>"\\f821"</value>

</property>


-<property title="Microsoft" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_microsoft">

<value>"\\f372"</value>

</property>


-<property title="Minus" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_minus">

<value>"\\f374"</value>

</property>


-<property title="Moderate" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_moderate">

<value>"\\f498"</value>

</property>


-<property title="Move" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_move">

<value>"\\f1b6"</value>

</property>


-<property title="New thread" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_newThread">

<value>"\\f653"</value>

</property>


-<property title="Open In New" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_openInNew">

<value>"\\f3cc"</value>

</property>


-<property title="Page" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_page">

<value>"\\f9ed"</value>

</property>


-<property title="Payment" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_payment">

<value>"\\f19b"</value>

</property>


-<property title="Pinterest" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_pinterest">

<value>"\\f407"</value>

</property>


-<property title="Plus" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_plus">

<value>"\\f415"</value>

</property>


-<property title="Poll" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_poll">

<value>"\\f41f"</value>

</property>


-<property title="Post" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_post">

<value>"\\f365"</value>

</property>


-<property title="Quote" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_quote">

<value>"\\f27e"</value>

</property>


-<property title="Radio (unselected)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_radio">

<value>"\\f43d"</value>

</property>


-<property title="Radio (selected)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_radioSelected">

<value>"\\f43e"</value>

</property>


-<property title="Rate" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_rate">

<value>"\\f4d0"</value>

</property>


-<property title="Reddit" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_reddit">

<value>"\\f44d"</value>

</property>


-<property title="Redirect" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_redirect">

<value>"\\f60d"</value>

</property>


-<property title="Refresh" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_refresh">

<value>"\\f450"</value>

</property>


-<property title="Register" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_register">

<value>"\\fa37"</value>

</property>


-<property title="Reply" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_reply">

<value>"\\f45a"</value>

</property>


-<property title="Report" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_report">

<value>"\\f029"</value>

</property>


-<property title="Resource" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_resource">

<value>"\\f1df"</value>

</property>


-<property title="RSS" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_rss">

<value>"\\f46b"</value>

</property>


-<property title="Save" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_save">

<value>"\\f193"</value>

</property>


-<property title="Search" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_search">

<value>"\\f349"</value>

</property>


-<property title="Search (member)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_searchMember">

<value>"\\f016"</value>

</property>


-<property title="Search (plus)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_searchPlus">

<value>"\\f34b"</value>

</property>


-<property title="Settings" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_settings">

<value>"\\f8ba"</value>

</property>


-<property title="Share" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_share">

<value>"\\f497"</value>

</property>


-<property title="Shopping cart" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_shoppingCart">

<value>"\\f110"</value>

</property>


-<property title="Sort" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_sort">

<value>"\\f4ba"</value>

</property>


-<property title="Soundcloud" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_soundcloud">

<value>"\\f4c0"</value>

</property>


-<property title="Spam" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_spam">

<value>"\\f0fe"</value>

</property>


-<property title="Spotify" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_spotify">

<value>"\\f4c7"</value>

</property>


-<property title="Star" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_star">

<value>"\\f4ce"</value>

</property>


-<property title="Star (empty)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_starEmpty">

<value>"\\f4d2"</value>

</property>


-<property title="Star (half)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_starHalf">

<value>"\\f4d0"</value>

</property>


-<property title="Statistics" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_statistics">

<value>"\\f127"</value>

</property>


-<property title="Steam" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_steam">

<value>"\\f4d3"</value>

</property>


-<property title="Sticky" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_sticky">

<value>"\\f403"</value>

</property>


-<property title="Tags (multiple)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_tagMultiple">

<value>"\\f4fb"</value>

</property>


-<property title="Toggle Off" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_toggleOff">

<value>"\\fa18"</value>

</property>


-<property title="Toggle On" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_toggleOn">

<value>"\\fa19"</value>

</property>


-<property title="Trophy" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_trophy">

<value>"\\f53a"</value>

</property>


-<property title="Tumblr" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_tumblr">

<value>"\\f541"</value>

</property>


-<property title="Twitch" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_twitch">

<value>"\\f543"</value>

</property>


-<property title="Twitter" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_twitter">

<value>"\\f544"</value>

</property>


-<property title="Unlike (thumbs down)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_unlike">

<value>"\\f512"</value>

</property>


-<property title="Unlock" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_unlock">

<value>"\\f340"</value>

</property>


-<property title="Upload" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_upload">

<value>"\\f552"</value>

</property>


-<property title="User" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_user">

<value>"\\f013"</value>

</property>


-<property title="Users (multiple)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_userMultiple">

<value>"\\f00f"</value>

</property>


-<property title="Video" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_video">

<value>"\\fbb8"</value>

</property>


-<property title="Vimeo" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_vimeo">

<value>"\\f577"</value>

</property>


-<property title="Warn" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_warn">

<value>"\\f02a"</value>

</property>


-<property title="Warning" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_warning">

<value>"\\f02a"</value>

</property>


-<property title="Watched" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_watched">

<value>"\\f208"</value>

</property>


-<property title="Website (or web)" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_web">

<value>"\\f59f"</value>

</property>


-<property title="What's new" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_whatsNew">

<value>"\\f17e"</value>

</property>


-<property title="Whatsapp" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_whatsapp">

<value>"\\f5a3"</value>

</property>


-<property title="YouTube" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_icon_youtube">

<value>"\\f5c3"</value>

</property>


-<property title="Image forum icon" description="" addon_id="" display_order="0" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_imageForumIcon" css_components="background,padding,extra">

<value>{ "background-image": "@xf-uix_imagePath/images/nodeicons.png", "extra": "background-repeat: no-repeat;\nbackground-position: -32px 0;" }</value>

</property>


-<property title="Image forum unread icon" description="" addon_id="" display_order="0" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_imageForumUnreadIcon" css_components="background,padding,extra">

<value>{ "background-image": "@xf-uix_imagePath/images/nodeicons.png", "extra": "background-repeat: no-repeat;\nbackground-position: 0 0;" }</value>

</property>


-<property title="Image icon" description="" addon_id="" display_order="0" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_imageIcon" css_components="background,padding,extra">

<value>{ "extra": "width: 32px;\nheight: 32px;" }</value>

</property>


-<property title="Image link icon" description="" addon_id="" display_order="0" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_imageLinkIcon" css_components="background,padding,extra">

<value>{ "background-image": "@xf-uix_imagePath/images/nodeicons.png", "extra": "background-repeat: no-repeat;\nbackground-position: -64px 0;" }</value>

</property>


-<property title="Image page icon" description="" addon_id="" display_order="0" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_imagePageIcon" css_components="background,padding,extra">

<value>{ "background-image": "@xf-uix_imagePath/images/nodeicons.png", "extra": "background-repeat: no-repeat;\nbackground-position: -96px 0;" }</value>

</property>


-<property title="Image path" description="Sets the path to images for the theme." addon_id="" display_order="10" group_name="basic" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_imagePath">

<value>"styles/io_dark"</value>

</property>


-<property title="Javascript Path" description="The path to the theme's javascript directory relative to /js/themehouse/ . Allows for multiple versions of UI.X and/or Audentio.com products to be installed and not share the same javascript functions. Only change this if you are certain you should be." addon_id="" display_order="10000" group_name="uix_globalSettings" value_group="theme" depends_on="" value_type="string" property_type="value" property_name="uix_jsPath">

<value>"io_dark"</value>

</property>


-<property title="Lazy loading support" description="Adds support for lazy loading images, videos and iframes. To set something to be lazy loaded, you will need to add "lazy" as a class name, and change the "src" attribute to "data-src"." addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_lazyLoadSupport">

<value>0</value>

</property>


-<property title="Load Material Icons locally" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="uix_iconOptions" depends_on="" value_type="boolean" property_type="value" property_name="uix_localMaterialIcons">

<value>1</value>

</property>


-<property title="Login trigger style" description="The method in which the login form displays once the trigger is activated." addon_id="" display_order="2210" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="select" property_type="value" property_name="uix_loginStyle">

<value_parameters>modal=Modal dropdown=Dropdown link=Link slidingPanel=Sliding Panel</value_parameters>

<value>"dropdown"</value>

</property>


-<property title="Login triggers position" description="" addon_id="" display_order="2220" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="select" property_type="value" property_name="uix_loginTriggerPosition">

<value_parameters>staffBar=Staff bar navigation=Navigation tablinks=Sub navigation</value_parameters>

<value>"navigation"</value>

</property>


-<property title="Logo icon" description="Adds a CSS font icon when logo text is applicable." addon_id="" display_order="1200" group_name="basic" value_group="uix_logoText" depends_on="" value_type="string" property_type="value" property_name="uix_logoIcon">

<value>"mdi mdi-layers"</value>

</property>


-<property title="Logo icon" description="Styles the logo icon" addon_id="" display_order="0" group_name="basic" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_logoIconStyle" css_components="text,background,border,padding,extra">

<value>{ "font-size": "36px", "padding-right": "@xf-paddingMedium" }</value>

</property>


-<property title="Logo small image path" description="If left blank, will default to main logo path" addon_id="" display_order="600" group_name="basic" value_group="uix_responsiveLogo" depends_on="" value_type="string" property_type="value" property_name="uix_logoSmall">

<value>"@xf-uix_imagePath/images/uix-brandmark.png"</value>

</property>


-<property title="Logo text" description="Adds text in place of a logo. Note: this is overwritten when a logo image path is set" addon_id="" display_order="1100" group_name="basic" value_group="uix_logoText" depends_on="" value_type="string" property_type="value" property_name="uix_logoText">

<value>"iO"</value>

</property>


-<property title="Logo text breakpoint" description="The device width under which the logo text changes font-size." addon_id="" display_order="1400" group_name="basic" value_group="uix_logoText" depends_on="" value_type="string" property_type="value" property_name="uix_logoTextBreakpoint">

<value>"@xf-responsiveMedium"</value>

</property>


-<property title="Logo text" description="" addon_id="" display_order="0" group_name="basic" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_logoText__style" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-fontSizeLargest", "color": "#fff", "extra": "margin: 0;\nfont-family: @xf-uix_headingFont;" }</value>

</property>


-<property title="Logo width" description="Sets the width for logo. (Note: only applicable for logos in the header logo row. For logos in the navigation, use "Navigation logo vertical spacing" instead.)" addon_id="" display_order="20" group_name="basic" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_logoWidth">

<value>"120px"</value>

</property>


-<property title="Main tabs bar" description="" addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_mainTabsBarStyling" css_components="text,background,border,padding,extra">

<value>{ "background-color": "@xf-uix_primaryColor" }</value>

</property>


-<property title="Sticky tabs height" description="Sets the height of the sticky tab bar. (Note: This is important for calculating sticky heights.)" addon_id="" display_order="5300" group_name="uix_globalSettings" value_group="uix_mainTabs" depends_on="" value_type="unit" property_type="value" property_name="uix_mainTabsHeight">

<value>"50px"</value>

</property>


-<property title="Main tabs sticky" description="Makes the main tabs sticky. Note: This is only applicable when the main tabs are in the header position." addon_id="" display_order="5200" group_name="uix_globalSettings" value_group="uix_mainTabs" depends_on="" value_type="boolean" property_type="value" property_name="uix_mainTabsSticky">

<value>0</value>

</property>


-<property title="Enable material avatars" description="" addon_id="" display_order="5" group_name="avatar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_materialAvatars">

<value>1</value>

</property>


-<property title="Message" description="Styles the message container" addon_id="" display_order="0" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_message" css_components="text,background,border,border_radius,padding,extra">

<value>{ "extra": "border: none;" }</value>

</property>


-<property title="Message action bar" description="Styles the action bar for messages" addon_id="" display_order="20040" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageActionBar" css_components="text,background,border,border_radius,padding,extra">

<value>{ "padding-top": "0", "extra": "margin-top: 0;" }</value>

</property>


-<property title="Message animation" description="Adds an animation to messages on page load" addon_id="" display_order="3300" group_name="misc" value_group="uix_pageAnimation" depends_on="" value_type="boolean" property_type="value" property_name="uix_messageAnimation">

<value>1</value>

</property>


-<property title="Message attachments" description="Styles the container for the message attachments component." addon_id="" display_order="0" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageAttachments" css_components="background,border,padding,extra">

<value>{ "background-color": "@xf-contentHighlightBg", "padding": "@xf-messagePadding;", "extra": "margin-top: 0;\nmargin-bottom: @xf-messagePadding;" }</value>

</property>


-<property title="Message body" description="Styles the body (main content) of message" addon_id="" display_order="20010" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageBody" css_components="text,background,border,border_radius,padding,extra">

<value>{ "padding-bottom": "@xf-messagePadding", "extra": "margin: 0;" }</value>

</property>


-<property title="Message control" description="Styles the message actions such as reply and report" addon_id="" display_order="20050" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageControl" css_components="text,background,border,padding,extra">

<value>{ "color": "@xf-textColorMuted", "background-color": "fade(@xf-textColorMuted, 10%)", "padding-right": "5px", "padding-left": "5px", "extra": "border-radius: @xf-borderRadiusSmall;\ndisplay: inline-block;" }</value>

</property>


-<property title="Message control (hover)" description="" addon_id="" display_order="20060" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageControlHover" css_components="text,background,border,padding,extra">

<value>{ "color": "@xf-textColorDimmed", "background-color": "fade(@xf-textColorDimmed, 10%)" }</value>

</property>


-<property title="Message like bar" description="Styles the "Likes" bar for messages" addon_id="" display_order="20030" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageLikes" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-contentAltBg", "border-width": "0", "border-radius": "20px", "padding": "@xf-messagePadding", "padding-top": "10px", "padding-bottom": "10px", "extra": "margin: 0 0 @xf-messagePadding;" }</value>

</property>


-<property title="Message Main" description="Styles the main section of message" addon_id="" display_order="10" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageMain" css_components="text,background,border,border_radius,padding,extra">

<value>[]</value>

</property>


-<property title="Message meta bar" description="Styles the meta (attribution bar), which houses the post date and post number" addon_id="" display_order="20020" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageMeta" css_components="text,background,border,border_radius,padding,extra">

<value>{ "border-width": "0", "padding-bottom": "@xf-messagePadding", "extra": "display: flex;\nalign-items: center;\njustify-content: space-between;" }</value>

</property>


-<property title="Message notice" description="" addon_id="" display_order="0" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_messageNotice" css_components="text,background,border,padding,extra">

<value>{ "background-color": "@xf-contentHighlightBg", "extra": "margin-top: 0;" }</value>

</property>


-<property title="Meta cell (for discussion list)" description="" addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_metaCell" css_components="background,border">

<value>[]</value>

</property>


-<property title="Move navigation above logo block" description="Moves the main navigation above the logo block/header component" addon_id="" display_order="1400" group_name="headerNav" value_group="navigation" depends_on="" value_type="boolean" property_type="value" property_name="uix_navAboveHeader">

<value>0</value>

</property>


-<property title="Navigation logo vertical spacing" description="The max height of the navigation logo is the height of the navigation bar minus these spacings, however it may be smaller when there is not enough horizontal width." addon_id="" display_order="30" group_name="basic" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_navLogoVertSpacing">

<value>"16px"</value>

</property>


-<property title="Nav tab icon style" description="" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_navTabIconStyle" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-uix_iconSize !important", "padding-right": "@xf-paddingSmall" }</value>

</property>


-<property title="Navigation tab icons" description="" addon_id="" display_order="1700" group_name="headerNav" value_group="navigation" depends_on="" value_type="boolean" property_type="value" property_name="uix_navTabIcons">

<value>0</value>

</property>


-<property title="Navigation bar height" description="Sets the height of the primary navigation bar. (Note: this gets overwritten by sticky nav bar height when applicable. If unset, the navigation bar height will simply be as large as the largest component inside of it.)" addon_id="" display_order="1500" group_name="headerNav" value_group="navigation" depends_on="" value_type="unit" property_type="value" property_name="uix_navigationBarHeight">

<value>"65px"</value>

</property>


-<property title="Navigation type" description="Sets the type of navigation style." addon_id="" display_order="2100" group_name="headerNav" value_group="uix_sidebarNav" depends_on="" value_type="select" property_type="value" property_name="uix_navigationType">

<value_parameters>default=Default sidebarNav=Sidebar navigation</value_parameters>

<value>"default"</value>

</property>


-<property title="New node indicator" description="Will display a new indicator next to the node title if there is new content" addon_id="" display_order="2000" group_name="nodeList" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_newNodeMarker">

<value>1</value>

</property>


-<property title="New node indicator" description="Styles the new node indicator if enabled" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_newNodeMarkerStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "12px", "color": "#fff", "background-color": "@xf-uix_secondaryColor", "border-radius": "@xf-borderRadiusSmall", "padding-top": "1px", "padding-right": "4px", "padding-bottom": "1px", "padding-left": "4px" }</value>

</property>


-<property title="Node animations" description="" addon_id="" display_order="3600" group_name="misc" value_group="uix_pageAnimation" depends_on="" value_type="boolean" property_type="value" property_name="uix_nodeAnimations">

<value>1</value>

</property>


-<property title="Block Body (for nodes)" description="" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeBlockBody" css_components="background,border,border_radius,padding,extra">

<value>{ "border-radius": "@xf-borderRadiusSmall", "padding": "@xf-paddingMedium" }</value>

</property>


-<property title="Node body" description="Styles the individual node body" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeBody" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-contentBg", "extra": "overflow: hidden;\nborder-radius: @xf-borderRadiusMedium;" }</value>

</property>


-<property title="Node body (even)" description="" addon_id="" display_order="2200" group_name="nodeList" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_nodeBodyEven">

<value>""</value>

</property>


-<property title="Node body (hover)" description="Adds a hover state to nodes" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeBodyHover" css_components="background,border,extra">

<value>{ "background-color": "@xf-contentAltBg", "extra": "position: relative;" }</value>

</property>


-<property title="Clickable nodes" description="Makes the entire node a clickable link to the forum. (Ignores other inner links.)" addon_id="" display_order="2050" group_name="nodeList" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_nodeClickable">

<value>1</value>

</property>


-<property title="Node Container" description="Styles the block-container for level 1 nodes" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeContainer" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>{ "border-width": "0", "extra": "box-shadow: none;" }</value>

</property>


-<property title="Node Description" description="Styles the description of level 2 nodes" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeDescription" css_components="text,padding,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColorMuted", "extra": "line-height: 1.5;" }</value>

</property>


-<property title="Use images for node icons" description="" addon_id="" display_order="2000" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_nodeIconImages">

<value>0</value>

</property>


-<property title="Node icon style" description="" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeIconStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "24px", "border-radius": "@xf-borderRadiusSmall", "padding": "4px" }</value>

</property>


-<property title="Node icon width" description="Sets the width for the node icon container (not the actual icon itself)" addon_id="" display_order="100" group_name="uix_nodeIcons" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_nodeIconWidth">

<value>"46px"</value>

</property>


-<property title="Node padding" description="" addon_id="" display_order="2300" group_name="nodeList" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_nodePadding">

<value>"@xf-paddingMedium"</value>

</property>


-<property title="Show node stats only on hover" description="Hides the node stats, and displays them only when hovering over the node" addon_id="" display_order="2600" group_name="nodeList" value_group="uix_nodeStats" depends_on="" value_type="boolean" property_type="value" property_name="uix_nodeStatsHover">

<value>0</value>

</property>


-<property title="Node stats as icons" description="" addon_id="" display_order="2400" group_name="nodeList" value_group="uix_nodeStats" depends_on="" value_type="boolean" property_type="value" property_name="uix_nodeStatsIcons">

<value>0</value>

</property>


-<property title="Node Title" description="" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeTitle" css_components="text,padding,extra">

<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-textColor", "font-weight": "@xf-fontWeightHeavy", "extra": "margin: 0;\nmargin-top: 5px;" }</value>

</property>


-<property title="Node Title (Unread)" description="" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_nodeTitle__unread" css_components="text">

<value>[]</value>

</property>


-<property title="Block notice location" description="" addon_id="" display_order="0" group_name="misc" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_noticeLocation">

<value_parameters>aboveMainContainer=Default (above main container) mainContainerTop= Top of main container aboveMainContent=Above main content mainContentTop=Top of main content</value_parameters>

<value>"aboveMainContainer"</value>

</property>


-<property title="Online indicator" description="Sets the display type for the online indicator" addon_id="" display_order="0" group_name="message" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_onlineIndicator">

<value_parameters>default=Default pulse=Pulse banner=User banner</value_parameters>

<value>"default"</value>

</property>


-<property title="Original Poster indicator" description="Add an indicator in the user post bit for original posters" addon_id="" display_order="0" group_name="message" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_originalPoster">

<value_parameters>userbanner=User banner icon=Icon none=Disabled</value_parameters>

<value>"icon"</value>

</property>


-<property title="Overlay blur effect" description="Adds a blur effect to overlays" addon_id="" display_order="0" group_name="overlay" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_overlayBlur">

<value>0</value>

</property>


-<property title="Page animations" description="Adds animations to main components (header, sidebars, main content, footer) on page load" addon_id="" display_order="3000" group_name="misc" value_group="uix_pageAnimation" depends_on="" value_type="boolean" property_type="value" property_name="uix_pageAnimation">

<value>1</value>

</property>


-<property title="Page style" description="Sets the overall page style for the theme." addon_id="" display_order="200" group_name="page" value_group="page" depends_on="" value_type="select" property_type="value" property_name="uix_pageStyle">

<value_parameters>covered=Default (covered) fixed=Fixed wrapped=Wrapped</value_parameters>

<value>"covered"</value>

</property>


-<property title="Page title" description="Styles the h1 in titlebar" addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_pageTitle" css_components="text,border,padding,extra">

<value>{ "color": "@xf-textColor", "extra": "font-family: @xf-uix_headingFont;" }</value>

</property>


-<property title="Default width toggle" description="" addon_id="" display_order="400" group_name="page" value_group="uix_widgthToggle" depends_on="" value_type="select" property_type="value" property_name="uix_pageWidthToggle">

<value_parameters>disabled=Disabled fixed=Fixed (default) fluid=Fluid</value_parameters>

<value>"fixed"</value>

</property>


-<property title="Page Wrapper" description="" addon_id="" display_order="0" group_name="page" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_pageWrapper" css_components="background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,extra">

<value>{ "background-color": "#fff", "border-width": "@xf-borderSize", "border-color": "@xf-borderColor", "border-radius": "@xf-borderRadiusMedium" }</value>

</property>


-<property title="Enable Parallax" description="" addon_id="" display_order="4000" group_name="uix_globalSettings" value_group="parallax" depends_on="" value_type="boolean" property_type="value" property_name="uix_parallax">

<value>0</value>

</property>


-<property title="Parallax image" description="" addon_id="" display_order="4100" group_name="uix_globalSettings" value_group="parallax" depends_on="uix_parallax" value_type="string" property_type="value" property_name="uix_parallaxImage">

<value>"@xf-uix_imagePath/images/welcome-banner.png"</value>

</property>


-<property title="Parallax starting position" description="" addon_id="" display_order="4200" group_name="uix_globalSettings" value_group="parallax" depends_on="" value_type="select" property_type="value" property_name="uix_parallaxPosition">

<value_parameters>top=Top center=Center bottom=Bottom</value_parameters>

<value>"center"</value>

</property>


-<property title="Parallax selector" description="" addon_id="" display_order="4300" group_name="uix_globalSettings" value_group="parallax" depends_on="uix_parallax" value_type="string" property_type="value" property_name="uix_parallaxSelector">

<value>".uix_welcomeSection"</value>

</property>


-<property title="Postbit avatar size" description="Sets the size of the post bit avatar" addon_id="" display_order="1100" group_name="message" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_postBitAvatarSize">

<value_parameters>small=Small medium=Medium large=Large</value_parameters>

<value>"small"</value>

</property>


-<property title="Post bit icons" description="Changes the user extra info labels to icons" addon_id="" display_order="1200" group_name="message" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_postBitIcons">

<value>1</value>

</property>


-<property title="Accent color" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixAccent">

<value>"@xf-uix_secondaryColor"</value>

</property>


-<property title="Blue prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixBlue">

<value>"#2196F3"</value>

</property>


-<property title="Gray prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixGray">

<value>"#616161"</value>

</property>


-<property title="Green prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixGreen">

<value>"#4CAF50"</value>

</property>


-<property title="Light green prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixLightGreen">

<value>"#8BC34A"</value>

</property>


-<property title="Olive green" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixOlive">

<value>"#689F38"</value>

</property>


-<property title="Orange prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixOrange">

<value>"#FF9800"</value>

</property>


-<property title="Primary prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixPrimary">

<value>"@xf-uix_primaryColor"</value>

</property>


-<property title="Red prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixRed">

<value>"#D32F2F"</value>

</property>


-<property title="Sky blue prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixRedSkyBlue">

<value>"#03A9F4"</value>

</property>


-<property title="Royal blue prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixRoyalBlue">

<value>"#0D47A1"</value>

</property>


-<property title="Silver prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixSilver">

<value>"#CFD8DC"</value>

</property>


-<property title="Yellow prefix" description="" addon_id="" display_order="0" group_name="prefixes" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_prefixYellow">

<value>"#FFEB3B"</value>

</property>


-<property title="Primary brand color" description="Primary brand color" addon_id="" display_order="10" group_name="color" value_group="uix_brandColors" depends_on="" value_type="color" property_type="value" property_name="uix_primaryColor">

<value>"@xf-paletteAccent1"</value>

</property>


-<property title="primary brand color (darker)" description="Darker variation of the primary brand color. (This would generally map to Google's Material design spec as the 700 value of the primary color.)" addon_id="" display_order="30" group_name="color" value_group="uix_brandColors" depends_on="" value_type="color" property_type="value" property_name="uix_primaryColorDarker">

<value>"@xf-paletteAccent2"</value>

</property>


-<property title="Remove bottom breadcrumb" description="" addon_id="" display_order="400" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_removeBottomBreadcrumb">

<value>0</value>

</property>


-<property title="Remove Title from Forum Index" description="Removes the page title from the forum index. Note: Only applicable when there are no other components in titlebar (such as page action or sidebar toggle.)" addon_id="" display_order="100" group_name="uix_globalSettings" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_removeIndexPageTitle">

<value>1</value>

</property>


-<property title="Remove message arrow" description="Removes the arrow on postbit for messages" addon_id="" display_order="1300" group_name="message" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_removeMessageArrow">

<value>1</value>

</property>


-<property title="Remove forum list page actions" description="Removes the page actions from the forum list. By default these are New Posts and Post New Thread." addon_id="" display_order="200" group_name="uix_globalSettings" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_removePageAction">

<value>1</value>

</property>


-<property title="Remove register/login text" description="" addon_id="" display_order="2230" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="boolean" property_type="value" property_name="uix_removeRegisterText">

<value>1</value>

</property>


-<property title="Remove visitor tab text" description="Note: XenForo 2.1 has changed the phrases to not include text. If you want to add text, you will need to add them in the "nav_alerts" and "nav_inbox" phrases." addon_id="" display_order="2270" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="boolean" property_type="value" property_name="uix_removeVisitorTabsText">

<value>1</value>

</property>


-<property title="Remove what's new buttons" description="" addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_removeWhatsNewButtons">

<value>1</value>

</property>


-<property title="Responsive logo font size" description="Sets a font size to override logo font size at a specific breakpoint" addon_id="" display_order="1300" group_name="basic" value_group="uix_logoText" depends_on="" value_type="string" property_type="value" property_name="uix_responsiveLogoFontSize">

<value>"@xf-fontSizeNormal"</value>

</property>


-<property title="Right align navigation" description="Aligns the navigation and section links to the right side" addon_id="" display_order="1900" group_name="headerNav" value_group="navigation" depends_on="" value_type="boolean" property_type="value" property_name="uix_rightAlignNavigation">

<value>0</value>

</property>


-<property title="Scrollable sidebar" description="Adds a scrollable container around the sidebar. (NOTE: Not recommended when Sticky sidebar is set to "Sticky top and bottom")" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="uix_stickySidebar" value_type="boolean" property_type="value" property_name="uix_scrollableSidebar">

<value>0</value>

</property>


-<property title="Search Bar" description="" addon_id="" display_order="0" group_name="uix_search" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_searchBar" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>{ "color": "@xf-textColorDimmed", "background-color": "@xf-contentAltBg", "border-radius": "@xf-borderRadiusMedium" }</value>

</property>


-<property title="Search bar (focus)" description="" addon_id="" display_order="0" group_name="uix_search" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_searchBarFocus" css_components="text,background,padding,extra">

<value>{ "color": "@xf-textColor", "background-color": "@xf-contentAltBg" }</value>

</property>


-<property title="Search bar height" description="" addon_id="" display_order="300" group_name="uix_search" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_searchBarHeight">

<value>"36px"</value>

</property>


-<property title="Search bar placeholder color" description="" addon_id="" display_order="2000" group_name="uix_search" value_group="uix_searchColor" depends_on="" value_type="color" property_type="value" property_name="uix_searchBarPlaceholderColor">

<value>"@xf-textColorMuted"</value>

</property>


-<property title="Search bar placeholder color (focus)" description="" addon_id="" display_order="2100" group_name="uix_search" value_group="uix_searchColor" depends_on="" value_type="color" property_type="value" property_name="uix_searchBarPlaceholderFocusColor">

<value>"@xf-textColor"</value>

</property>


-<property title="Search bar width" description="(Required for minimal search animation)" addon_id="" display_order="400" group_name="uix_search" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_searchBarWidth">

<value>"250px"</value>

</property>


-<property title="Add Button to the QuickSearch" description="Enabling this setting will add a functional submit button to the QuickSearch." addon_id="" display_order="500" group_name="uix_search" value_group="uix_searchIcon" depends_on="" value_type="boolean" property_type="value" property_name="uix_searchButton">

<value>0</value>

</property>


-<property title="Search icon" description="Styles the search icon" addon_id="" display_order="0" group_name="uix_search" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_searchIcon" css_components="text,background,padding,extra">

<value>{ "font-size": "@xf-uix_iconSizeLarge", "color": "@xf-textColorMuted", "padding": "@xf-paddingSmall", "padding-right": "@xf-paddingSmall * 2", "padding-left": "@xf-paddingSmall * 2", "extra": "float: left;" }</value>

</property>


-<property title="Search icon behavior" description="Sets the behavior for the search icon (when the search is only an icon, and not the full input.)" addon_id="" display_order="1100" group_name="uix_search" value_group="uix_searchIcon" depends_on="" value_type="select" property_type="value" property_name="uix_searchIconBehavior">

<value_parameters>dropdown=Dropdown expand=Expand expandMobile=Expand (mobile only)</value_parameters>

<value>"expandMobile"</value>

</property>


-<property title="Search icon color (focus)" description="" addon_id="" display_order="2200" group_name="uix_search" value_group="uix_searchColor" depends_on="" value_type="color" property_type="value" property_name="uix_searchIconFocusColor">

<value>"@xf-textColorMuted"</value>

</property>


-<property title="Search position" description="Sets where the search bar appears" addon_id="" display_order="200" group_name="uix_search" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_searchPosition">

<value_parameters>staffBar=Staff bar (right) navigation=Navigation (right) navigationLeft=Navigation (left) tablinks=Sub navigation (right) header=Header row (right)</value_parameters>

<value>"header"</value>

</property>


-<property title="Viewport Width to Show Search Icon" description="Enter the maximum viewport width at which the search icon replaces the search bar." addon_id="" display_order="1000" group_name="uix_search" value_group="uix_searchIcon" depends_on="" value_type="string" property_type="value" property_name="uix_search_maxResponsiveWidth">

<value>"10000px"</value>

</property>


-<property title="Secondary brand color" description="Used for hover and active state" addon_id="" display_order="20" group_name="color" value_group="uix_brandColors" depends_on="" value_type="color" property_type="value" property_name="uix_secondaryColor">

<value>"@xf-paletteAccent3"</value>

</property>


-<property title="Section background" description="" addon_id="" display_order="2400" group_name="color" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_sectionBg">

<value>"@xf-uix_primaryColorDarker"</value>

</property>


-<property title="Sub-Navigation row (sticky)" description="" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_sectionLinksStickyStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-publicSubNav--background-color" }</value>

</property>


-<property title="Separate Sticky Threads" description="This will add headings above sticky threads and above normal threads to clearly differentiate the two types of threads." addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_separateThreads">

<value>1</value>

</property>


-<property title="Share widget modal" description="Replace the contents of the share widget with a button that opens a modal. This is useful to help differentiate between the share social icons, and the social links." addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_shareWidgetModal">

<value>1</value>

</property>


-<property title="Collapse sidebar navigation section links" description="Collapses the active tabs section links by default. Note: Only applicable when navigation style is set to sidebar navigation." addon_id="" display_order="2120" group_name="headerNav" value_group="uix_sidebarNav" depends_on="" value_type="boolean" property_type="value" property_name="uix_sideNavCollapsed">

<value>0</value>

</property>


-<property title="Side navigation animation" description="Adds an animation to side navigation items on page load" addon_id="" display_order="3500" group_name="misc" value_group="uix_pageAnimation" depends_on="" value_type="boolean" property_type="value" property_name="uix_sideNavigationAnimation">

<value>1</value>

</property>


-<property title="Widget block row" description="" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_sidebarBlockRow" css_components="text,background,border,border_radius,padding,extra">

<value>[]</value>

</property>


-<property title="Sidebar breakpoint" description="Minimum viewport width to show sidebar before breaking under content" addon_id="" display_order="200" group_name="uix_sidebar" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_sidebarBreakpoint">

<value>"@xf-responsiveWide"</value>

</property>


-<property title="Sidebar heading icons" description="Adds icons to the sidebar headings" addon_id="" display_order="300" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_sidebarIcons">

<value>1</value>

</property>


-<property title="Sidebar location" description="Moves the sidebar to the left of the main content" addon_id="" display_order="400" group_name="uix_sidebar" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_sidebarLocation">

<value_parameters>left=Left right=Right</value_parameters>

<value>"right"</value>

</property>


-<property title="Sidebar mobile canvas" description="Adds the sidebar to an off canvas for mobile" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_sidebarMobileCanvas">

<value>1</value>

</property>


-<property title="Sidebar navigation width" description="Styles the Sidebar nav component" addon_id="" display_order="2110" group_name="headerNav" value_group="uix_sidebarNav" depends_on="" value_type="unit" property_type="value" property_name="uix_sidebarNavWidth">

<value>"210px"</value>

</property>


-<property title="Sidebar Navigation Style" description="Adds styling for the sidebar navigation component" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_sidebarNavigationStyle" css_components="text,background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-pageBg" }</value>

</property>


-<property title="Show sidebar trigger phrase" description="" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_sidebarTriggerPhrase">

<value>0</value>

</property>


-<property title="Sidebar trigger position" description="" addon_id="" display_order="500" group_name="uix_sidebar" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_sidebarTriggerPosition">

<value_parameters>sectionLinks=Sub navigation titlebar=Titlebar</value_parameters>

<value>"sectionLinks"</value>

</property>


-<property title="Sidebar widget animation" description="Adds an animation to sidebar widgets on page load" addon_id="" display_order="3100" group_name="misc" value_group="uix_pageAnimation" depends_on="" value_type="boolean" property_type="value" property_name="uix_sidebarWidgetAnimations">

<value>1</value>

</property>


-<property title="Sidebar widget footer" description="" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_sidebarWidgetFooter" css_components="text,background,border,padding,extra">

<value>[]</value>

</property>


-<property title="Sidebar widget heading" description="" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_sidebarWidgetHeading" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>[]</value>

</property>


-<property title="Sidebar widget wrapper" description="Styles the side widget block-container" addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_sidebarWidgetWrapper" css_components="text,background,border,border_radius,border_width_simple,border_color_simple,border_radius_simple,padding,extra">

<value>[]</value>

</property>


-<property title="Expand Abridged Signatures On Hover" description="Expand abridged signatures by hovering over the signature, as opposed to on clicking on the toggle." addon_id="" display_order="1420" group_name="message" value_group="uix_abridgedSignatures" depends_on="" value_type="boolean" property_type="value" property_name="uix_signatureHoverEnabled">

<value>0</value>

</property>


-<property title="Message Signature Max Height" description="Set to 0 to always collapse signatures. Otherwise will specify a maximum height for signatures and a toggle to expand to their full height." addon_id="" display_order="1410" group_name="message" value_group="uix_abridgedSignatures" depends_on="" value_type="number" property_type="value" property_name="uix_signatureMaxHeight">

<value>"100"</value>

</property>


-<property title="Force scrolling notices to all be primary notices" description="Sets the styling for all scrolling notices to be primary notices." addon_id="" display_order="300" group_name="misc" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_similarScrollNotice">

<value>1</value>

</property>


-<property title="Social media icon" description="Styles the general social media icons that are set in UI.X Social Media board options" addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_socialMediaIcon" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-uix_iconSizeLarge" }</value>

</property>


-<property title="Social media position" description="Choose where to have the social media component" addon_id="" display_order="450" group_name="uix_globalSettings" value_group="social_media" depends_on="" value_type="select" property_type="value" property_name="uix_socialMediaPosition">

<value_parameters>copyright=Copyright footer staffBar=Staffbar staffBarLeft=Staffbar (left) header=Header row</value_parameters>

<value>"copyright"</value>

</property>


-<property title="Staff bar breakpoint" description="Sets the minimum viewport width for the staff bar to show. Note: Staff bar will ALWAYS show to admins/mods, but components will be moved to their default locations. Set 0 for never, and 100% for always." addon_id="" display_order="7400" group_name="headerNav" value_group="uix_staffbar" depends_on="" value_type="string" property_type="value" property_name="uix_staffBarBreakpoint">

<value>"@xf-responsiveWide"</value>

</property>


-<property title="Staff tools bar tab" description="" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_staffBarTab" css_components="text,background,border,padding,extra">

<value>{ "color": "rgba(255,255,255,.7)", "padding-top": "@xf-paddingSmall", "padding-bottom": "@xf-paddingSmall", "extra": "margin: 0;" }</value>

</property>


-<property title="Staff tools bar tab (hover)" description="" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_staffBarTabHover" css_components="text,background,border,padding,extra">

<value>{ "color": "#fff", "background-color": "transparent" }</value>

</property>


-<property title="Sticky category strips" description="Category strips will stick to the top of the page for the category that is currently in view." addon_id="" display_order="1300" group_name="nodeList" value_group="uix_nodeCategories" depends_on="" value_type="boolean" property_type="value" property_name="uix_stickyCategoryStrips">

<value>0</value>

</property>


-<property title="Height of the sticky navigation bar" description="" addon_id="" display_order="1600" group_name="headerNav" value_group="navigation" depends_on="" value_type="unit" property_type="value" property_name="uix_stickyNavHeight">

<value>"65px"</value>

</property>


-<property title="Navigation row (sticky)" description="" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_stickyNavigationStyle" css_components="text,background,border_radius,padding,extra">

<value>{ "background-color": "@xf-publicNav--background-color", "extra": "border-radius: 0 !important;" }</value>

</property>


-<property title="Sticky sub navigation height" description="Sets the height for the sticky section links bar" addon_id="" display_order="8000" group_name="headerNav" value_group="uix_subNav" depends_on="" value_type="unit" property_type="value" property_name="uix_stickySectionLinkHeight">

<value>"40px"</value>

</property>


-<property title="Sticky sidebar" description="Makes both the sidebar as well as the sidenav sticky." addon_id="" display_order="600" group_name="uix_sidebar" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_stickySidebar">

<value_parameters>sticky=Sticky top and bottom top=Sticky top only disabled=Disabled</value_parameters>

<value>"sticky"</value>

</property>


-<property title="Sticky sidebar recalc delay" description="Recalculates the position for the sticky sidebar after this many milliseconds." addon_id="" display_order="0" group_name="uix_sidebar" value_group="" depends_on="" value_type="number" property_type="value" property_name="uix_stickySidebarCalcDelay">

<value>"100"</value>

</property>


-<property title="Staff bar sticky" description="" addon_id="" display_order="7000" group_name="headerNav" value_group="uix_staffbar" depends_on="" value_type="boolean" property_type="value" property_name="uix_stickyStaffBar">

<value>1</value>

</property>


-<property title="Sticky staffbar height" description="Sets the height of the sticky staff bar" addon_id="" display_order="7100" group_name="headerNav" value_group="uix_staffbar" depends_on="uix_stickyStaffBar" value_type="unit" property_type="value" property_name="uix_stickyStaffBarHeight">

<value>"40px"</value>

</property>


-<property title="Staff bar (sticky)" description="" addon_id="" display_order="0" group_name="headerNav" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_stickyStaffbarStyle" css_components="text,background,border,padding,extra">

<value>[]</value>

</property>


-<property title="Structured list horizontal padding" description="Sets the horizontal padding for list items such as discussion list, conversation list, reports list, etc.." addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_structPaddingH">

<value>"@xf-paddingMedium"</value>

</property>


-<property title="Structured list vertical padding" description="Sets the vertical padding for list items such as discussion list, conversation list, reports list, etc.." addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="unit" property_type="value" property_name="uix_structPaddingV">

<value>"@xf-paddingMedium"</value>

</property>


-<property title="Sub-forum title" description="Styles the sub forum titles when they are displayed" addon_id="" display_order="0" group_name="nodeList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_subForumTitle" css_components="text,background,border,padding,extra">

<value>{ "color": "@xf-textColor" }</value>

</property>


-<property title="Main tabbar location" description="" addon_id="" display_order="5100" group_name="uix_globalSettings" value_group="uix_mainTabs" depends_on="uix_enableMainTabs" value_type="select" property_type="value" property_name="uix_tabBarLocation">

<value_parameters>aboveMainContainer=Default (above main container) mainContainerTop= Top of main container aboveMainContent=Above main content mainContentTop=Top of main content header=Bottom of header</value_parameters>

<value>"header"</value>

</property>


-<property title="Show tablinks in sidebar nav" description="Only applicable for Sidebar navigation style" addon_id="" display_order="2130" group_name="headerNav" value_group="uix_sidebarNav" depends_on="" value_type="boolean" property_type="value" property_name="uix_tablinksInSideNav">

<value>1</value>

</property>


-<property title="Tag" description="Styles tags" addon_id="" display_order="0" group_name="misc" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_tag" css_components="text,background,border,padding,extra">

<value>[]</value>

</property>


-<property title="Tag Hover" description="" addon_id="" display_order="0" group_name="misc" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_tagHover" css_components="text,background,border,padding,extra">

<value>[]</value>

</property>


-<property title="Text direction" description="" addon_id="" display_order="0" group_name="uix_icons" value_group="uix_iconOptions" depends_on="" value_type="select" property_type="value" property_name="uix_textDirection">

<value_parameters>LTR=LTR RTL=RTL</value_parameters>

<value>"LTR"</value>

</property>


-<property title="Highlighted/selected Text" description="" addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_textSelection" css_components="text,background">

<value>{ "color": "#fff", "background-color": "@xf-uix_primaryColorDarker" }</value>

</property>


-<property title="Thread field" description="Styles custom thread fields" addon_id="" display_order="0" group_name="message" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_threadField" css_components="text,background,border,padding,extra">

<value>{ "padding": "@xf-messagePadding", "padding-top": "0", "extra": "margin: 0;" }</value>

</property>


-<property title="Thread list separators" description="Styles the thread list separate when Separate Sticky Threads is enabled." addon_id="" display_order="0" group_name="uix_discussionList" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_threadListSeparator" css_components="text,background,border,padding,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColorDimmed", "background-color": "transparent", "padding-top": "10px", "padding-bottom": "10px", "extra": "text-transform: uppercase;" }</value>

</property>


-<property title="Titlebar" description="Styles the wrapper around page title and page description" addon_id="" display_order="0" group_name="uix_globalSettings" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_titlebar" css_components="text,background,border,border_radius,padding,extra">

<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColorMuted", "border-radius": "@xf-borderRadiusSmall", "padding-top": "@xf-paddingLarge", "extra": "min-height: 36px;" }</value>

</property>


-<property title="Titlebar location" description="Sets where the titlebar should appear in the page" addon_id="" display_order="300" group_name="uix_globalSettings" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_titlebarLocation">

<value_parameters>aboveMainContainer=Default (above main container) mainContainerTop= Top of main container aboveMainContent=Above main content mainContentTop=Top of main content header=Bottom of header belowHeader=Below header</value_parameters>

<value>"belowHeader"</value>

</property>


-<property title="Top breadcrumb location" description="" addon_id="" display_order="100" group_name="uix_breadcrumb" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_topBreadcrumbLocation">

<value_parameters>aboveMainContainer=Default (above main container) mainContainerTop= Top of main container aboveMainContent=Above main content mainContentTop=Top of main content header=Bottom of header</value_parameters>

<value>"aboveMainContainer"</value>

</property>


-<property title="Transition animation" description="" addon_id="" display_order="0" group_name="misc" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_transition">

<value>"cubic-bezier(0.4, 0, 0.2, 1)"</value>

</property>


-<property title="Visitor tabs position" description="" addon_id="" display_order="2200" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="select" property_type="value" property_name="uix_userTabsPosition">

<value_parameters>staffBar=Staff bar navigation=Navigation tablinks=Sub navigation header=Logo block</value_parameters>

<value>"navigation"</value>

</property>


-<property title="UI.X Version" description="This style property should not be edited, it is used to help with debugging issues" addon_id="" display_order="10010" group_name="uix_globalSettings" value_group="theme" depends_on="" value_type="string" property_type="value" property_name="uix_version">

<value>"2.1.8.1.0"</value>

</property>


-<property title="Viewport width to center the logo block" description="Sets the maximum width to center the logo block. This causes all logo block components to stack vertically, and aligned in the center. Set 0 for never and 100% for always." addon_id="" display_order="6200" group_name="headerNav" value_group="uix_logoBlock" depends_on="" value_type="unit" property_type="value" property_name="uix_viewportCenterLogo">

<value>"0px"</value>

</property>


-<property title="Viewport width to collapse staffbar links" description="Sets the max width for the staff links to be collapsed into one admin link" addon_id="" display_order="7300" group_name="headerNav" value_group="uix_staffbar" depends_on="uix_collapseStaffbarLinks" value_type="unit" property_type="value" property_name="uix_viewportCollapseStaffLinks">

<value>"@xf-responsiveWide"</value>

</property>


-<property title="Viewport width to collapse node stats" description="This sets the minimum viewport width to show the full node stat display. (Note: not applicable with Node Grid)" addon_id="" display_order="2500" group_name="nodeList" value_group="uix_nodeStats" depends_on="" value_type="unit" property_type="value" property_name="uix_viewportCollapseStats">

<value>"1000px"</value>

</property>


-<property title="Viewport width to condense visitor tabs" description="" addon_id="" display_order="2260" group_name="headerNav" value_group="uix_loginTabs" depends_on="uix_condenseVisitorTabs" value_type="unit" property_type="value" property_name="uix_viewportCondenseVisitorTabs">

<value>"@xf-responsiveMedium"</value>

</property>


-<property title="Viewport width to remove login text" description="" addon_id="" display_order="2240" group_name="headerNav" value_group="uix_loginTabs" depends_on="uix_removeRegisterText" value_type="unit" property_type="value" property_name="uix_viewportRemoveRegisterText">

<value>"@xf-responsiveWide"</value>

</property>


-<property title="Viewport width to remove visitor tab text" description="Sets the minimum viewport width to display the conversations, alert and username text." addon_id="" display_order="2280" group_name="headerNav" value_group="uix_loginTabs" depends_on="uix_removeVisitorTabsText" value_type="unit" property_type="value" property_name="uix_viewportRemoveVisitorTabsText">

<value>"10000px"</value>

</property>


-<property title="Minimum viewport width to show logo block" description="Viewport width to show the logo block. Below this width, the logo block will hide, and its components will be moved to the navigation" addon_id="" display_order="6100" group_name="headerNav" value_group="uix_logoBlock" depends_on="uix_enableLogoBlock" value_type="unit" property_type="value" property_name="uix_viewportShowLogoBlock">

<value>"100%"</value>

</property>


-<property title="Viewport width to remove the sub-navigation" description="" addon_id="" display_order="8100" group_name="headerNav" value_group="uix_subNav" depends_on="" value_type="string" property_type="value" property_name="uix_viewportWidthRemoveSubNav">

<value>"100%"</value>

</property>


-<property title="Visitor panel stats as icons" description="Changes the visitor stats in the visitor panel to icons instead of text" addon_id="" display_order="700" group_name="uix_sidebar" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_visitorPanelIcons">

<value>0</value>

</property>


-<property title="Visitor tabs location (mobile)" description="Choose where the visitor tabs should go for mobile" addon_id="" display_order="2205" group_name="headerNav" value_group="uix_loginTabs" depends_on="" value_type="select" property_type="value" property_name="uix_visitorTabsMobile">

<value_parameters>initial=Initial (don't change) tabbar= Tab bar canvas=Canvas</value_parameters>

<value>"tabbar"</value>

</property>


-<property title="Display welcome section on forum list only" description="" addon_id="" display_order="300" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="boolean" property_type="value" property_name="uix_welcomeSectionForumListOnly">

<value>1</value>

</property>


-<property title="Welcome section icon" description="" addon_id="" display_order="50" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_welcomeSectionIcon__style" css_components="text,padding,extra">

<value>{ "font-size": "48px", "color": "rgba(255,255,255,.3)", "padding-right": "@xf-paddingLarge" }</value>

</property>


-<property title="Welcome section inner" description="" addon_id="" display_order="10" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_welcomeSectionInner" css_components="text,background,border,padding,extra">

<value>{ "color": "#fff", "padding": "24px", "extra": "display: flex;\nalign-items: center;\njustify-content: center;\ntext-align: center;" }</value>

</property>


-<property title="Welcome section location" description="Chooses where to insert the welcome section" addon_id="" display_order="200" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_welcomeSectionLocation">

<value_parameters>aboveMainContainer=Default (above main container) mainContainerTop= Top of main container aboveMainContent=Above main content mainContentTop=Top of main content header=Bottom of header sidebar=Sidebar</value_parameters>

<value>"header"</value>

</property>


-<property title="Welcome section overlay" description="" addon_id="" display_order="600" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="color" property_type="value" property_name="uix_welcomeSectionOverlay">

<value>"url('@xf-uix_imagePath/io/images/swirl.png')"</value>

</property>


-<property title="Welcome section text" description="" addon_id="" display_order="40" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_welcomeSectionText__style" css_components="text,padding,extra">

<value>{ "font-size": "15px", "color": "rgba(255,255,255,.75)", "font-weight": "@xf-fontWeightLight", "padding-top": "@xf-paddingSmall", "padding-bottom": "@xf-paddingLarge" }</value>

</property>


-<property title="Welcome section title" description="" addon_id="" display_order="30" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_welcomeSectionTitle__style" css_components="text,padding,extra">

<value>{ "font-size": "36px", "extra": "margin: 0;\nfont-family: @xf-uix_headingFont;" }</value>

</property>


-<property title="Welcome section visible to" description="" addon_id="" display_order="100" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="select" property_type="value" property_name="uix_welcomeSectionVisible">

<value_parameters>always=Everybody off=Nobody userPermissions=User permissions</value_parameters>

<value>"userPermissions"</value>

</property>


-<property title="Welcome section button text" description="" addon_id="" display_order="1200" group_name="uix_welcomeSection" value_group="uix_welcomeText" depends_on="" value_type="string" property_type="value" property_name="uix_welcomeSection__buttonText">

<value>"Register now"</value>

</property>


-<property title="Welcome section icon" description="Enter the class name for an icon of an icon font" addon_id="" display_order="500" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_welcomeSection__icon">

<value>""</value>

</property>


-<property title="Welcome section container" description="" addon_id="" display_order="0" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="" property_type="css" property_name="uix_welcomeSection__style" css_components="background,border,border_radius,padding,extra">

<value>{ "background-color": "@xf-uix_primaryColor", "extra": "margin-bottom: @xf-elementSpacer;\nbackground-size: cover;\nbackground-position: center;\nbackground-image: linear-gradient(to right, spin(@xf-uix_primaryColor, -20%), @xf-uix_primaryColor);" }</value>

</property>


-<property title="Welcome section text" description="" addon_id="" display_order="1100" group_name="uix_welcomeSection" value_group="uix_welcomeText" depends_on="" value_type="string" property_type="value" property_name="uix_welcomeSection__text">

<value>"Join this amazing group of people and start discussing what you like."</value>

</property>


-<property title="Welcome section title" description="" addon_id="" display_order="1000" group_name="uix_welcomeSection" value_group="uix_welcomeText" depends_on="" value_type="string" property_type="value" property_name="uix_welcomeSection__title">

<value>"Welcome to iO"</value>

</property>


-<property title="Welcome section button url" description="" addon_id="" display_order="400" group_name="uix_welcomeSection" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_welcomeSection__url">

<value>"register"</value>

</property>


-<property title="Widget padding" description="Sets the default padding for sidebar widgets" addon_id="" display_order="800" group_name="uix_sidebar" value_group="" depends_on="" value_type="string" property_type="value" property_name="uix_widgetPadding">

<value>"@xf-paddingMedium"</value>

</property>

</properties>

</style>