- Removed all existing SCSS usage of primary color.
- Cut down custom styles injection to just be css vars.
- Reduced button styles so default button is primary.
- Updated button styles to lighten/brighten on hover & active states even
when a custom color is set.
- Removed unused scss color vars.
- Updated default BookStack blue to achieve better accessibility.
'app-logo' => '',
'app-name-header' => true,
'app-editor' => 'wysiwyg',
- 'app-color' => '#0288D1',
- 'app-color-light' => 'rgba(21, 101, 192, 0.15)',
+ 'app-color' => '#1d75b6',
+ 'app-color-light' => 'rgba(29,117,182,0.15)',
'app-custom-head' => false,
'registration-enabled' => false,
this.colorInput.addEventListener('change', this.updateColor.bind(this));
this.colorInput.addEventListener('input', this.updateColor.bind(this));
this.resetButton.addEventListener('click', event => {
- this.colorInput.value = '#0288D1';
+ this.colorInput.value = '#1d75b6';
this.updateColor();
});
}
font-size: 100%;
}
-@mixin generate-button-colors($textColor, $backgroundColor) {
- background-color: $backgroundColor;
- color: $textColor;
- fill: $textColor;
- border: 1px solid $backgroundColor;
- &:hover {
- background-color: lighten($backgroundColor, 8%);
- color: $textColor;
- }
- &:active {
- background-color: darken($backgroundColor, 8%);
- }
- &:focus {
- background-color: lighten($backgroundColor, 4%);
- box-shadow: $bs-light;
- color: $textColor;
- }
-}
-
-// Button Specific Variables
-$button-border-radius: 2px;
-
.button {
text-decoration: none;
font-size: 0.85rem;
display: inline-block;
font-weight: 400;
outline: 0;
- border-radius: $button-border-radius;
+ border-radius: 2px;
cursor: pointer;
- transition: background-color ease-in-out 120ms, box-shadow ease-in-out 120ms;
+ transition: background-color ease-in-out 120ms,
+ filter ease-in-out 120ms,
+ box-shadow ease-in-out 120ms;
box-shadow: none;
- background-color: $primary;
+ background-color: var(--color-primary);
color: #FFF;
fill: #FFF;
text-transform: uppercase;
- border: 1px solid $primary;
+ border: 1px solid var(--color-primary);
vertical-align: top;
- &:hover, &:focus {
+ &:hover, &:focus, &:active {
+ background-color: var(--color-primary);
text-decoration: none;
+ color: #FFFFFF;
+ }
+ &:hover {
+ box-shadow: $bs-light;
+ filter: brightness(110%);
}
&:focus {
outline: 1px dotted currentColor;
outline-offset: -$-xs;
+ box-shadow: none;
+ filter: brightness(90%);
}
&:active {
outline: 0;
- background-color: darken($primary, 8%);
}
}
-.button.primary {
- @include generate-button-colors(#FFFFFF, $primary);
-}
+
.button.outline {
background-color: transparent;
- color: #888;
- fill: #888;
- border: 1px solid #DDD;
+ color: #666;
+ fill: currentColor;
+ border: 1px solid #CCC;
&:hover, &:focus, &:active {
+ border: 1px solid #CCC;
box-shadow: none;
- background-color: #EEE;
+ background-color: #F2F2F2;
+ filter: none;
+ }
+ &:active {
+ border-color: #BBB;
+ background-color: #DDD;
+ color: #666;
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
}
}
user-select: none;
font-size: 0.75rem;
line-height: 1.4em;
- &:active {
+ color: var(--color-primary);
+ fill: var(--color-primary);
+ &:active {
outline: 0;
}
&:hover {
text-decoration: none;
}
+ &:hover, &:focus {
+ color: var(--color-primary);
+ fill: var(--color-primary);
+ }
}
.button.block {
.button[disabled] {
background-color: #BBB;
cursor: default;
+ border-color: #CCC;
&:hover {
background-color: #BBB;
cursor: default;
+/**
+ * Background colors
+ */
+
+.primary-background {
+ background-color: var(--color-primary) !important;
+}
+.primary-background-light {
+ background-color: var(--color-primary-light);
+}
/*
* Status text colors
* Style text colors
*/
.text-primary, .text-primary:hover, .text-primary-hover:hover {
- color: $primary !important;
- fill: $primary !important;
+ color: var(--color-primary) !important;
+ fill: var(--color-primary) !important;
}
.text-muted {
padding: 8px $-m;
}
}
-.popup-footer {
- margin-top: 1px;
-}
body.flexbox-support #entity-selector-wrap .popup-body .form-group {
height: 444px;
min-height: 444px;
}
}
+.nav-tabs {
+ text-align: center;
+ a, .tab-item {
+ padding: $-m;
+ display: inline-block;
+ color: #666;
+ fill: #666;
+ cursor: pointer;
+ &.selected {
+ border-bottom: 2px solid var(--color-primary);
+ }
+ }
+}
+
.image-picker .none {
display: none;
}
max-width: 100%;
}
[drawio-diagram]:hover {
- outline: 2px solid $primary;
+ outline: 2px solid var(--color-primary);
}
}
button {
background-color: transparent;
border: none;
- color: $primary;
+ fill: #666;
padding: 0;
cursor: pointer;
position: absolute;
left: 8px;
- top: 9.5px;
+ top: 9px;
}
input {
display: block;
- padding-left: $-l;
+ padding-left: $-l + 4px;
width: 300px;
max-width: 100%;
}
display: block;
z-index: 11;
top: 0;
- background-color: $primary-dark;
color: #fff;
fill: #fff;
border-bottom: 1px solid #DDD;
.action-buttons .dropdown-container:last-child a {
padding-left: $-xs;
}
-}
-
-.nav-tabs {
- text-align: center;
- a, .tab-item {
- padding: $-m;
- display: inline-block;
- color: #666;
- fill: #666;
- cursor: pointer;
- &.selected {
- border-bottom: 2px solid $primary;
- }
- }
}
\ No newline at end of file
* Link styling
*/
a {
- color: $primary;
+ color: var(--color-primary);
+ fill: var(--color-primary);
cursor: pointer;
text-decoration: none;
- transition: color ease-in-out 80ms;
+ transition: filter ease-in-out 80ms;
line-height: 1.6;
&:hover {
text-decoration: underline;
- color: darken($primary, 20%);
}
&.icon {
display: inline-block;
blockquote {
display: block;
position: relative;
- border-left: 4px solid $primary;
+ border-left: 4px solid var(--color-primary);
background-color: #F8F8F8;
padding: $-s $-m $-s $-xl;
&:before {
}
span.highlight {
- //background-color: rgba($primary, 0.2);
font-weight: bold;
padding: 2px 4px;
}
$fs-s: 12px;
// Colours
-$primary: #0288D1;
-$primary-dark: #0288D1;
-$secondary: #cf4d03;
+:root {
+ --color-primary: '#1d75b6';
+ --color-primary-light: 'rgba(29,117,182,0.15)';
+}
$positive: #0f7d15;
$negative: #ab0f0e;
-$info: $primary;
-$warning: $secondary;
-$primary-faded: rgba(21, 101, 192, 0.15);
+$info: #0288D1;
+$warning: #cf4d03;
// Item Colors
$color-bookshelf: #af5a5a;
$color-book: #009688;
$color-chapter: #d7804a;
-$color-page: $primary;
+$color-page: #0288D1;
$color-page-draft: #9A60DA;
// Text colours
// Back to top link
$btt-size: 40px;
[back-to-top] {
- background-color: $primary;
+ background-color: var(--color-primary);
position: fixed;
bottom: $-m;
right: $-l;
margin-bottom: 0;
}
.entity-list-item.selected {
- background-color: rgba(0, 0, 0, 0.15) !important;
+ background-color: rgba(0, 0, 0, 0.05) !important;
}
.loading {
height: 400px;
</div>
<div class="text-right">
- <button class="button primary">{{ trans('auth.user_invite_page_confirm_button') }}</button>
+ <button class="button">{{ trans('auth.user_invite_page_confirm_button') }}</button>
</div>
</form>
</div>
<div class="text-right">
- <button class="button primary" tabindex="1">{{ title_case(trans('auth.log_in')) }}</button>
+ <button class="button" tabindex="1">{{ title_case(trans('auth.log_in')) }}</button>
</div>
</div>
</div>
<div class="from-group text-right mt-m">
- <button class="button primary">{{ trans('auth.reset_password_send_button') }}</button>
+ <button class="button">{{ trans('auth.reset_password_send_button') }}</button>
</div>
</form>
</div>
<div class="from-group text-right mt-m">
- <button class="button primary">{{ trans('auth.reset_password') }}</button>
+ <button class="button">{{ trans('auth.reset_password') }}</button>
</div>
</form>
<a href="{{ url('/login') }}">{{ trans('auth.already_have_account') }}</a>
</div>
<div class="from-group text-right">
- <button class="button primary">{{ trans('auth.create_account') }}</button>
+ <button class="button">{{ trans('auth.create_account') }}</button>
</div>
</div>
@endif
</div>
<div class="form-group text-right mt-m">
- <button type="submit" class="button primary">{{ trans('auth.email_not_confirmed_resend_button') }}</button>
+ <button type="submit" class="button">{{ trans('auth.email_not_confirmed_resend_button') }}</button>
</div>
</form>
{!! csrf_field() !!}
<input type="hidden" name="_method" value="DELETE">
<a href="{{$book->getUrl()}}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('common.confirm') }}</button>
+ <button type="submit" class="button">{{ trans('common.confirm') }}</button>
</form>
</div>
<div class="form-group text-right">
<a href="{{ isset($book) ? $book->getUrl() : url('/books') }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.books_save') }}</button>
+ <button type="submit" class="button">{{ trans('entities.books_save') }}</button>
</div>
\ No newline at end of file
<input book-sort-input type="hidden" name="sort-tree">
<div class="list text-right">
<a href="{{ $book->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button class="button primary" type="submit">{{ trans('entities.books_sort_save') }}</button>
+ <button class="button" type="submit">{{ trans('entities.books_sort_save') }}</button>
</div>
</form>
</div>
<div class="text-right">
<a href="{{ $chapter->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('common.confirm') }}</button>
+ <button type="submit" class="button">{{ trans('common.confirm') }}</button>
</div>
</form>
</div>
<div class="form-group text-right">
<a href="{{ isset($chapter) ? $chapter->getUrl() : $book->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.chapters_save') }}</button>
+ <button type="submit" class="button">{{ trans('entities.chapters_save') }}</button>
</div>
<div class="form-group text-right">
<a href="{{ $chapter->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.chapters_move') }}</button>
+ <button type="submit" class="button">{{ trans('entities.chapters_move') }}</button>
</div>
</form>
</div>
<div class="form-group text-right">
<button type="button" class="button outline" action="closeUpdateForm">{{ trans('common.cancel') }}</button>
- <button type="submit" class="button primary">{{ trans('entities.comment_save') }}</button>
+ <button type="submit" class="button">{{ trans('entities.comment_save') }}</button>
</div>
<div class="form-group loading" style="display: none;">
@include('partials.loading-icon', ['text' => trans('entities.comment_saving')])
<div class="form-group text-right">
<button type="button" class="button outline"
action="hideForm">{{ trans('common.cancel') }}</button>
- <button type="submit" class="button primary">{{ trans('entities.comment_save') }}</button>
+ <button type="submit" class="button">{{ trans('entities.comment_save') }}</button>
</div>
<div class="form-group loading" style="display: none;">
@include('partials.loading-icon', ['text' => trans('entities.comment_saving')])
</div>
<div class="form-group">
- <button type="button" class="button primary" @click="save()">{{ trans('components.code_save') }}</button>
+ <button type="button" class="button" @click="save()">{{ trans('components.code_save') }}</button>
</div>
</div>
</div>
@include('components.entity-selector', ['name' => 'entity-selector'])
<div class="popup-footer">
- <button type="button" disabled="true" class="button entity-link-selector-confirm primary corner-button">{{ trans('common.select') }}</button>
+ <button type="button" disabled="true" class="button entity-link-selector-confirm corner-button">{{ trans('common.select') }}</button>
</div>
</div>
</div>
<button type="button" class="button icon outline" @click="deleteImage">@icon('delete')</button>
</div>
- <button class="button primary anim fadeIn float right" v-show="selectedImage" @click="callbackAndHide(selectedImage)">
+ <button class="button anim fadeIn float right" v-show="selectedImage" @click="callbackAndHide(selectedImage)">
{{ trans('components.image_select_image') }}
</button>
<div class="clearfix"></div>
<div class="text-right">
<a href="{{ $model->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.permissions_save') }}</button>
+ <button type="submit" class="button">{{ trans('entities.permissions_save') }}</button>
</div>
</form>
\ No newline at end of file
<input type="text" placeholder="{{ trans('entities.attachments_link_url_hint') }}" v-model="file.link">
<p class="small text-neg" v-for="error in errors.link.link" v-text="error"></p>
</div>
- <button @click.prevent="attachNewLink(file)" class="button primary">{{ trans('entities.attach') }}</button>
+ <button @click.prevent="attachNewLink(file)" class="button">{{ trans('entities.attach') }}</button>
</div>
</div>
</div>
<button type="button" class="button outline" @click="cancelEdit">{{ trans('common.back') }}</button>
- <button @click.enter.prevent="updateFile(fileToEdit)" class="button primary">{{ trans('common.save') }}</button>
+ <button @click.enter.prevent="updateFile(fileToEdit)" class="button">{{ trans('common.save') }}</button>
</div>
</div>
<div class="form-group text-right">
<a href="{{ $page->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.pages_copy') }}</button>
+ <button type="submit" class="button">{{ trans('entities.pages_copy') }}</button>
</div>
</form>
<input type="hidden" name="_method" value="DELETE">
<div class="form-group text-right">
<a href="{{ $page->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('common.confirm') }}</button>
+ <button type="submit" class="button">{{ trans('common.confirm') }}</button>
</div>
</form>
</div>
<div class="form-group text-right">
<a href="{{ $parent->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('common.continue') }}</button>
+ <button type="submit" class="button">{{ trans('common.continue') }}</button>
</div>
</form>
<div class="form-group text-right">
<a href="{{ $page->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.pages_move') }}</button>
+ <button type="submit" class="button">{{ trans('entities.pages_move') }}</button>
</div>
</form>
<style id="custom-styles" data-color="{{ setting('app-color') }}" data-color-light="{{ setting('app-color-light') }}">
- .primary-background {
- background-color: {{ setting('app-color') }} !important;
- }
- .primary-background-light {
- background-color: {{ setting('app-color-light') }};
- }
- .button.primary, .button.primary:hover, .button.primary:active, .button.primary:focus {
- background-color: {{ setting('app-color') }};
- border-color: {{ setting('app-color') }};
- }
- .nav-tabs a.selected, .nav-tabs .tab-item.selected {
- border-bottom-color: {{ setting('app-color') }};
- }
- .text-primary, .text-primary-hover:hover, .text-primary:hover {
- color: {{ setting('app-color') }} !important;
- fill: {{ setting('app-color') }} !important;
- }
-
- a, a:hover, a:focus, .text-button, .text-button:hover, .text-button:focus {
- color: {{ setting('app-color') }};
- fill: {{ setting('app-color') }};
+ :root {
+ --color-primary: {{ setting('app-color') }};
+ --color-primary-light: {{ setting('app-color-light') }};
}
</style>
</table>
- <button type="submit" class="button primary">{{ trans('entities.search_update') }}</button>
+ <button type="submit" class="button">{{ trans('entities.search_update') }}</button>
</form>
</div>
</div>
<div class="form-group text-right">
- <button type="submit" class="button primary">{{ trans('settings.settings_save') }}</button>
+ <button type="submit" class="button">{{ trans('settings.settings_save') }}</button>
</div>
</form>
</div>
<p class="small">{!! trans('settings.app_primary_color_desc') !!}</p>
</div>
<div setting-app-color-picker class="text-m-right">
- <input type="color" value="{{ setting('app-color') }}" name="setting-app-color" id="setting-app-color" placeholder="#0288D1">
+ <input type="color" value="{{ setting('app-color') }}" name="setting-app-color" id="setting-app-color" placeholder="#1d75b6">
<input type="hidden" value="{{ setting('app-color-light') }}" name="setting-app-color-light" id="setting-app-color-light">
<br>
<button type="button" class="text-button text-muted mt-s mx-s" setting-app-color-picker-reset>{{ trans('common.reset') }}</button>
</div>
<div class="form-group text-right">
- <button type="submit" class="button primary">{{ trans('settings.settings_save') }}</button>
+ <button type="submit" class="button">{{ trans('settings.settings_save') }}</button>
</div>
</form>
</div>
</div>
<div class="form-group text-right">
- <button type="submit" class="button primary">{{ trans('settings.settings_save') }}</button>
+ <button type="submit" class="button">{{ trans('settings.settings_save') }}</button>
</div>
</form>
</div>
<div>
<div class="form-group text-right">
<a href="{{ url("/settings/roles/{$role->id}") }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('common.confirm') }}</button>
+ <button type="submit" class="button">{{ trans('common.confirm') }}</button>
</div>
</div>
</div>
@if (isset($role) && $role->id)
<a href="{{ url("/settings/roles/delete/{$role->id}") }}" class="button outline">{{ trans('settings.role_delete') }}</a>
@endif
- <button type="submit" class="button primary">{{ trans('settings.role_save') }}</button>
+ <button type="submit" class="button">{{ trans('settings.role_save') }}</button>
</div>
</div>
<div class="form-group text-right">
<a href="{{ isset($shelf) ? $shelf->getUrl() : url('/shelves') }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('entities.shelves_save') }}</button>
+ <button type="submit" class="button">{{ trans('entities.shelves_save') }}</button>
</div>
\ No newline at end of file
<div class="form-group text-right">
<a href="{{ url($currentUser->can('users-manage') ? "/settings/users" : "/") }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button class="button primary" type="submit">{{ trans('common.save') }}</button>
+ <button class="button" type="submit">{{ trans('common.save') }}</button>
</div>
</form>
<input type="hidden" name="_method" value="DELETE">
<a href="{{ url("/settings/users/{$user->id}") }}" class="button outline">{{ trans('common.cancel') }}</a>
- <button type="submit" class="button primary">{{ trans('common.confirm') }}</button>
+ <button type="submit" class="button">{{ trans('common.confirm') }}</button>
</form>
</div>
</div>
@if($authMethod !== 'system')
<a href="{{ url("/settings/users/{$user->id}/delete") }}" class="button outline">{{ trans('settings.users_delete') }}</a>
@endif
- <button class="button primary" type="submit">{{ trans('common.save') }}</button>
+ <button class="button" type="submit">{{ trans('common.save') }}</button>
</div>
</form>
</div>