Use variable based bootstrap and creativestart

fix
This commit is contained in:
Dennis Reimann 2019-10-26 21:20:39 +02:00
parent 04fbe42bda
commit fdc1aa25e4
No known key found for this signature in database
GPG key ID: 5009E1797F03F8D0
22 changed files with 7228 additions and 17042 deletions

View file

@ -21,12 +21,16 @@ namespace BTCPayServer.HostedServices
{
public void Update(ThemeSettings data)
{
if (String.IsNullOrWhiteSpace(data.ThemeCssUri))
_themeUri = "/css/btcpay-theme.css";
else
_themeUri = data.ThemeCssUri;
if (String.IsNullOrWhiteSpace(data.BootstrapCssUri))
_bootstrapUri = "/vendor/bootstrap4/css/bootstrap.css?v=" + DateTime.Now.Ticks;
_bootstrapUri = "/vendor/bootstrap/bootstrap.css";
else
_bootstrapUri = data.BootstrapCssUri;
if (String.IsNullOrWhiteSpace(data.CreativeStartCssUri))
_creativeStartUri = "/vendor/bootstrap4-creativestart/creative.css?v=" + DateTime.Now.Ticks;
else
@ -34,6 +38,12 @@ namespace BTCPayServer.HostedServices
FirstRun = data.FirstRun;
}
private string _themeUri;
public string ThemeUri
{
get { return _themeUri; }
}
private string _bootstrapUri;
public string BootstrapUri
{
@ -94,6 +104,10 @@ namespace BTCPayServer.HostedServices
{
policies.Clear();
}
if (manager.ThemeUri != null && Uri.TryCreate(manager.ThemeUri, UriKind.Absolute, out uri))
{
policies.Clear();
}
}
}
}

View file

@ -9,6 +9,11 @@ namespace BTCPayServer.Services
{
public class ThemeSettings
{
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
[MaxLength(500)]
[Display(Name = "Custom theme CSS file")]
public string ThemeCssUri { get; set; }
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
[MaxLength(500)]
[Display(Name = "Custom bootstrap CSS file")]

View file

@ -14,6 +14,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<link href="@Context.Request.GetRelativePathOrAbsolute(themeManager.BootstrapUri)" rel="stylesheet" />
<link href="@Context.Request.GetRelativePathOrAbsolute(themeManager.ThemeUri)" rel="stylesheet" />
@if (Model.CustomCSSLink != null)
{
<link href="@Model.CustomCSSLink" rel="stylesheet" />

View file

@ -22,6 +22,7 @@
<link rel="manifest" href="~/manifest.json">
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.BootstrapUri)" rel="stylesheet" />
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.ThemeUri)" rel="stylesheet" />
@if (Model.CustomCSSLink != null)
{
<link href="@Model.CustomCSSLink" rel="stylesheet" />

View file

@ -15,6 +15,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<link href="@Context.Request.GetRelativePathOrAbsolute(themeManager.BootstrapUri)" rel="stylesheet" />
<link href="@Context.Request.GetRelativePathOrAbsolute(themeManager.ThemeUri)" rel="stylesheet" />
@if (Model.CustomCSSLink != null)
{
<link href="@Model.CustomCSSLink" rel="stylesheet" />
@ -195,7 +196,6 @@ else
Cancel current invoice</button>
</template>
</td>
</tr>
</tbody>
@ -206,12 +206,11 @@ else
</div>
<div class="card-footer text-muted d-flex justify-content-between">
<div >
<div>
<span v-on:click="print" class="btn-link d-print-none" style="cursor: pointer"> <span class="fa fa-print"></span> Print</span>
<span>Updated {{lastUpdated}}</span>
</div>
<div >
<div>
<span class="text-muted">Powered by </span><a href="https://btcpayserver.org" target="_blank">BTCPay Server</a>
</div>
</div>

View file

@ -19,6 +19,7 @@
<link rel="manifest" href="~/manifest.json">
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.BootstrapUri)" rel="stylesheet" />
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.ThemeUri)" rel="stylesheet" />
<link href="~/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
<bundle name="wwwroot/bundles/lightning-node-info-bundle.min.js" />

View file

@ -13,6 +13,7 @@
@* CSS *@
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.BootstrapUri)" rel="stylesheet" />
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.CreativeStartUri)" rel="stylesheet" />
<link href="@this.Context.Request.GetRelativePathOrAbsolute(themeManager.ThemeUri)" rel="stylesheet" />
<bundle name="wwwroot/bundles/main-bundle.min.css" />
@* JS *@
<bundle name="wwwroot/bundles/main-bundle.min.js" />

