mirror of
https://github.com/ascribe/onion.git
synced 2024-11-14 17:15:08 +01:00
Merge pull request #46 from ascribe/AD-1149-style-23vivi
AD-1149 Style 23vivi
This commit is contained in:
commit
904a6ce15a
@ -4,6 +4,7 @@ import React from 'react';
|
|||||||
import { Link } from 'react-router';
|
import { Link } from 'react-router';
|
||||||
|
|
||||||
import AccordionListItem from './accordion_list_item';
|
import AccordionListItem from './accordion_list_item';
|
||||||
|
import AccordionListItemThumbnailPlacholder from './accordion_list_item_thumbnail_placeholder';
|
||||||
|
|
||||||
import { getLangText } from '../../utils/lang_utils';
|
import { getLangText } from '../../utils/lang_utils';
|
||||||
|
|
||||||
@ -19,7 +20,14 @@ let AccordionListItemPiece = React.createClass({
|
|||||||
]),
|
]),
|
||||||
subsubheading: React.PropTypes.object,
|
subsubheading: React.PropTypes.object,
|
||||||
buttons: React.PropTypes.object,
|
buttons: React.PropTypes.object,
|
||||||
badge: React.PropTypes.object
|
badge: React.PropTypes.object,
|
||||||
|
thumbnailPlaceholder: React.PropTypes.element
|
||||||
|
},
|
||||||
|
|
||||||
|
getDefaultProps() {
|
||||||
|
return {
|
||||||
|
thumbnailPlaceholder: AccordionListItemThumbnailPlacholder
|
||||||
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
getLinkData() {
|
getLinkData() {
|
||||||
@ -34,7 +42,15 @@ let AccordionListItemPiece = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { className, piece, artistName, buttons, badge, children, subsubheading } = this.props;
|
const {
|
||||||
|
artistName,
|
||||||
|
badge,
|
||||||
|
buttons,
|
||||||
|
children,
|
||||||
|
className,
|
||||||
|
piece,
|
||||||
|
subsubheading,
|
||||||
|
thumbnailPlaceholder: ThumbnailPlaceholder } = this.props;
|
||||||
const { url, url_safe } = piece.thumbnail;
|
const { url, url_safe } = piece.thumbnail;
|
||||||
let thumbnail;
|
let thumbnail;
|
||||||
|
|
||||||
@ -42,11 +58,7 @@ let AccordionListItemPiece = React.createClass({
|
|||||||
// for not use the annoying ascribe_spiral.png, we're matching the url against
|
// for not use the annoying ascribe_spiral.png, we're matching the url against
|
||||||
// this name and replace it with a CSS version of the new logo.
|
// this name and replace it with a CSS version of the new logo.
|
||||||
if (url.match(/https:\/\/.*\/media\/thumbnails\/ascribe_spiral.png/)) {
|
if (url.match(/https:\/\/.*\/media\/thumbnails\/ascribe_spiral.png/)) {
|
||||||
thumbnail = (
|
thumbnail = (<ThumbnailPlaceholder />);
|
||||||
<span className="ascribe-logo-circle">
|
|
||||||
<span>A</span>
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
thumbnail = (
|
thumbnail = (
|
||||||
<div style={{backgroundImage: 'url("' + url_safe + '")'}}/>
|
<div style={{backgroundImage: 'url("' + url_safe + '")'}}/>
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
let accordionListItemThumbnailPlaceholder = React.createClass({
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<span className="ascribe-logo-circle">
|
||||||
|
<span>A</span>
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default accordionListItemThumbnailPlaceholder;
|
@ -31,6 +31,7 @@ let AccordionListItemWallet = React.createClass({
|
|||||||
propTypes: {
|
propTypes: {
|
||||||
className: React.PropTypes.string,
|
className: React.PropTypes.string,
|
||||||
content: React.PropTypes.object,
|
content: React.PropTypes.object,
|
||||||
|
thumbnailPlaceholder: React.PropTypes.element,
|
||||||
children: React.PropTypes.oneOfType([
|
children: React.PropTypes.oneOfType([
|
||||||
React.PropTypes.arrayOf(React.PropTypes.element),
|
React.PropTypes.arrayOf(React.PropTypes.element),
|
||||||
React.PropTypes.element
|
React.PropTypes.element
|
||||||
@ -123,32 +124,36 @@ let AccordionListItemWallet = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { children, className, content, thumbnailPlaceholder } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AccordionListItemPiece
|
<AccordionListItemPiece
|
||||||
className={this.props.className}
|
className={className}
|
||||||
piece={this.props.content}
|
piece={content}
|
||||||
subsubheading={
|
subsubheading={
|
||||||
<div className="pull-left">
|
<div className="pull-left">
|
||||||
<span>{Moment(this.props.content.date_created, 'YYYY-MM-DD').year()}</span>
|
<span>{Moment(content.date_created, 'YYYY-MM-DD').year()}</span>
|
||||||
{this.getLicences()}
|
{this.getLicences()}
|
||||||
</div>}
|
</div>
|
||||||
|
}
|
||||||
buttons={
|
buttons={
|
||||||
<div>
|
<div>
|
||||||
<AclProxy
|
<AclProxy
|
||||||
aclObject={this.props.content.acl}
|
aclObject={content.acl}
|
||||||
aclName="acl_view_editions">
|
aclName="acl_view_editions">
|
||||||
<AccordionListItemEditionWidget
|
<AccordionListItemEditionWidget
|
||||||
className="pull-right"
|
className="pull-right"
|
||||||
piece={this.props.content}
|
piece={content}
|
||||||
toggleCreateEditionsDialog={this.toggleCreateEditionsDialog}
|
toggleCreateEditionsDialog={this.toggleCreateEditionsDialog}
|
||||||
onPollingSuccess={this.onPollingSuccess}/>
|
onPollingSuccess={this.onPollingSuccess}/>
|
||||||
</AclProxy>
|
</AclProxy>
|
||||||
</div>}
|
</div>
|
||||||
badge={this.getGlyphicon()}>
|
}
|
||||||
|
badge={this.getGlyphicon()}
|
||||||
|
thumbnailPlaceholder={thumbnailPlaceholder}>
|
||||||
{this.getCreateEditionsDialog()}
|
{this.getCreateEditionsDialog()}
|
||||||
{/* this.props.children is AccordionListItemTableEditions */}
|
{/* this.props.children is AccordionListItemTableEditions */}
|
||||||
{this.props.children}
|
{children}
|
||||||
</AccordionListItemPiece>
|
</AccordionListItemPiece>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,7 @@ let PieceList = React.createClass({
|
|||||||
canLoadPieceList: React.PropTypes.bool,
|
canLoadPieceList: React.PropTypes.bool,
|
||||||
redirectTo: React.PropTypes.string,
|
redirectTo: React.PropTypes.string,
|
||||||
customSubmitButton: React.PropTypes.element,
|
customSubmitButton: React.PropTypes.element,
|
||||||
|
customThumbnailPlaceholder: React.PropTypes.element,
|
||||||
filterParams: React.PropTypes.array,
|
filterParams: React.PropTypes.array,
|
||||||
orderParams: React.PropTypes.array,
|
orderParams: React.PropTypes.array,
|
||||||
orderBy: React.PropTypes.string,
|
orderBy: React.PropTypes.string,
|
||||||
@ -250,9 +251,15 @@ let PieceList = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const {
|
||||||
|
accordionListItemType: AccordionListItemType,
|
||||||
|
bulkModalButtonListType: BulkModalButtonListType,
|
||||||
|
customSubmitButton,
|
||||||
|
customThumbnailPlaceholder,
|
||||||
|
filterParams,
|
||||||
|
orderParams } = this.props;
|
||||||
|
|
||||||
const loadingElement = <AscribeSpinner color='dark-blue' size='lg'/>;
|
const loadingElement = <AscribeSpinner color='dark-blue' size='lg'/>;
|
||||||
const AccordionListItemType = this.props.accordionListItemType;
|
|
||||||
const BulkModalButtonListType = this.props.bulkModalButtonListType;
|
|
||||||
|
|
||||||
const selectedEditions = this.fetchSelectedEditionList();
|
const selectedEditions = this.fetchSelectedEditionList();
|
||||||
const availableAcls = getAvailableAcls(selectedEditions, (aclName) => aclName !== 'acl_view');
|
const availableAcls = getAvailableAcls(selectedEditions, (aclName) => aclName !== 'acl_view');
|
||||||
@ -264,14 +271,14 @@ let PieceList = React.createClass({
|
|||||||
className="ascribe-piece-list-toolbar"
|
className="ascribe-piece-list-toolbar"
|
||||||
searchFor={this.searchFor}
|
searchFor={this.searchFor}
|
||||||
searchQuery={this.state.search}
|
searchQuery={this.state.search}
|
||||||
filterParams={this.props.filterParams}
|
filterParams={filterParams}
|
||||||
orderParams={this.props.orderParams}
|
orderParams={orderParams}
|
||||||
filterBy={this.state.filterBy}
|
filterBy={this.state.filterBy}
|
||||||
orderBy={this.state.orderBy}
|
orderBy={this.state.orderBy}
|
||||||
applyFilterBy={this.applyFilterBy}
|
applyFilterBy={this.applyFilterBy}
|
||||||
applyOrderBy={this.applyOrderBy}>
|
applyOrderBy={this.applyOrderBy}>
|
||||||
{this.props.customSubmitButton ?
|
{customSubmitButton ?
|
||||||
this.props.customSubmitButton :
|
customSubmitButton :
|
||||||
<button className="btn btn-default btn-ascribe-add">
|
<button className="btn btn-default btn-ascribe-add">
|
||||||
<span className="icon-ascribe icon-ascribe-add" />
|
<span className="icon-ascribe icon-ascribe-add" />
|
||||||
</button>
|
</button>
|
||||||
@ -293,7 +300,7 @@ let PieceList = React.createClass({
|
|||||||
</PieceListBulkModal>
|
</PieceListBulkModal>
|
||||||
<PieceListFilterDisplay
|
<PieceListFilterDisplay
|
||||||
filterBy={this.state.filterBy}
|
filterBy={this.state.filterBy}
|
||||||
filterParams={this.props.filterParams}/>
|
filterParams={filterParams}/>
|
||||||
<AccordionList
|
<AccordionList
|
||||||
className="ascribe-accordion-list"
|
className="ascribe-accordion-list"
|
||||||
changeOrder={this.accordionChangeOrder}
|
changeOrder={this.accordionChangeOrder}
|
||||||
@ -311,6 +318,7 @@ let PieceList = React.createClass({
|
|||||||
<AccordionListItemType
|
<AccordionListItemType
|
||||||
className="col-xs-12 col-sm-10 col-md-8 col-lg-8 col-sm-offset-1 col-md-offset-2 col-lg-offset-2 ascribe-accordion-list-item"
|
className="col-xs-12 col-sm-10 col-md-8 col-lg-8 col-sm-offset-1 col-md-offset-2 col-lg-offset-2 ascribe-accordion-list-item"
|
||||||
content={piece}
|
content={piece}
|
||||||
|
thumbnailPlaceholder={customThumbnailPlaceholder}
|
||||||
key={i}>
|
key={i}>
|
||||||
<AccordionListItemTableEditions
|
<AccordionListItemTableEditions
|
||||||
className="ascribe-accordion-list-item-table col-xs-12 col-sm-10 col-md-8 col-lg-8 col-sm-offset-1 col-md-offset-2 col-lg-offset-2"
|
className="ascribe-accordion-list-item-table col-xs-12 col-sm-10 col-md-8 col-lg-8 col-sm-offset-1 col-md-offset-2 col-lg-offset-2"
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
let Vivi23AccordionListItemThumbnailPlaceholder = React.createClass({
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<span className="ascribe-thumbnail-placeholder">
|
||||||
|
23
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Vivi23AccordionListItemThumbnailPlaceholder;
|
@ -0,0 +1,78 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import Button from 'react-bootstrap/lib/Button';
|
||||||
|
import LinkContainer from 'react-router-bootstrap/lib/LinkContainer';
|
||||||
|
|
||||||
|
import WhitelabelActions from '../../../../../actions/whitelabel_actions';
|
||||||
|
import WhitelabelStore from '../../../../../stores/whitelabel_store';
|
||||||
|
|
||||||
|
import { mergeOptions } from '../../../../../utils/general_utils';
|
||||||
|
import { getLangText } from '../../../../../utils/lang_utils';
|
||||||
|
import { setDocumentTitle } from '../../../../../utils/dom_utils';
|
||||||
|
|
||||||
|
let Vivi23Landing = React.createClass({
|
||||||
|
getInitialState() {
|
||||||
|
return WhitelabelStore.getState();
|
||||||
|
},
|
||||||
|
|
||||||
|
componentWillMount() {
|
||||||
|
setDocumentTitle('23vivi Marketplace');
|
||||||
|
},
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
WhitelabelStore.listen(this.onChange);
|
||||||
|
WhitelabelActions.fetchWhitelabel();
|
||||||
|
},
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
WhitelabelStore.unlisten(this.onChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
onChange(state) {
|
||||||
|
this.setState(state);
|
||||||
|
},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<div className="container ascribe-form-wrapper vivi23-landing">
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-xs-12">
|
||||||
|
<div className="row vivi23-landing--header">
|
||||||
|
<img className="vivi23-landing--header-logo" src={this.state.whitelabel.logo} />
|
||||||
|
<div>
|
||||||
|
{getLangText('Artwork from the 23vivi Marketplace is powered by') + ' '}
|
||||||
|
<span className="icon-ascribe-logo" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row vivi23-landing--content">
|
||||||
|
<div className="col-sm-6">
|
||||||
|
<p>
|
||||||
|
{getLangText('Existing ascribe user?')}
|
||||||
|
</p>
|
||||||
|
<LinkContainer to="/login">
|
||||||
|
<Button>
|
||||||
|
{getLangText('Log in')}
|
||||||
|
</Button>
|
||||||
|
</LinkContainer>
|
||||||
|
</div>
|
||||||
|
<div className="col-sm-6">
|
||||||
|
<p>
|
||||||
|
{getLangText('Do you need an account?')}
|
||||||
|
</p>
|
||||||
|
<LinkContainer to="/signup">
|
||||||
|
<Button>
|
||||||
|
{getLangText('Sign up')}
|
||||||
|
</Button>
|
||||||
|
</LinkContainer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Vivi23Landing;
|
@ -0,0 +1,24 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import Vivi23AccordionListItemThumbnailPlaceholder from './23vivi_accordion_list/23vivi_accordion_list_item_thumbnail_placeholder';
|
||||||
|
|
||||||
|
import MarketPieceList from '../market/market_piece_list';
|
||||||
|
|
||||||
|
let vivi23PieceList = React.createClass({
|
||||||
|
propTypes: {
|
||||||
|
location: React.PropTypes.object
|
||||||
|
},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<MarketPieceList
|
||||||
|
customThumbnailPlaceholder={Vivi23AccordionListItemThumbnailPlaceholder}
|
||||||
|
location={this.props.location} />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
export default vivi23PieceList;
|
@ -57,9 +57,9 @@ let CylandLanding = React.createClass({
|
|||||||
setDocumentTitle('CYLAND MediaArtLab');
|
setDocumentTitle('CYLAND MediaArtLab');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container ascribe-form-wrapper">
|
<div className="container ascribe-form-wrapper cyland-landing">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-xs-12 wp-landing-wrapper">
|
<div className="col-xs-12">
|
||||||
<div className="row" style={{border: '1px solid #CCC', padding: '2em'}}>
|
<div className="row" style={{border: '1px solid #CCC', padding: '2em'}}>
|
||||||
<img src={this.state.whitelabel.logo} width="400px"/>
|
<img src={this.state.whitelabel.logo} width="400px"/>
|
||||||
<div style={{marginTop: '1em'}}>
|
<div style={{marginTop: '1em'}}>
|
||||||
|
@ -17,6 +17,7 @@ import { getLangText } from '../../../../../utils/lang_utils';
|
|||||||
|
|
||||||
let MarketPieceList = React.createClass({
|
let MarketPieceList = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
|
customThumbnailPlaceholder: React.PropTypes.element,
|
||||||
location: React.PropTypes.object
|
location: React.PropTypes.object
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -49,6 +50,7 @@ let MarketPieceList = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { customThumbnailPlaceholder, location } = this.props;
|
||||||
const {
|
const {
|
||||||
currentUser: { email: userEmail },
|
currentUser: { email: userEmail },
|
||||||
whitelabel: {
|
whitelabel: {
|
||||||
@ -78,8 +80,9 @@ let MarketPieceList = React.createClass({
|
|||||||
canLoadPieceList={canLoadPieceList}
|
canLoadPieceList={canLoadPieceList}
|
||||||
redirectTo="/register_piece?slide_num=0"
|
redirectTo="/register_piece?slide_num=0"
|
||||||
bulkModalButtonListType={MarketAclButtonList}
|
bulkModalButtonListType={MarketAclButtonList}
|
||||||
|
customThumbnailPlaceholder={customThumbnailPlaceholder}
|
||||||
filterParams={filterParams}
|
filterParams={filterParams}
|
||||||
location={this.props.location} />
|
location={location} />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -32,7 +32,7 @@ let WalletApp = React.createClass({
|
|||||||
|
|
||||||
// if the path of the current activeRoute is not defined, then this is the IndexRoute
|
// if the path of the current activeRoute is not defined, then this is the IndexRoute
|
||||||
if ((!path || history.isActive('/login') || history.isActive('/signup') || history.isActive('/contract_notifications'))
|
if ((!path || history.isActive('/login') || history.isActive('/signup') || history.isActive('/contract_notifications'))
|
||||||
&& (['ikonotv']).indexOf(subdomain) > -1) {
|
&& (['cyland', 'ikonotv', 'lumenus', '23vivi']).indexOf(subdomain) > -1) {
|
||||||
header = (<div className="hero"/>);
|
header = (<div className="hero"/>);
|
||||||
} else {
|
} else {
|
||||||
header = <Header showAddWork={true} routes={routes} />;
|
header = <Header showAddWork={true} routes={routes} />;
|
||||||
|
@ -37,6 +37,9 @@ import MarketEditionContainer from './components/market/market_detail/market_edi
|
|||||||
|
|
||||||
import LumenusLanding from './components/lumenus/lumenus_landing';
|
import LumenusLanding from './components/lumenus/lumenus_landing';
|
||||||
|
|
||||||
|
import Vivi23Landing from './components/23vivi/23vivi_landing';
|
||||||
|
import Vivi23PieceList from './components/23vivi/23vivi_piece_list';
|
||||||
|
|
||||||
import AuthProxyHandler from '../../../components/ascribe_routes/proxy_routes/auth_proxy_handler';
|
import AuthProxyHandler from '../../../components/ascribe_routes/proxy_routes/auth_proxy_handler';
|
||||||
|
|
||||||
import WalletApp from './wallet_app';
|
import WalletApp from './wallet_app';
|
||||||
@ -193,7 +196,7 @@ let ROUTES = {
|
|||||||
),
|
),
|
||||||
'23vivi': (
|
'23vivi': (
|
||||||
<Route path='/' component={WalletApp}>
|
<Route path='/' component={WalletApp}>
|
||||||
<IndexRoute component={AuthProxyHandler({to: '/collection', when: 'loggedIn'})(LumenusLanding)} />
|
<IndexRoute component={AuthProxyHandler({to: '/collection', when: 'loggedIn'})(Vivi23Landing)} />
|
||||||
<Route
|
<Route
|
||||||
path='login'
|
path='login'
|
||||||
component={AuthProxyHandler({to: '/collection', when: 'loggedIn'})(LoginContainer)} />
|
component={AuthProxyHandler({to: '/collection', when: 'loggedIn'})(LoginContainer)} />
|
||||||
@ -218,7 +221,7 @@ let ROUTES = {
|
|||||||
headerTitle='+ NEW WORK'/>
|
headerTitle='+ NEW WORK'/>
|
||||||
<Route
|
<Route
|
||||||
path='collection'
|
path='collection'
|
||||||
component={AuthProxyHandler({to: '/login', when: 'loggedOut'})(MarketPieceList)}
|
component={AuthProxyHandler({to: '/login', when: 'loggedOut'})(Vivi23PieceList)}
|
||||||
headerTitle='COLLECTION'/>
|
headerTitle='COLLECTION'/>
|
||||||
<Route path='pieces/:pieceId' component={MarketPieceContainer} />
|
<Route path='pieces/:pieceId' component={MarketPieceContainer} />
|
||||||
<Route path='editions/:editionId' component={MarketEditionContainer} />
|
<Route path='editions/:editionId' component={MarketEditionContainer} />
|
||||||
|
@ -248,25 +248,3 @@
|
|||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
padding: 4px 12px 0 10px
|
padding: 4px 12px 0 10px
|
||||||
}
|
}
|
||||||
|
|
||||||
.ascribe-logo-circle {
|
|
||||||
border: 6px solid #F6F6F6;
|
|
||||||
border-radius: 10em;
|
|
||||||
position: relative;
|
|
||||||
top: 10%;
|
|
||||||
left: 10%;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
width: 80%;
|
|
||||||
height: 80%;
|
|
||||||
|
|
||||||
> span {
|
|
||||||
color: #F6F6F6;
|
|
||||||
position: absolute;
|
|
||||||
top: -.29em;
|
|
||||||
left: .16em;
|
|
||||||
|
|
||||||
font-size: 5em;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
}
|
|
@ -60,6 +60,34 @@ $ascribe-accordion-list-item-height: 100px;
|
|||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ascribe-logo-circle {
|
||||||
|
border: 6px solid #F6F6F6;
|
||||||
|
border-radius: 10em;
|
||||||
|
position: relative;
|
||||||
|
top: 10%;
|
||||||
|
left: 10%;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
width: 80%;
|
||||||
|
height: 80%;
|
||||||
|
|
||||||
|
> span {
|
||||||
|
color: #F6F6F6;
|
||||||
|
position: absolute;
|
||||||
|
top: -.29em;
|
||||||
|
left: .16em;
|
||||||
|
|
||||||
|
font-size: 5em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-thumbnail-placeholder {
|
||||||
|
color: #F6F6F6;
|
||||||
|
font-size: 5em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
//&::before {
|
//&::before {
|
||||||
// content: ' ';
|
// content: ' ';
|
||||||
// display: inline-block;
|
// display: inline-block;
|
||||||
@ -211,10 +239,6 @@ $ascribe-accordion-list-item-height: 100px;
|
|||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: $ascribe-dark-blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
.glyphicon {
|
.glyphicon {
|
||||||
font-size: .8em;
|
font-size: .8em;
|
||||||
top: 1px !important;
|
top: 1px !important;
|
||||||
|
@ -68,10 +68,15 @@ hr {
|
|||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
background-color: $ascribe--nav-bg-color;
|
background-color: $ascribe--nav-bg-color;
|
||||||
}
|
}
|
||||||
|
.navbar-nav > li > .dropdown-menu {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.dropdown-menu > li > a {
|
.dropdown-menu > li > a {
|
||||||
color: $ascribe--nav-fg-prim-color;
|
color: $ascribe--nav-fg-prim-color;
|
||||||
font-weight: $ascribe--font-weight-light;
|
font-weight: $ascribe--font-weight-light;
|
||||||
|
padding-bottom: 9px;
|
||||||
|
padding-top: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu > li > a:hover,
|
.dropdown-menu > li > a:hover,
|
||||||
@ -79,6 +84,10 @@ hr {
|
|||||||
background-color: rgba($ascribe--button-default-color, .05);
|
background-color: rgba($ascribe--button-default-color, .05);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-menu > .divider {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.notification-menu {
|
.notification-menu {
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
word-break: break-all;
|
word-break: break-word;
|
||||||
font-size: .9em;
|
font-size: .9em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -350,7 +350,7 @@ hr {
|
|||||||
|
|
||||||
> span {
|
> span {
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
font-weight: 600;
|
font-weight: normal;
|
||||||
color: #616161;
|
color: #616161;
|
||||||
|
|
||||||
padding-left: .3em;
|
padding-left: .3em;
|
||||||
|
360
sass/whitelabel/wallet/23vivi/23vivi_custom_style.scss
Normal file
360
sass/whitelabel/wallet/23vivi/23vivi_custom_style.scss
Normal file
@ -0,0 +1,360 @@
|
|||||||
|
/** Sass cannot use a number as the first character of a variable, so we'll have to settle with vivi23 **/
|
||||||
|
$vivi23--fg-color: black;
|
||||||
|
$vivi23--bg-color: white;
|
||||||
|
$vivi23--nav-fg-prim-color: $vivi23--fg-color;
|
||||||
|
$vivi23--nav-fg-sec-color: #3a3a3a;
|
||||||
|
$vivi23--nav-bg-color: $vivi23--bg-color;
|
||||||
|
$vivi23--nav-highlight-color: #f8f8f8;
|
||||||
|
$vivi23--button-default-color: $vivi23--fg-color;
|
||||||
|
$vivi23--highlight-color: #de2600;
|
||||||
|
|
||||||
|
|
||||||
|
.client--23vivi {
|
||||||
|
/** Landing page **/
|
||||||
|
.route--landing {
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
> .container {
|
||||||
|
display: table-cell;
|
||||||
|
padding-bottom: 100px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vivi23-landing {
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vivi23-landing--header {
|
||||||
|
background-color: $vivi23--fg-color;
|
||||||
|
border: 1px solid $vivi23--fg-color;
|
||||||
|
color: $vivi23--bg-color;
|
||||||
|
padding: 2em;
|
||||||
|
|
||||||
|
.vivi23-landing--header-logo {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
height: 75px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vivi23-landing--content {
|
||||||
|
border: 1px solid darken($vivi23--bg-color, 20%);
|
||||||
|
border-top: none;
|
||||||
|
padding: 2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Navbar **/
|
||||||
|
.navbar-default {
|
||||||
|
background-color: $vivi23--nav-fg-prim-color;
|
||||||
|
|
||||||
|
.navbar-brand .icon-ascribe-logo {
|
||||||
|
color: $vivi23--bg-color;
|
||||||
|
&:hover {
|
||||||
|
color: darken($vivi23--bg-color, 20%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav > li > a,
|
||||||
|
.navbar-nav > li > a:focus,
|
||||||
|
.navbar-nav > li > .active a,
|
||||||
|
.navbar-nav > li > .active a:focus {
|
||||||
|
color: $vivi23--nav-bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav > li > a:hover {
|
||||||
|
color: darken($vivi23--nav-bg-color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav > .active a,
|
||||||
|
.navbar-nav > .active a:hover,
|
||||||
|
.navbar-nav > .active a:focus {
|
||||||
|
background-color: $vivi23--nav-fg-prim-color;
|
||||||
|
border-bottom-color: $vivi23--nav-bg-color;
|
||||||
|
color: $vivi23--nav-bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav > .open > a,
|
||||||
|
.dropdown-menu > .active > a,
|
||||||
|
.dropdown-menu > li > a {
|
||||||
|
color: $vivi23--nav-fg-prim-color;
|
||||||
|
background-color: $vivi23--nav-bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav > .open > a:hover,
|
||||||
|
.navbar-nav > .open > a:focus,
|
||||||
|
.dropdown-menu > .active > a:hover,
|
||||||
|
.dropdown-menu > .active > a:focus,
|
||||||
|
.dropdown-menu > li > a:hover,
|
||||||
|
.dropdown-menu > li > a:focus {
|
||||||
|
color: lighten($vivi23--nav-fg-prim-color, 20%);
|
||||||
|
background-color: $vivi23--nav-highlight-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-collapse.collapsing,
|
||||||
|
.navbar-collapse.collapse.in {
|
||||||
|
background-color: $vivi23--nav-bg-color;
|
||||||
|
|
||||||
|
.navbar-nav > .open > a,
|
||||||
|
.navbar-nav > .active > a {
|
||||||
|
background-color: $vivi23--nav-highlight-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-collapse.collapsing li a,
|
||||||
|
.navbar-collapse.collapse.in li a {
|
||||||
|
color: $vivi23--nav-fg-prim-color;
|
||||||
|
}
|
||||||
|
.navbar-collapse.collapse.in li a:not(.ascribe-powered-by):hover {
|
||||||
|
color: lighten($vivi23--nav-fg-prim-color, 20%);
|
||||||
|
background-color: $vivi23--nav-highlight-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-toggle {
|
||||||
|
border-color: $vivi23--highlight-color;
|
||||||
|
|
||||||
|
.icon-bar {
|
||||||
|
background-color: $vivi23--highlight-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-toggle:hover,
|
||||||
|
.navbar-toggle:focus {
|
||||||
|
border-color: lighten($vivi23--highlight-color, 10%);
|
||||||
|
background-color: $vivi23--nav-fg-prim-color;
|
||||||
|
|
||||||
|
.icon-bar {
|
||||||
|
background-color: lighten($vivi23--highlight-color, 10%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-menu {
|
||||||
|
.dropdown-menu {
|
||||||
|
background-color: $vivi23--nav-bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-header {
|
||||||
|
background-color: $vivi23--nav-fg-sec-color;
|
||||||
|
border-top-width: 0;
|
||||||
|
color: $vivi23--nav-bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action {
|
||||||
|
color: $vivi23--highlight-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Buttons **/
|
||||||
|
// reset disabled button styling for btn-default
|
||||||
|
.btn-default.disabled,
|
||||||
|
.btn-default.disabled:hover,
|
||||||
|
.btn-default.disabled:focus,
|
||||||
|
.btn-default.disabled.focus,
|
||||||
|
.btn-default.disabled:active,
|
||||||
|
.btn-default.disabled.active,
|
||||||
|
.btn-default[disabled],
|
||||||
|
.btn-default[disabled]:hover,
|
||||||
|
.btn-default[disabled]:focus,
|
||||||
|
.btn-default[disabled].focus,
|
||||||
|
.btn-default[disabled]:active,
|
||||||
|
.btn-default[disabled].active,
|
||||||
|
fieldset[disabled] .btn-default,
|
||||||
|
fieldset[disabled] .btn-default:hover,
|
||||||
|
fieldset[disabled] .btn-default:focus,
|
||||||
|
fieldset[disabled] .btn-default.focus,
|
||||||
|
fieldset[disabled] .btn-default:active,
|
||||||
|
fieldset[disabled] .btn-default.active {
|
||||||
|
background-color: lighten($vivi23--button-default-color, 30%);
|
||||||
|
border-color: lighten($vivi23--button-default-color, 30%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-default {
|
||||||
|
background-color: $vivi23--button-default-color;
|
||||||
|
border-color: $vivi23--button-default-color;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:active,
|
||||||
|
&:focus,
|
||||||
|
&:active:hover,
|
||||||
|
&:active:focus,
|
||||||
|
&:active.focus,
|
||||||
|
&.active:hover,
|
||||||
|
&.active:focus,
|
||||||
|
&.active.focus {
|
||||||
|
background-color: lighten($vivi23--button-default-color, 30%);
|
||||||
|
border-color: lighten($vivi23--button-default-color, 30%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// disabled buttons
|
||||||
|
.btn-secondary.disabled,
|
||||||
|
.btn-secondary.disabled:hover,
|
||||||
|
.btn-secondary.disabled:focus,
|
||||||
|
.btn-secondary.disabled.focus,
|
||||||
|
.btn-secondary.disabled:active,
|
||||||
|
.btn-secondary.disabled.active,
|
||||||
|
.btn-secondary[disabled],
|
||||||
|
.btn-secondary[disabled]:hover,
|
||||||
|
.btn-secondary[disabled]:focus,
|
||||||
|
.btn-secondary[disabled].focus,
|
||||||
|
.btn-secondary[disabled]:active,
|
||||||
|
.btn-secondary[disabled].active,
|
||||||
|
fieldset[disabled] .btn-secondary,
|
||||||
|
fieldset[disabled] .btn-secondary:hover,
|
||||||
|
fieldset[disabled] .btn-secondary:focus,
|
||||||
|
fieldset[disabled] .btn-secondary.focus,
|
||||||
|
fieldset[disabled] .btn-secondary:active,
|
||||||
|
fieldset[disabled] .btn-secondary.active {
|
||||||
|
background-color: darken($vivi23--bg-color, 20%);
|
||||||
|
border-color: $vivi23--button-default-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-secondary {
|
||||||
|
border-color: $vivi23--button-default-color;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:active,
|
||||||
|
&:focus,
|
||||||
|
&:active:hover,
|
||||||
|
&:active:focus,
|
||||||
|
&:active.focus,
|
||||||
|
&.active:hover,
|
||||||
|
&.active:focus,
|
||||||
|
&.active.focus {
|
||||||
|
background-color: $vivi23--button-default-color;
|
||||||
|
border-color: $vivi23--button-default-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-tertiary {
|
||||||
|
&:hover,
|
||||||
|
&:active,
|
||||||
|
&ctive:hover,
|
||||||
|
&.active:hover{
|
||||||
|
background-color: $vivi23--highlight-color;
|
||||||
|
border-color: $vivi23--highlight-color;
|
||||||
|
color: $vivi23--highlight-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Other components **/
|
||||||
|
.ascribe-piece-list-toolbar .btn-ascribe-add {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-accordion-list-table-toggle:hover {
|
||||||
|
color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-action-badge {
|
||||||
|
color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acl-information-dropdown-list .title {
|
||||||
|
color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// filter widget
|
||||||
|
.ascribe-piece-list-toolbar-filter-widget button {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border-color: transparent !important;
|
||||||
|
color: $vivi23--button-default-color !important;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:active {
|
||||||
|
background-color: $vivi23--button-default-color !important;
|
||||||
|
border-color: $vivi23--button-default-color !important;
|
||||||
|
color: $vivi23--bg-color !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-ascribe-search {
|
||||||
|
color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// forms
|
||||||
|
.ascribe-property-wrapper:hover {
|
||||||
|
border-left-color: rgba($vivi23--fg-color, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-property textarea,
|
||||||
|
.ascribe-property input,
|
||||||
|
.search-bar > .form-group > .input-group input {
|
||||||
|
&::-webkit-input-placeholder {
|
||||||
|
color: rgba($vivi23--fg-color, 0.5);
|
||||||
|
}
|
||||||
|
&::-moz-placeholder {
|
||||||
|
color: rgba($vivi23--fg-color, 0.5);
|
||||||
|
}
|
||||||
|
&:-ms-input-placeholder {
|
||||||
|
color: rgba($vivi23--fg-color, 0.5);
|
||||||
|
}
|
||||||
|
&:-moz-placeholder {
|
||||||
|
color: rgba($vivi23--fg-color, 0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-property {
|
||||||
|
> div,
|
||||||
|
> input,
|
||||||
|
> pre,
|
||||||
|
> select,
|
||||||
|
> span:not(.glyphicon),
|
||||||
|
> p,
|
||||||
|
> p > span,
|
||||||
|
> textarea {
|
||||||
|
color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// global notification
|
||||||
|
.ascribe-global-notification-success {
|
||||||
|
background-color: lighten($vivi23--fg-color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// uploader progress
|
||||||
|
.ascribe-progress-bar > .progress-bar {
|
||||||
|
background-color: lighten($vivi23--fg-color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// spinner
|
||||||
|
.spinner-circle {
|
||||||
|
border-color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
.spinner-inner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// video player
|
||||||
|
.ascribe-media-player .vjs-default-skin {
|
||||||
|
.vjs-play-progress,
|
||||||
|
.vjs-volume-level {
|
||||||
|
background-color: $vivi23--highlight-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// pager
|
||||||
|
.pager li > a,
|
||||||
|
.pager li > span {
|
||||||
|
background-color: $vivi23--fg-color;
|
||||||
|
border-color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
.pager .disabled > a,
|
||||||
|
.pager .disabled > span {
|
||||||
|
background-color: $vivi23--fg-color !important;
|
||||||
|
border-color: $vivi23--fg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// intercom
|
||||||
|
#intercom-container .intercom-launcher-button {
|
||||||
|
background-color: $vivi23--button-default-color !important;
|
||||||
|
border-color: $vivi23--button-default-color !important;
|
||||||
|
}
|
||||||
|
}
|
@ -59,7 +59,6 @@ $cyland--button-color: $cyland--nav-fg-prim-color;
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.client--cyland .icon-ascribe-search{
|
.client--cyland .icon-ascribe-search{
|
||||||
color: $cyland--button-color;
|
color: $cyland--button-color;
|
||||||
}
|
}
|
||||||
@ -148,6 +147,24 @@ $cyland--button-color: $cyland--nav-fg-prim-color;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// landing page
|
||||||
|
.client--cyland {
|
||||||
|
.route--landing {
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
> .container {
|
||||||
|
display: table-cell;
|
||||||
|
padding-bottom: 100px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cyland-landing {
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// spinner!
|
// spinner!
|
||||||
.client--cyland {
|
.client--cyland {
|
||||||
.btn-spinner {
|
.btn-spinner {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
@import 'cc/cc_custom_style';
|
@import 'cc/cc_custom_style';
|
||||||
@import 'cyland/cyland_custom_style';
|
@import 'cyland/cyland_custom_style';
|
||||||
@import 'ikonotv/ikonotv_custom_style';
|
@import 'ikonotv/ikonotv_custom_style';
|
||||||
|
@import '23vivi/23vivi_custom_style';
|
||||||
|
|
||||||
.ascribe-wallet-app {
|
.ascribe-wallet-app {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user