diff --git a/angular.json b/angular.json index 67369a96..ca960e1d 100755 --- a/angular.json +++ b/angular.json @@ -59,6 +59,11 @@ "input": "src/themes/dspace/styles/theme.scss", "inject": false, "bundleName": "dspace-theme" + }, + { + "input": "src/themes/dspace-exercise/styles/theme.scss", + "inject": false, + "bundleName": "dspace-theme" } ], "scripts": [], diff --git a/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.html b/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.html new file mode 100755 index 00000000..8c10efcb --- /dev/null +++ b/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.scss b/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.scss new file mode 100755 index 00000000..1daf4ebd --- /dev/null +++ b/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.scss @@ -0,0 +1,7 @@ +:host { + // The header-navbar-wrapper should not have a z-index, otherwise it would cover the media viewer despite its higher z-index + position: relative; + div#header-navbar-wrapper { + border-bottom: 5px var(--ds-header-navbar-border-bottom-color) solid; + } +} diff --git a/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.ts b/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.ts new file mode 100755 index 00000000..36e23e17 --- /dev/null +++ b/src/themes/dspace-exercise/app/header-nav-wrapper/header-navbar-wrapper.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { HeaderNavbarWrapperComponent as BaseComponent } from '../../../../app/header-nav-wrapper/header-navbar-wrapper.component'; + +/** + * This component represents a wrapper for the horizontal navbar and the header + */ +@Component({ + selector: 'ds-header-navbar-wrapper', + styleUrls: ['header-navbar-wrapper.component.scss'], + templateUrl: 'header-navbar-wrapper.component.html', +}) +export class HeaderNavbarWrapperComponent extends BaseComponent { +} diff --git a/src/themes/dspace-exercise/app/header/header.component.html b/src/themes/dspace-exercise/app/header/header.component.html new file mode 100755 index 00000000..205abfd4 --- /dev/null +++ b/src/themes/dspace-exercise/app/header/header.component.html @@ -0,0 +1,25 @@ +
+ + + +
diff --git a/src/themes/dspace-exercise/app/header/header.component.scss b/src/themes/dspace-exercise/app/header/header.component.scss new file mode 100755 index 00000000..2fc85782 --- /dev/null +++ b/src/themes/dspace-exercise/app/header/header.component.scss @@ -0,0 +1,26 @@ +@media screen and (min-width: map-get($grid-breakpoints, md)) { + nav.navbar { + display: none; + } + .header { + background-color: var(--ds-header-bg); + } +} + +.navbar-brand img { + @media screen and (max-width: map-get($grid-breakpoints, md)) { + height: var(--ds-header-logo-height-xs); + } +} +.navbar-toggler .navbar-toggler-icon { + background-image: none !important; + line-height: 1.5; +} + +.navbar-toggler { + color: var(--ds-header-icon-color); + + &:hover, &:focus { + color: var(--ds-header-icon-color-hover); + } +} diff --git a/src/themes/dspace-exercise/app/header/header.component.ts b/src/themes/dspace-exercise/app/header/header.component.ts new file mode 100755 index 00000000..6da89b47 --- /dev/null +++ b/src/themes/dspace-exercise/app/header/header.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { HeaderComponent as BaseComponent } from '../../../../app/header/header.component'; + +/** + * Represents the header with the logo and simple navigation + */ +@Component({ + selector: 'ds-header', + styleUrls: ['header.component.scss'], + templateUrl: 'header.component.html', +}) +export class HeaderComponent extends BaseComponent { +} diff --git a/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.html b/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.html new file mode 100755 index 00000000..29711c1b --- /dev/null +++ b/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.html @@ -0,0 +1,39 @@ +
+
+
+
+
+

DSpace 7

+

DSpace is the world leading open source repository platform that enables + organisations to:

+
+
+
    +
  • easily ingest documents, audio, video, datasets and their corresponding Dublin Core + metadata +
  • +
  • open up this content to local and global audiences, thanks to the OAI-PMH interface and + Google Scholar optimizations +
  • +
  • issue permanent urls and trustworthy identifiers, including optional integrations with + handle.net and DataCite DOI +
  • +
+

Join an international community of leading institutions using DSpace.

+

The test user accounts below have their password set to the name of this + software in lowercase.

+
    +
  • Demo Site Administrator = dspacedemo+admin@gmail.com
  • +
  • Demo Community Administrator = dspacedemo+commadmin@gmail.com
  • +
  • Demo Collection Administrator = dspacedemo+colladmin@gmail.com
  • +
  • Demo Submitter = dspacedemo+submit@gmail.com
  • +
+
+
+ + + + + + Photo by @inspiredimages +
diff --git a/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.scss b/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.scss new file mode 100755 index 00000000..3c3aa8b4 --- /dev/null +++ b/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.scss @@ -0,0 +1,73 @@ +:host { + display: block; + + div.background-image-container { + color: white; + position: relative; + + .background-image > img { + background-color: var(--bs-info); + position: absolute; + z-index: -1; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + object-position: top; + } + + .container { + position: relative; + text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6); + + &:before, &:after { + content: ''; + display: block; + width: var(--ds-banner-background-gradient-width); + height: 100%; + top: 0; + position: absolute; + } + + &:before { + background: linear-gradient(to left, var(--ds-banner-text-background), transparent); + left: calc(-1 * var(--ds-banner-background-gradient-width)); + + } + + &:after { + background: linear-gradient(to right, var(--ds-banner-text-background), transparent); + right: calc(-1 * var(--ds-banner-background-gradient-width)); + } + + background-color: var(--ds-banner-text-background); + } + + + small.credits { + a { + color: inherit; + } + + opacity: 0.3; + position: absolute; + right: var(--bs-spacer); + bottom: 0; + } + } + + .jumbotron { + background-color: transparent; + } + + a { + color: var(--ds-home-news-link-color); + + @include hover { + color: var(--ds-home-news-link-hover-color); + } + } +} + + diff --git a/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.ts b/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.ts new file mode 100755 index 00000000..d4032011 --- /dev/null +++ b/src/themes/dspace-exercise/app/home-page/home-news/home-news.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component'; + +@Component({ + selector: 'ds-home-news', + styleUrls: ['./home-news.component.scss'], + templateUrl: './home-news.component.html' +}) + +/** + * Component to render the news section on the home page + */ +export class HomeNewsComponent extends BaseComponent {} + diff --git a/src/themes/dspace-exercise/app/navbar/navbar.component.html b/src/themes/dspace-exercise/app/navbar/navbar.component.html new file mode 100755 index 00000000..f2e231d4 --- /dev/null +++ b/src/themes/dspace-exercise/app/navbar/navbar.component.html @@ -0,0 +1,26 @@ + diff --git a/src/themes/dspace-exercise/app/navbar/navbar.component.scss b/src/themes/dspace-exercise/app/navbar/navbar.component.scss new file mode 100755 index 00000000..28ead2f1 --- /dev/null +++ b/src/themes/dspace-exercise/app/navbar/navbar.component.scss @@ -0,0 +1,65 @@ +nav.navbar { + align-items: baseline; + + .navbar-inner-container { + border-top: 1px var(--ds-header-navbar-border-top-color) solid; + } +} + +.navbar-nav { + background-color: var(--ds-navbar-bg); +} + +/** Mobile menu styling **/ +@media screen and (max-width: map-get($grid-breakpoints, md)-0.02) { + .navbar { + width: 100vw; + background-color: var(--bs-white); + position: absolute; + overflow: hidden; + height: 0; + z-index: var(--ds-nav-z-index); + &.open { + height: 100vh; //doesn't matter because wrapper is sticky + border-bottom: 5px var(--ds-header-navbar-border-bottom-color) solid; // open navbar covers header-navbar-wrapper border + } + } +} + +@media screen and (min-width: map-get($grid-breakpoints, md)) { + .reset-padding-md { + margin-left: calc(var(--bs-spacer) / -2); + margin-right: calc(var(--bs-spacer) / -2); + } +} + +/* TODO remove when https://github.com/twbs/bootstrap/issues/24726 is fixed */ +.navbar-expand-md.navbar-container { + @media screen and (max-width: map-get($grid-breakpoints, md)-0.02) { + > .navbar-inner-container { + padding: 0 var(--bs-spacer); + a.navbar-brand { + display: none; + } + .navbar-collapsed { + display: none; + } + } + padding: 0; + } + height: 80px; +} + +a.navbar-brand img { + max-height: var(--ds-header-logo-height); +} + +.navbar-nav { + ::ng-deep a.nav-link { + color: var(--ds-navbar-link-color); + + &:hover, &:focus { + color: var(--ds-navbar-link-color-hover); + } + } +} diff --git a/src/themes/dspace-exercise/app/navbar/navbar.component.ts b/src/themes/dspace-exercise/app/navbar/navbar.component.ts new file mode 100755 index 00000000..321351a9 --- /dev/null +++ b/src/themes/dspace-exercise/app/navbar/navbar.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { NavbarComponent as BaseComponent } from '../../../../app/navbar/navbar.component'; +import { slideMobileNav } from '../../../../app/shared/animations/slide'; + +/** + * Component representing the public navbar + */ +@Component({ + selector: 'ds-navbar', + styleUrls: ['./navbar.component.scss'], + templateUrl: './navbar.component.html', + animations: [slideMobileNav] +}) +export class NavbarComponent extends BaseComponent { +} diff --git a/src/themes/dspace-exercise/assets/fonts/.gitkeep b/src/themes/dspace-exercise/assets/fonts/.gitkeep new file mode 100755 index 00000000..e69de29b diff --git a/src/themes/dspace-exercise/assets/images/.gitkeep b/src/themes/dspace-exercise/assets/images/.gitkeep new file mode 100755 index 00000000..e69de29b diff --git a/src/themes/dspace-exercise/assets/images/banner-half.jpg b/src/themes/dspace-exercise/assets/images/banner-half.jpg new file mode 100755 index 00000000..31610cc3 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/banner-half.jpg differ diff --git a/src/themes/dspace-exercise/assets/images/banner-half.webp b/src/themes/dspace-exercise/assets/images/banner-half.webp new file mode 100755 index 00000000..f11cfb78 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/banner-half.webp differ diff --git a/src/themes/dspace-exercise/assets/images/banner-tall.jpg b/src/themes/dspace-exercise/assets/images/banner-tall.jpg new file mode 100755 index 00000000..d3103112 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/banner-tall.jpg differ diff --git a/src/themes/dspace-exercise/assets/images/banner-tall.webp b/src/themes/dspace-exercise/assets/images/banner-tall.webp new file mode 100755 index 00000000..a4ec97f2 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/banner-tall.webp differ diff --git a/src/themes/dspace-exercise/assets/images/banner.jpg b/src/themes/dspace-exercise/assets/images/banner.jpg new file mode 100755 index 00000000..5f18b6cb Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/banner.jpg differ diff --git a/src/themes/dspace-exercise/assets/images/banner.webp b/src/themes/dspace-exercise/assets/images/banner.webp new file mode 100755 index 00000000..7745766f Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/banner.webp differ diff --git a/src/themes/dspace-exercise/assets/images/favicons/android-chrome-192x192.png b/src/themes/dspace-exercise/assets/images/favicons/android-chrome-192x192.png new file mode 100755 index 00000000..1aaffb1b Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/favicons/android-chrome-192x192.png differ diff --git a/src/themes/dspace-exercise/assets/images/favicons/android-chrome-512x512.png b/src/themes/dspace-exercise/assets/images/favicons/android-chrome-512x512.png new file mode 100755 index 00000000..2d35f496 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/favicons/android-chrome-512x512.png differ diff --git a/src/themes/dspace-exercise/assets/images/favicons/apple-touch-icon.png b/src/themes/dspace-exercise/assets/images/favicons/apple-touch-icon.png new file mode 100755 index 00000000..58ff41f3 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/favicons/apple-touch-icon.png differ diff --git a/src/themes/dspace-exercise/assets/images/favicons/favicon.ico b/src/themes/dspace-exercise/assets/images/favicons/favicon.ico new file mode 100755 index 00000000..a5dfd5e3 Binary files /dev/null and b/src/themes/dspace-exercise/assets/images/favicons/favicon.ico differ diff --git a/src/themes/dspace-exercise/assets/images/favicons/favicon.svg b/src/themes/dspace-exercise/assets/images/favicons/favicon.svg new file mode 100755 index 00000000..8ea65cb7 --- /dev/null +++ b/src/themes/dspace-exercise/assets/images/favicons/favicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/themes/dspace-exercise/assets/images/favicons/manifest.webmanifest b/src/themes/dspace-exercise/assets/images/favicons/manifest.webmanifest new file mode 100755 index 00000000..1784ba2b --- /dev/null +++ b/src/themes/dspace-exercise/assets/images/favicons/manifest.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "DSpace", + "short_name": "DSpace", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#091119", + "background_color": "#091119", + "display": "standalone" +} diff --git a/src/themes/dspace-exercise/eager-theme.module.ts b/src/themes/dspace-exercise/eager-theme.module.ts new file mode 100755 index 00000000..63dff9da --- /dev/null +++ b/src/themes/dspace-exercise/eager-theme.module.ts @@ -0,0 +1,51 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SharedModule } from '../../app/shared/shared.module'; +import { HomeNewsComponent } from './app/home-page/home-news/home-news.component'; +import { NavbarComponent } from './app/navbar/navbar.component'; +import { HeaderComponent } from './app/header/header.component'; +import { HeaderNavbarWrapperComponent } from './app/header-nav-wrapper/header-navbar-wrapper.component'; +import { RootModule } from '../../app/root.module'; +import { NavbarModule } from '../../app/navbar/navbar.module'; +import { SharedBrowseByModule } from '../../app/shared/browse-by/shared-browse-by.module'; +import { ResultsBackButtonModule } from '../../app/shared/results-back-button/results-back-button.module'; + +/** + * Add components that use a custom decorator to ENTRY_COMPONENTS as well as DECLARATIONS. + * This will ensure that decorator gets picked up when the app loads + */ +const ENTRY_COMPONENTS = []; + +const DECLARATIONS = [ + ...ENTRY_COMPONENTS, + HomeNewsComponent, + HeaderComponent, + HeaderNavbarWrapperComponent, + NavbarComponent, +]; + +@NgModule({ + imports: [ + CommonModule, + SharedModule, + SharedBrowseByModule, + ResultsBackButtonModule, + RootModule, + NavbarModule, + ], + declarations: DECLARATIONS, + providers: [ + ...ENTRY_COMPONENTS.map((component) => ({provide: component})) + ], +}) +/** + * This module is included in the main bundle that gets downloaded at first page load. So it should + * contain only the themed components that have to be available immediately for the first page load, + * and the minimal set of imports required to make them work. Anything you can cut from it will make + * the initial page load faster, but may cause the page to flicker as components that were already + * rendered server side need to be lazy-loaded again client side + * + * Themed EntryComponents should also be added here + */ +export class EagerThemeModule { +} diff --git a/src/themes/dspace-exercise/lazy-theme.module.ts b/src/themes/dspace-exercise/lazy-theme.module.ts new file mode 100755 index 00000000..cdaae815 --- /dev/null +++ b/src/themes/dspace-exercise/lazy-theme.module.ts @@ -0,0 +1,132 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { AdminRegistriesModule } from '../../app/admin/admin-registries/admin-registries.module'; +import { AdminSearchModule } from '../../app/admin/admin-search-page/admin-search.module'; +import { + AdminWorkflowModuleModule +} from '../../app/admin/admin-workflow-page/admin-workflow.module'; +import { + BitstreamFormatsModule +} from '../../app/admin/admin-registries/bitstream-formats/bitstream-formats.module'; +import { BrowseByModule } from '../../app/browse-by/browse-by.module'; +import { + CollectionFormModule +} from '../../app/collection-page/collection-form/collection-form.module'; +import { CommunityFormModule } from '../../app/community-page/community-form/community-form.module'; +import { CoreModule } from '../../app/core/core.module'; +import { DragDropModule } from '@angular/cdk/drag-drop'; +import { EditItemPageModule } from '../../app/item-page/edit-item-page/edit-item-page.module'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; +import { IdlePreloadModule } from 'angular-idle-preload'; +import { + JournalEntitiesModule +} from '../../app/entity-groups/journal-entities/journal-entities.module'; +import { MyDspaceSearchModule } from '../../app/my-dspace-page/my-dspace-search.module'; +import { MenuModule } from '../../app/shared/menu/menu.module'; +import { NavbarModule } from '../../app/navbar/navbar.module'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { ProfilePageModule } from '../../app/profile-page/profile-page.module'; +import { RegisterEmailFormModule } from '../../app/register-email-form/register-email-form.module'; +import { + ResearchEntitiesModule +} from '../../app/entity-groups/research-entities/research-entities.module'; +import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to'; +import { SearchPageModule } from '../../app/search-page/search-page.module'; +import { SharedModule } from '../../app/shared/shared.module'; +import { StatisticsModule } from '../../app/statistics/statistics.module'; +import { StoreModule } from '@ngrx/store'; +import { StoreRouterConnectingModule } from '@ngrx/router-store'; +import { TranslateModule } from '@ngx-translate/core'; +import { HomePageModule } from '../../app/home-page/home-page.module'; +import { AppModule } from '../../app/app.module'; +import { ItemPageModule } from '../../app/item-page/item-page.module'; +import { RouterModule } from '@angular/router'; +import { CommunityListPageModule } from '../../app/community-list-page/community-list-page.module'; +import { InfoModule } from '../../app/info/info.module'; +import { StatisticsPageModule } from '../../app/statistics-page/statistics-page.module'; +import { CommunityPageModule } from '../../app/community-page/community-page.module'; +import { CollectionPageModule } from '../../app/collection-page/collection-page.module'; +import { SubmissionModule } from '../../app/submission/submission.module'; +import { MyDSpacePageModule } from '../../app/my-dspace-page/my-dspace-page.module'; +import { SearchModule } from '../../app/shared/search/search.module'; +import { + ResourcePoliciesModule +} from '../../app/shared/resource-policies/resource-policies.module'; +import { ComcolModule } from '../../app/shared/comcol/comcol.module'; +import { RootModule } from '../../app/root.module'; +import { BrowseByPageModule } from '../../app/browse-by/browse-by-page.module'; +import { ResultsBackButtonModule } from '../../app/shared/results-back-button/results-back-button.module'; +import { SharedBrowseByModule } from '../../app/shared/browse-by/shared-browse-by.module'; +import { ItemVersionsModule } from '../../app/item-page/versions/item-versions.module'; +import { ItemSharedModule } from 'src/app/item-page/item-shared.module'; + +const DECLARATIONS = [ +]; + +@NgModule({ + imports: [ + AdminRegistriesModule, + AdminSearchModule, + AdminWorkflowModuleModule, + AppModule, + RootModule, + BitstreamFormatsModule, + BrowseByModule, + BrowseByPageModule, + ResultsBackButtonModule, + CollectionFormModule, + CollectionPageModule, + CommonModule, + CommunityFormModule, + CommunityListPageModule, + CommunityPageModule, + CoreModule, + DragDropModule, + ItemSharedModule, + ItemPageModule, + EditItemPageModule, + ItemVersionsModule, + FormsModule, + HomePageModule, + HttpClientModule, + IdlePreloadModule, + InfoModule, + JournalEntitiesModule, + MenuModule, + MyDspaceSearchModule, + NavbarModule, + NgbModule, + ProfilePageModule, + RegisterEmailFormModule, + ResearchEntitiesModule, + RouterModule, + ScrollToModule, + SearchPageModule, + SharedModule, + SharedBrowseByModule, + StatisticsModule, + StatisticsPageModule, + StoreModule, + StoreRouterConnectingModule, + TranslateModule, + SubmissionModule, + MyDSpacePageModule, + MyDspaceSearchModule, + SearchModule, + FormsModule, + ResourcePoliciesModule, + ComcolModule, + ], + declarations: DECLARATIONS, +}) + +/** + * This module serves as an index for all the components in this theme. + * It should import all other modules, so the compiler knows where to find any components referenced + * from a component in this theme + * It is purposefully not exported, it should never be imported anywhere else, its only purpose is + * to give lazily loaded components a context in which they can be compiled successfully + */ +class LazyThemeModule { +} diff --git a/src/themes/dspace-exercise/styles/_global-styles.scss b/src/themes/dspace-exercise/styles/_global-styles.scss new file mode 100755 index 00000000..5bd4c19b --- /dev/null +++ b/src/themes/dspace-exercise/styles/_global-styles.scss @@ -0,0 +1,23 @@ +// Add any global css for the theme here + +// imports the base global style +@import '../../../styles/_global-styles.scss'; + +.facet-filter, .setting-option { + background-color: var(--bs-light); + border-radius: var(--bs-border-radius); + + &.p-3 { + // Needs !important because the original bootstrap class uses it + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .badge-secondary { + background-color: var(--bs-primary); + } + + h4 { + font-size: 1.1rem + } +} diff --git a/src/themes/dspace-exercise/styles/_theme_css_variable_overrides.scss b/src/themes/dspace-exercise/styles/_theme_css_variable_overrides.scss new file mode 100755 index 00000000..516eff9f --- /dev/null +++ b/src/themes/dspace-exercise/styles/_theme_css_variable_overrides.scss @@ -0,0 +1,11 @@ +// Override or add CSS variables for your theme here + +:root { + --ds-header-logo-height: 40px; + --ds-banner-text-background: rgba(0, 0, 0, 0.45); + --ds-banner-background-gradient-width: 300px; + --ds-home-news-link-color: #{$green}; + --ds-home-news-link-hover-color: #{darken($green, 15%)}; + --ds-header-navbar-border-bottom-color: #{$green}; +} + diff --git a/src/themes/dspace-exercise/styles/_theme_sass_variable_overrides.scss b/src/themes/dspace-exercise/styles/_theme_sass_variable_overrides.scss new file mode 100755 index 00000000..b5799c97 --- /dev/null +++ b/src/themes/dspace-exercise/styles/_theme_sass_variable_overrides.scss @@ -0,0 +1,41 @@ +// DSpace works with CSS variables for its own components, and has a mapping of all bootstrap Sass +// variables to CSS equivalents (see src/styles/_bootstrap_variables_mapping.scss). However Bootstrap +// still uses Sass variables internally. So if you want to override bootstrap (or other sass +// variables) you can do so here. Their CSS counterparts will include the changes you make here + +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200;0,300;0,400;0,600;0,700;0,800;1,200;1,300;1,400;1,600;1,700;1,800&display=swap'); + +$font-family-sans-serif: 'Nunito', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + +$navbar-dark-color: #FFFFFF; + +/* Reassign color vars to semantic color scheme */ +$blue: #2b4e72 !default; +$green: #92C642 !default; +$cyan: #207698 !default; +$yellow: #ec9433 !default; +$red: #CF4444 !default; +$dark: #43515f !default; + +$gray-800: #343a40 !default; +$gray-700: #495057 !default; +$gray-400: #ced4da !default; +$gray-100: #f8f9fa !default; + +$body-color: $gray-800 !default; // Bootstrap $gray-800 + +$table-accent-bg: $gray-100 !default; // Bootstrap $gray-100 +$table-hover-bg: $gray-400 !default; // Bootstrap $gray-400 + +$yiq-contrasted-threshold: 170 !default; + +$theme-colors: ( + primary: $dark, + secondary: $gray-700, + success: $green, + info: $cyan, + warning: $yellow, + danger: $red, + light: $gray-100, + dark: $dark +) !default; diff --git a/src/themes/dspace-exercise/styles/theme.scss b/src/themes/dspace-exercise/styles/theme.scss new file mode 100755 index 00000000..05c96f33 --- /dev/null +++ b/src/themes/dspace-exercise/styles/theme.scss @@ -0,0 +1,12 @@ +// This file combines the other scss files in to one. You usually shouldn't edit this file directly + +@import './_theme_sass_variable_overrides.scss'; +@import '../../../styles/_variables.scss'; +@import '../../../styles/_mixins.scss'; +@import '../../../styles/helpers/font_awesome_imports.scss'; +@import '../../../styles/_vendor.scss'; +@import '../../../styles/_custom_variables.scss'; +@import './_theme_css_variable_overrides.scss'; +@import '../../../styles/bootstrap_variables_mapping.scss'; +@import '../../../styles/_truncatable-part.component.scss'; +@import './_global-styles.scss';