View file

@ -15,7 +15,7 @@
"inputFiles": [
"wwwroot/vendor/jquery/jquery.js",
"wwwroot/vendor/popper/popper.js",
"wwwroot/vendor/bootstrap4/js/bootstrap.js",
"wwwroot/vendor/bootstrap/bootstrap.js",
"wwwroot/vendor/jquery-easing/jquery.easing.js",
"wwwroot/vendor/scrollreveal/scrollreveal.min.js",
"wwwroot/vendor/magnific-popup/jquery.magnific-popup.js",
@ -56,7 +56,6 @@
"wwwroot/checkout/**/*.js"
]
},
{
"outputFileName": "wwwroot/bundles/lightning-node-info-bundle.min.js",
"inputFiles": [
@ -71,12 +70,11 @@
"outputFileName": "wwwroot/bundles/cart-bundle.min.js",
"inputFiles": [
"wwwroot/vendor/jquery/jquery.js",
"wwwroot/vendor/bootstrap4/js/bootstrap.js",
"wwwroot/vendor/bootstrap/bootstrap.js",
"wwwroot/cart/js/cart.js",
"wwwroot/cart/js/cart.jquery.js"
]
},
{
"outputFileName": "wwwroot/bundles/crowdfund-bundle-1.min.js",
"inputFiles": [
@ -89,7 +87,6 @@
"wwwroot/crowdfund/**/*.js"
]
},
{
"outputFileName": "wwwroot/bundles/crowdfund-bundle-2.min.js",
"inputFiles": [
@ -133,7 +130,6 @@
"wwwroot/vendor/summernote/summernote-bs4.css"
]
},
{
"outputFileName": "wwwroot/bundles/crowdfund-bundle.min.css",
"inputFiles": [
@ -142,7 +138,6 @@
"wwwroot/crowdfund/**/*.css"
]
},
{
"outputFileName": "wwwroot/bundles/payment-request-admin-bundle.min.js",
"inputFiles": [
@ -150,14 +145,12 @@
"wwwroot/payment-request-admin/**/*.js"
]
},
{
"outputFileName": "wwwroot/bundles/payment-request-admin-bundle.min.css",
"inputFiles": [
"wwwroot/vendor/summernote/summernote-bs4.css"
]
},
{
"outputFileName": "wwwroot/bundles/payment-request-bundle-1.min.js",
"inputFiles": [
@ -170,7 +163,6 @@
"wwwroot/payment-request/**/*.js"
]
},
{
"outputFileName": "wwwroot/bundles/payment-request-bundle-2.min.js",
"inputFiles": [

View file

@ -0,0 +1,76 @@
/*
* BTCPay variables as CSS custom properties.
* -> These get used in the _variables.scss
*/
:root {
--btcpay-accent-light: #CEDC21;
--btcpay-accent-medium: #51B13E;
--btcpay-accent-dark: #137547;
--btcpay-accent-darkest: #0F3B21;
--btcpay-neutral-100: #FBFAF8;
--btcpay-neutral-200: #F5F5F3;
--btcpay-neutral-300: #E5E5E5;
--btcpay-neutral-600: #536E8D;
--btcpay-neutral-700: #465C76;
--btcpay-neutral-900: #202C39;
--btcpay-color-white: #fff;
--btcpay-color-gray-100: #f8f9fa;
--btcpay-color-gray-200: #e9ecef;
--btcpay-color-gray-300: #dee2e6;
--btcpay-color-gray-400: #ced4da;
--btcpay-color-gray-500: #adb5bd;
--btcpay-color-gray-600: #6c757d;
--btcpay-color-gray-700: #495057;
--btcpay-color-gray-800: #343a40;
--btcpay-color-gray-900: #212529;
--btcpay-color-black: #000;
--btcpay-color-blue: #0069d9;
--btcpay-color-indigo: #6610f2;
--btcpay-color-purple: #6f42c1;
--btcpay-color-pink: #e83e8c;
--btcpay-color-red: #dc3545;
--btcpay-color-orange: #ff6f27;
--btcpay-color-yellow: #ffc107;
--btcpay-color-green: #329f80;
--btcpay-color-teal: #20c997;
--btcpay-color-cyan: #17a2b8;
--btcpay-color-primary: var(--btcpay-color-green);
--btcpay-color-primary-dark: #267861;
--btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25);
--btcpay-color-secondary: var(--btcpay-color-gray-600);
--btcpay-color-secondary-dark: var(--btcpay-color-gray-800);
--btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25);
--btcpay-color-success: var(--btcpay-color-green);
--btcpay-color-success-dark: #1e7e34;
--btcpay-color-success-alpha: rgba(72, 180, 97, 0.25);
--btcpay-color-info: var(--btcpay-color-cyan);
--btcpay-color-info-dark: #117a8b;
--btcpay-color-info-alpha: rgba(58, 176, 195, 0.25);
--btcpay-color-warning: var(--btcpay-color-yellow);
--btcpay-color-warning-dark: #d39e00;
--btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25);
--btcpay-color-danger: var(--btcpay-color-red);
--btcpay-color-danger-dark: #bd2130;
--btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25);
--btcpay-color-light: var(--btcpay-color-gray-100);
--btcpay-color-light-dark: #dae0e5;
--btcpay-color-light-alpha: rgba(216, 217, 219, 0.25);
--btcpay-color-dark: var(--btcpay-neutral-900);
--btcpay-color-dark-dark: #1d2124;
--btcpay-color-dark-alpha: rgba(82, 88, 93, 0.25);
--btcpay-bg-body: var(--btcpay-color-gray-100);
--btcpay-bg-dark: var(--btcpay-accent-darkest);
--btcpay-color-body: var(--btcpay-color-gray-900);
--btcpay-color-link: var(--btcpay-color-primary);
--btcpay-color-link-hover: var(--btcpay-color-primary-dark);
--btcpay-font-size-base: 14px;
--btcpay-font-family-head: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
--btcpay-font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--btcpay-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
/* Bootstrap modifications */
html {
font-size: var(--btcpay-font-size-base); }
.bg-dark {
background-color: var(--btcpay-bg-dark) !important; }

