diff --git a/angular.json b/angular.json index bf3dd88c524..aecd5dbcb51 100644 --- a/angular.json +++ b/angular.json @@ -61,6 +61,11 @@ "input": "src/themes/dspace/styles/theme.scss", "inject": false, "bundleName": "dspace-theme" + }, + { + "input": "src/themes/ukrepo/styles/theme.scss", + "inject": false, + "bundleName": "ukrepo-theme" } ], "scripts": [ diff --git a/config/config.yml b/config/config.yml index 6016a55b498..90365a89083 100644 --- a/config/config.yml +++ b/config/config.yml @@ -6,6 +6,10 @@ rest: port: 8080 nameSpace: /server +themes: + - name: 'ukrepo' + extends: 'dspace' + # Caching settings cache: # NOTE: how long should objects be cached for by default diff --git a/src/assets/i18n/cs.json5 b/src/assets/i18n/cs.json5 index 5acbe99cc90..2c7169bcc09 100644 --- a/src/assets/i18n/cs.json5 +++ b/src/assets/i18n/cs.json5 @@ -2383,7 +2383,7 @@ // "home.top-level-communities.help": "Select a community to browse its collections.", "home.top-level-communities.help": "Vyberte komunitu a procházejte její kolekce.", // "home-page.carousel.ldata.info": "Linguistic Data and NLP Tools", - "home-page.carousel.ldata.info": "Lingvistická data a nástroje", + "home-page.carousel.ldata.info" : "Data a nástroje" // "home-page.carousel.ldata.find": "Find", "home-page.carousel.ldata.find": "Vyhledávání", // "home-page.carousel.ldata.citation-support": "Citation Support (with Persistent IDs)", diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 4d7894251ce..3891913fde6 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1935,7 +1935,7 @@ "home.top-level-communities.help": "Select a community to browse its collections.", - "home-page.carousel.ldata.info": "Linguistic Data and NLP Tools", + "home-page.carousel.ldata.info": "Data and Tools", "home-page.carousel.ldata.find": "Find", diff --git a/src/themes/eager-themes.module.ts b/src/themes/eager-themes.module.ts index 4a46595f358..57655c5e174 100644 --- a/src/themes/eager-themes.module.ts +++ b/src/themes/eager-themes.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; -import { EagerThemeModule as DSpaceEagerThemeModule } from './dspace/eager-theme.module'; +import { EagerThemeModule as UKRepoEagerThemeModule } from './ukrepo/eager-theme.module'; +// import { EagerThemeModule as DSpaceEagerThemeModule } from './dspace/eager-theme.module'; // import { EagerThemeModule as CustomEagerThemeModule } from './custom/eager-theme.module'; /** @@ -11,7 +12,8 @@ import { EagerThemeModule as DSpaceEagerThemeModule } from './dspace/eager-theme */ @NgModule({ imports: [ - DSpaceEagerThemeModule, + UKRepoEagerThemeModule, + // DSpaceEagerThemeModule, // CustomEagerThemeModule, ], }) diff --git a/src/themes/ukrepo/app/footer/footer.component.html b/src/themes/ukrepo/app/footer/footer.component.html new file mode 100644 index 00000000000..6faeca469c4 --- /dev/null +++ b/src/themes/ukrepo/app/footer/footer.component.html @@ -0,0 +1,3 @@ + diff --git a/src/themes/ukrepo/app/footer/footer.component.scss b/src/themes/ukrepo/app/footer/footer.component.scss new file mode 100644 index 00000000000..75647892aaf --- /dev/null +++ b/src/themes/ukrepo/app/footer/footer.component.scss @@ -0,0 +1,45 @@ +:host { + footer { + background-color: var(--ds-footer-bg); + text-align: center; + z-index: var(--ds-footer-z-index); + border-top: var(--ds-footer-border); + padding: var(--ds-footer-padding); + + p { + margin: 0; + } + + div > img { + height: var(--ds-footer-logo-height); + } + + + .top-footer { + background-color: var(--ds-top-footer-bg); + padding: var(--ds-footer-padding); + margin: calc(var(--ds-footer-padding) * -1); + } + + .bottom-footer { + ul { + li { + display: inline-flex; + + a { + padding: 0 calc(var(--bs-spacer) / 2); + color: inherit + } + + &:not(:last-child) { + &:after { + content: ''; + border-right: 1px var(--bs-secondary) solid; + } + + } + } + } + } + } +} diff --git a/src/themes/ukrepo/app/footer/footer.component.ts b/src/themes/ukrepo/app/footer/footer.component.ts new file mode 100644 index 00000000000..3f22940c6ae --- /dev/null +++ b/src/themes/ukrepo/app/footer/footer.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { FooterComponent as BaseComponent } from '../../../../app/footer/footer.component'; + +@Component({ + selector: 'ds-footer', + styleUrls: ['./footer.component.scss'], + // styleUrls: ['../../../../app/footer/footer.component.scss'], + templateUrl: './footer.component.html' + // templateUrl: '../../../../app/footer/footer.component.html' +}) +export class FooterComponent extends BaseComponent { +} diff --git a/src/themes/ukrepo/app/header/header.component.html b/src/themes/ukrepo/app/header/header.component.html new file mode 100644 index 00000000000..96547afbd15 --- /dev/null +++ b/src/themes/ukrepo/app/header/header.component.html @@ -0,0 +1,4 @@ +
+ +

Test version of Data Repository at Charles University

+
diff --git a/src/themes/ukrepo/app/header/header.component.scss b/src/themes/ukrepo/app/header/header.component.scss new file mode 100644 index 00000000000..0f934dccedd --- /dev/null +++ b/src/themes/ukrepo/app/header/header.component.scss @@ -0,0 +1,37 @@ +@media screen and (min-width: map-get($grid-breakpoints, md)) { + nav.navbar { + display: none; + } + .header { + background-color: var(--ds-header-bg); + } +} + +.header { + position: relative; +} + +.clarin-logo { + height: var(--ds-login-logo-height); + width: var(--ds-login-logo-width); +} + +.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/ukrepo/app/header/header.component.ts b/src/themes/ukrepo/app/header/header.component.ts new file mode 100644 index 00000000000..6da89b47d57 --- /dev/null +++ b/src/themes/ukrepo/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/ukrepo/app/home-page/home-page.component.html b/src/themes/ukrepo/app/home-page/home-page.component.html new file mode 100644 index 00000000000..639e92bc122 --- /dev/null +++ b/src/themes/ukrepo/app/home-page/home-page.component.html @@ -0,0 +1,127 @@ +
+
+
+
+ + +
+
+ + + + +
+
+ + + + +
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+
+ + + + + +
+
+ + +
+ +
+
+
+
+
{{'home-page.whats-new.message' | translate}}
+ +
+ +
+
+
+ +
+
+
+
{{'home-page.new-items.message' | translate}}
+ +
+
+
+
diff --git a/src/themes/ukrepo/app/home-page/home-page.component.scss b/src/themes/ukrepo/app/home-page/home-page.component.scss new file mode 100644 index 00000000000..7ba001e7d41 --- /dev/null +++ b/src/themes/ukrepo/app/home-page/home-page.component.scss @@ -0,0 +1,193 @@ +:host { + .clarin-home-page-color { + background-color: #f2f2f2; + } + + .clarin-home-page-items-color { + background-color: #fafafa; + } + + .clarin-home-page-borders { + border-left: 1px solid silver; + border-right: 1px solid silver; + } + + .clarin-shadow { + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px silver; + } + + .remove-padding { + padding: 0; + } + + .lindat-color-line { + background-color: #cc2c32; + border-bottom: #b72c32; + height: 3em; + } + + .clarin-fix-to-navbar { + margin-top: -16px; + } + + .wrapper { + height: 180px; + } + + .glass-image { + width: 100px; + position: absolute; + left: 22%; + top: 20%; + } + + .clarin-cut-bottom { + margin-bottom: -16px; + } + + .clarin-cut-bottom-2 { + margin-bottom: -24px; + } + + .h5-font { + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-weight: 500; + line-height: 1.1; + } + + blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eee; + } + + blockquote small { + display: block; + line-height: 1.428571429; + color: #999; + } + + small { + font-size: 85%; + } + + .fa-2x { + font-size: 2em; + } + .fa { + display: inline-block; + font-size: inherit; + } + + .carousel-ldata-info { + left: 34%; position: absolute; top: 25%; font-size: 24px; margin-top: 20px; margin-bottom: 10px; + } + + .carousel-ldata-find { + left: 40%; position: absolute; top: 15%; font-size: 14px; margin-top: 10px; margin-bottom: 10px; + } + + .carousel-ldata-citation-support { + left: 54%; position: absolute; top: 45%; font-size: 14px; margin-top: 10px; margin-bottom: 10px; + } + + .carousel-deposit-header { + left: 40%; position: absolute; top: 10%; margin-top: 17px; margin-bottom: 10px; + } + + .carousel-deposit-info { + left: 28%; position: absolute; top: 30%; margin-top: 10px; margin-bottom: 10px; font-size: 14px; + } + + .carousel-deposit-find { + left: 32%; position: absolute; top: 42%; margin-top: 10px; margin-bottom: 10px; font-size: 14px; + } + + .carousel-deposit-cite { + left: 36%; position: absolute; top: 54%; margin-top: 10px; margin-bottom: 10px; font-size: 14px; + } + + .carousel-deposit-citation { + position: absolute; width: 65%; top: 20%; left: 20%; line-height: 20px; + } + + .input-group-addon { + height: 48px; + padding: 14px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px 0px 0px 6px; + font-weight: normal; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-right: 0px; + max-width: fit-content; + } + + .btn-repository { + color: #fff; + text-shadow: 0 -1px 0 rgb(0 0 0 / 25%); + background-color: #7479b8; + background-image: linear-gradient(to bottom,#9fa3e6,#7479b8); + font-size: 18px; + border-radius: 0px 6px 6px 0px; + } + + .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%), 0 0 8px rgb(102 175 233 / 60%); + box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%), 0 0 8px rgb(102 175 233 / 60%); + } + + .recent-submissions-head { + color: #797dd4; + border-bottom: 5px solid #797dd4; + font-size: 110%; + } + + .top-items-head { + color: #ccab28; + border-bottom: 5px solid #ccab28; + font-size: 120%; + } + + @media (max-width: 991.98px) { + .carousel-ldata-info { + left: 42%; + position: absolute; + top: 23%; font-size: 24px; margin-top: 20px; margin-bottom: 10px; + } + + .carousel-ldata-citation-support { + left: 56%; position: absolute; top: 45%; font-size: 14px; margin-top: 10px; margin-bottom: 10px; + } + + .carousel-deposit-header { + left: 37%; position: absolute; top: 10%; margin-top: 17px; margin-bottom: 10px; + } + + .carousel-deposit-info { + margin-top: 17px; + } + + .carousel-deposit-find { + margin-top: 17px; + } + + .carousel-deposit-cite { + margin-top: 17px; + } + + .carousel-deposit-citation { + width: 100%; + } + } + + @media (max-width: 768px) { + .responsive-padding { + padding-left: 50px !important; + } + } +} diff --git a/src/themes/ukrepo/app/home-page/home-page.component.ts b/src/themes/ukrepo/app/home-page/home-page.component.ts new file mode 100644 index 00000000000..85ff0b298d9 --- /dev/null +++ b/src/themes/ukrepo/app/home-page/home-page.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { HomePageComponent as BaseComponent } from '../../../../app/home-page/home-page.component'; + +@Component({ + selector: 'ds-home-page', + styleUrls: ['./home-page.component.scss'], + // styleUrls: ['../../../../app/home-page/home-page.component.scss'], + templateUrl: './home-page.component.html' + // templateUrl: '../../../../app/home-page/home-page.component.html' +}) +export class HomePageComponent extends BaseComponent { + +} diff --git a/src/themes/ukrepo/app/login-page/login-page.component.html b/src/themes/ukrepo/app/login-page/login-page.component.html new file mode 100644 index 00000000000..1a83892c241 --- /dev/null +++ b/src/themes/ukrepo/app/login-page/login-page.component.html @@ -0,0 +1,10 @@ +
+
+
+ +

{{"login.form.header" | translate}}

+ +
+
+
diff --git a/src/themes/ukrepo/app/login-page/login-page.component.scss b/src/themes/ukrepo/app/login-page/login-page.component.scss new file mode 100644 index 00000000000..d628a5089f6 --- /dev/null +++ b/src/themes/ukrepo/app/login-page/login-page.component.scss @@ -0,0 +1,4 @@ +.login-logo { + height: var(--ds-login-logo-height); + width: var(--ds-login-logo-width); +} diff --git a/src/themes/ukrepo/app/login-page/login-page.component.ts b/src/themes/ukrepo/app/login-page/login-page.component.ts new file mode 100644 index 00000000000..dd557684916 --- /dev/null +++ b/src/themes/ukrepo/app/login-page/login-page.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { LoginPageComponent as BaseComponent } from '../../../../app/login-page/login-page.component'; + +/** + * This component represents the login page + */ +@Component({ + selector: 'ds-login-page', + styleUrls: ['./login-page.component.scss'], + // styleUrls: ['../../../../app/login-page/login-page.component.scss'], + templateUrl: './login-page.component.html' + // templateUrl: '../../../../app/login-page/login-page.component.html' +}) +export class LoginPageComponent extends BaseComponent { +} diff --git a/src/themes/ukrepo/app/logout-page/logout-page.component.html b/src/themes/ukrepo/app/logout-page/logout-page.component.html new file mode 100644 index 00000000000..b5012ed53bc --- /dev/null +++ b/src/themes/ukrepo/app/logout-page/logout-page.component.html @@ -0,0 +1,9 @@ +
+
+
+ +

{{"logout.form.header" | translate}}

+ +
+
+
diff --git a/src/themes/ukrepo/app/logout-page/logout-page.component.scss b/src/themes/ukrepo/app/logout-page/logout-page.component.scss new file mode 100644 index 00000000000..a25e77fb6b3 --- /dev/null +++ b/src/themes/ukrepo/app/logout-page/logout-page.component.scss @@ -0,0 +1 @@ +@import '../login-page/login-page.component.scss'; diff --git a/src/themes/ukrepo/app/logout-page/logout-page.component.ts b/src/themes/ukrepo/app/logout-page/logout-page.component.ts new file mode 100644 index 00000000000..2d4bd5b9517 --- /dev/null +++ b/src/themes/ukrepo/app/logout-page/logout-page.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { LogoutPageComponent as BaseComponent} from '../../../../app/logout-page/logout-page.component'; + +@Component({ + selector: 'ds-logout-page', + styleUrls: ['./logout-page.component.scss'], + // styleUrls: ['../../../../app/logout-page/logout-page.component.scss'], + templateUrl: './logout-page.component.html' + // templateUrl: '../../../../app/logout-page/logout-page.component.html' +}) +export class LogoutPageComponent extends BaseComponent { +} diff --git a/src/themes/ukrepo/assets/fonts/.gitkeep b/src/themes/ukrepo/assets/fonts/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/ukrepo/assets/i18n/cs.json5 b/src/themes/ukrepo/assets/i18n/cs.json5 new file mode 100644 index 00000000000..27a30301797 --- /dev/null +++ b/src/themes/ukrepo/assets/i18n/cs.json5 @@ -0,0 +1,3 @@ +{ + "home-page.carousel.ldata.info" : "Data a nástroje" +} diff --git a/src/themes/ukrepo/assets/i18n/en.json5 b/src/themes/ukrepo/assets/i18n/en.json5 new file mode 100644 index 00000000000..cbbedf6b07f --- /dev/null +++ b/src/themes/ukrepo/assets/i18n/en.json5 @@ -0,0 +1,3 @@ +{ + "home-page.carousel.ldata.info": "Data and Tools", +} diff --git a/src/themes/ukrepo/assets/images/.gitkeep b/src/themes/ukrepo/assets/images/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/ukrepo/assets/images/UK-logo-specialni-EN.svg b/src/themes/ukrepo/assets/images/UK-logo-specialni-EN.svg new file mode 100644 index 00000000000..c7b47eefa32 --- /dev/null +++ b/src/themes/ukrepo/assets/images/UK-logo-specialni-EN.svg @@ -0,0 +1,911 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.75 × + + 1 × + + 1 × + + 0.5 × + + diff --git a/src/themes/ukrepo/assets/images/favicons/android-chrome-192x192.png b/src/themes/ukrepo/assets/images/favicons/android-chrome-192x192.png new file mode 100644 index 00000000000..1aaffb1b90e Binary files /dev/null and b/src/themes/ukrepo/assets/images/favicons/android-chrome-192x192.png differ diff --git a/src/themes/ukrepo/assets/images/favicons/android-chrome-512x512.png b/src/themes/ukrepo/assets/images/favicons/android-chrome-512x512.png new file mode 100644 index 00000000000..2d35f496dc2 Binary files /dev/null and b/src/themes/ukrepo/assets/images/favicons/android-chrome-512x512.png differ diff --git a/src/themes/ukrepo/assets/images/favicons/apple-touch-icon.png b/src/themes/ukrepo/assets/images/favicons/apple-touch-icon.png new file mode 100644 index 00000000000..58ff41f34b7 Binary files /dev/null and b/src/themes/ukrepo/assets/images/favicons/apple-touch-icon.png differ diff --git a/src/themes/ukrepo/assets/images/favicons/favicon.ico b/src/themes/ukrepo/assets/images/favicons/favicon.ico new file mode 100644 index 00000000000..364ca659fd7 Binary files /dev/null and b/src/themes/ukrepo/assets/images/favicons/favicon.ico differ diff --git a/src/themes/ukrepo/assets/images/favicons/favicon.svg b/src/themes/ukrepo/assets/images/favicons/favicon.svg new file mode 100644 index 00000000000..ca6546ade5b --- /dev/null +++ b/src/themes/ukrepo/assets/images/favicons/favicon.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/src/themes/ukrepo/assets/images/favicons/manifest.webmanifest b/src/themes/ukrepo/assets/images/favicons/manifest.webmanifest new file mode 100644 index 00000000000..1784ba2b4c5 --- /dev/null +++ b/src/themes/ukrepo/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/ukrepo/eager-theme.module.ts b/src/themes/ukrepo/eager-theme.module.ts new file mode 100644 index 00000000000..836ad912ae0 --- /dev/null +++ b/src/themes/ukrepo/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 { HeaderComponent } from './app/header/header.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'; +import { FooterComponent } from './app/footer/footer.component'; +import { HomePageComponent } from './app/home-page/home-page.component'; +import {NgbCarouselModule} from '@ng-bootstrap/ng-bootstrap'; + +/** + * 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, + HeaderComponent, + FooterComponent, + HomePageComponent, +]; + +@NgModule({ + imports: [ + CommonModule, + SharedModule, + SharedBrowseByModule, + ResultsBackButtonModule, + RootModule, + NavbarModule, + NgbCarouselModule, + ], + 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/ukrepo/lazy-theme.module.ts b/src/themes/ukrepo/lazy-theme.module.ts new file mode 100644 index 00000000000..eca7c35f4c2 --- /dev/null +++ b/src/themes/ukrepo/lazy-theme.module.ts @@ -0,0 +1,137 @@ +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'; + +import { LoginPageComponent } from './app/login-page/login-page.component'; +import { LogoutPageComponent } from './app/logout-page/logout-page.component'; + +const DECLARATIONS = [ + LoginPageComponent, + LogoutPageComponent, +]; + +@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/ukrepo/styles/_global-styles.scss b/src/themes/ukrepo/styles/_global-styles.scss new file mode 100644 index 00000000000..88bfa7546df --- /dev/null +++ b/src/themes/ukrepo/styles/_global-styles.scss @@ -0,0 +1,60 @@ +// Add any global css for the theme here + +// imports the base global style +@import '../../../styles/_global-styles.scss'; +@import '../../../styles/_clarin-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 + } +} + +.alert-warning { + background-color: #fcf8e3 !important; + border: 1px solid #fbeed5 !important; + color: #c09853 !important; +} + +header { + li > .navbar-section, + li > .expandable-navbar-section { + display: flex; + flex-direction: column; + justify-content: center; + height: 100%; + } +} + +.ng-toggle-on { + color: #fff !important; + background-color: #28a745 !important; + border-color: #28a745 !important; +} + +.ng-toggle-off { + color: #fff !important; + background-color: #dc3545 !important; + border-color: #dc3545 !important; +} + +.page-item.active .page-link{ + z-index: 2 !important; + color: #fff !important; + cursor: default !important; + background-color: #428bca !important; + border-color: #428bca !important; +} diff --git a/src/themes/ukrepo/styles/_theme_css_variable_overrides.scss b/src/themes/ukrepo/styles/_theme_css_variable_overrides.scss new file mode 100644 index 00000000000..516eff9f7e9 --- /dev/null +++ b/src/themes/ukrepo/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/ukrepo/styles/_theme_sass_variable_overrides.scss b/src/themes/ukrepo/styles/_theme_sass_variable_overrides.scss new file mode 100644 index 00000000000..b5799c97496 --- /dev/null +++ b/src/themes/ukrepo/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/ukrepo/styles/theme.scss b/src/themes/ukrepo/styles/theme.scss new file mode 100644 index 00000000000..05c96f33728 --- /dev/null +++ b/src/themes/ukrepo/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';