File diff suppressed because it is too large Load diff

View file

@ -4,214 +4,114 @@
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-creative/blob/master/LICENSE)
*/
:root {
--off-white: #f9fafb;
}
body,
html {
width: 100%;
/* background: #f9fafb; */
background: var(--off-white);
}
body {
font-family: 'Helvetica Neue', Arial, sans-serif;
background: var(--off-white);
}
hr {
max-width: 50px;
border-width: 3px;
border-color: #329F80;
}
hr.light {
border-color: white;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
}
p {
/*font-size: 16px;*/
line-height: 1.5;
margin-bottom: 20px;
font-family: var(--btcpay-font-family-head);
}
section {
padding: 100px 0;
}
.section-heading {
margin-top: 0;
p {
margin-bottom: 1.5rem;
}
::-moz-selection {
color: white;
background: #222222;
text-shadow: none;
hr {
max-width: 50px;
border-width: 3px;
border-color: var(--btcpay-color-primary);
}
::selection {
color: white;
background: #222222;
text-shadow: none;
}
img::selection {
color: white;
background: transparent;
}
img::-moz-selection {
color: white;
background: transparent;
}
body {
-webkit-tap-highlight-color: #222222;
hr.light {
border-color: var(--btcpay-color-white);
}
#mainNav {
border-color: rgba(34, 34, 34, 0.05);
background-color: #0F3723;
font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
-webkit-transition: all 0.2s;
-moz-transition: all 0.2s;
background-color: var(--btcpay-bg-dark);
font-family: var(--btcpay-font-family-head);
transition: all 0.2s;
}
#mainNav .navbar-brand {
font-weight: 700;
text-transform: uppercase;
color: #0F3B21;
font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
}
#mainNav .navbar-brand:focus, #mainNav .navbar-brand:hover {
color: #0F3B21;
}
#mainNav .navbar-toggle {
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
color: #222222;
}
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus,
#mainNav .navbar-nav > li.nav-item > a.nav-link {
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus,
#mainNav .navbar-nav > li.nav-item > a.nav-link {
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
color: white;
}
color: var(--btcpay-color-white);
}
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus:hover,
#mainNav .navbar-nav > li.nav-item > a.nav-link:hover {
color: white;
}
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus:hover,
#mainNav .navbar-nav > li.nav-item > a.nav-link:hover {
color: var(--btcpay-color-white);
}
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus.active,
#mainNav .navbar-nav > li.nav-item > a.nav-link.active {
color: white !important;
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus.active,
#mainNav .navbar-nav > li.nav-item > a.nav-link.active {
color: var(--btcpay-color-white) !important;
background-color: transparent;
}
}
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus.active:hover,
#mainNav .navbar-nav > li.nav-item > a.nav-link.active:hover {
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus.active:hover,
#mainNav .navbar-nav > li.nav-item > a.nav-link.active:hover {
background-color: transparent;
}
}
@media (min-width: 992px) {
#mainNav {
border-color: rgba(255, 255, 255, 0.3);
background-color: transparent;
}
#mainNav .navbar-brand {
color: rgba(255, 255, 255, 0.7);
}
#mainNav .navbar-brand:focus, #mainNav .navbar-brand:hover {
color: white;
}
#mainNav .navbar-nav > li.nav-item > a.nav-link,
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus {
color: white;
}
#mainNav .navbar-nav > li.nav-item > a.nav-link:hover,
#mainNav .navbar-nav > li.nav-item > a.nav-link:focus:hover {
color: white;
}
#mainNav.navbar-shrink {
border-color: rgba(34, 34, 34, 0.05);
background-color: #0F3723;
}
#mainNav.navbar-shrink .navbar-brand {
font-size: 16px;
color: #0F3B21;
}
#mainNav.navbar-shrink .navbar-brand:focus, #mainNav.navbar-shrink .navbar-brand:hover {
color: #0F3B21;
}
#mainNav.navbar-shrink .navbar-nav > li.nav-item > a.nav-link,
#mainNav.navbar-shrink .navbar-nav > li.nav-item > a.nav-link:focus {
color: white;
background-color: var(--btcpay-bg-dark);
}
}
header.masthead {
position: relative;
width: 100%;
display: block;
min-height: auto;
text-align: center;
}
header.masthead::before {
content: "";
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
background-image: url("../../img/bg.png");
background-position: center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
header.masthead .header-content {
header.masthead .header-content {
position: relative;
width: 100%;
padding: 150px 15px 100px;
text-align: center;
}
}
header.masthead .header-content .header-content-inner h1 {
header.masthead .header-content .header-content-inner h1 {
font-size: 30px;
font-weight: 700;
margin-top: 0;
margin-bottom: 0;
text-transform: uppercase;
}
}
header.masthead .header-content .header-content-inner hr {
header.masthead .header-content .header-content-inner hr {
margin: 30px auto;
}
}
header.masthead .header-content .header-content-inner p {
header.masthead .header-content .header-content-inner p {
font-size: 16px;
font-weight: 300;
margin-bottom: 50px;
}
}
@media (min-width: 768px) {
header.masthead {
@ -223,8 +123,6 @@ header.masthead {
position: absolute;
top: 50%;
padding: 0 50px;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
@ -261,76 +159,13 @@ header.masthead {
margin-bottom: 0;
}
.portfolio-box {
position: relative;
display: block;
max-width: 650px;
margin: 0 auto;
}
.portfolio-box .portfolio-box-caption {
position: absolute;
bottom: 0;
display: block;
width: 100%;
height: 100%;
text-align: center;
opacity: 0;
background: rgba(240, 95, 64, 0.9);
-webkit-transition: all 0.2s;
-moz-transition: all 0.2s;
transition: all 0.2s;
}
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content {
position: absolute;
top: 50%;
width: 100%;
transform: translateY(-50%);
text-align: center;
}
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-category,
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-name {
padding: 0 15px;
font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
}
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-category {
font-size: 14px;
font-weight: 600;
text-transform: uppercase;
}
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-name {
font-size: 18px;
}
.portfolio-box:hover .portfolio-box-caption {
opacity: 1;
}
.portfolio-box:focus {
outline: none;
}
@media (min-width: 768px) {
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-category {
font-size: 16px;
}
.portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-name {
font-size: 22px;
}
}
.call-to-action {
padding: 50px 0;
}
.call-to-action h2 {
.call-to-action h2 {
margin: 0 auto 20px;
}
}
.no-gutter > [class*='col-'] {
padding-right: 0;

View file

@ -1,4 +0,0 @@
$primary: #329f80;
$secondary: #2284A6;
$dark: #0f3b21;
$font-size-base: 0.9rem;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long