-
-
{{ slide.title | translate }}
-
-
{{ slide.author }}
-
{{ slide.facility | translate }}
+
+
+
+
+
+
{{ slide.title | translate }}
+
+
{{ slide.author }}
+
{{ slide.facility | translate }}
-

+
+
-
-
-
- {{ 'home.loggedOut.integrations.categories.authentication' | translate }}
-
-
-
-
- {{ 'home.loggedOut.integrations.categories.discovery' | translate }}
-
-
-
-
- {{ 'home.loggedOut.integrations.categories.references' | translate }}
-
-
-
-
- {{ 'home.loggedOut.integrations.categories.storage' | translate }}
-
-
-
+
+ @for (icon of icons; track $index) {
+
+
{{ icon.title | translate }}
-
-
-
![incommon]()
-
![sso]()
-
-
-
-
![google-scholar]()
-
![orcid]()
-
-
-
-
![mendeley]()
-
![zotero]()
-
-
-
-
![dropbox]()
-
![google-drive]()
-
-
-
- } @else if (isSmall()) {
-
-
-
- {{ 'home.loggedOut.integrations.categories.authentication' | translate }}
-
-
![incommon]()
-
![sso]()
-
+
![Integration icon]()
-
-
- {{ 'home.loggedOut.integrations.categories.discovery' | translate }}
-
![google-scholar]()
-
+ }
+
-
-
- {{ 'home.loggedOut.integrations.categories.references' | translate }}
-
-
![mendeley]()
-
![zotero]()
-
+
+
+
+
+
{{ icon.title | translate }}
+
+
![Carousel icon]()
-
-
- {{ 'home.loggedOut.integrations.categories.storage' | translate }}
-
-
![dropbox]()
-
![google-drive]()
-
-
- } @else {
-
-
-
-
-
{{ icon.title | translate }}
-
![search icon]()
-
![search icon]()
-
-
-
-
- }
+
+
+
+
+
diff --git a/src/app/features/home/pages/home-logged-out/home-logged-out.component.scss b/src/app/features/home/pages/home-logged-out/home-logged-out.component.scss
index 9d2e8ce47..36e22cde8 100644
--- a/src/app/features/home/pages/home-logged-out/home-logged-out.component.scss
+++ b/src/app/features/home/pages/home-logged-out/home-logged-out.component.scss
@@ -1,416 +1,33 @@
-@use "assets/styles/variables" as var;
-@use "assets/styles/mixins" as mix;
+.home-container {
+ background-color: var(--white);
-:host {
- .home-container {
- display: flex;
- flex-direction: column;
- background: var.$white;
-
- h3 {
- font-weight: 400;
- margin-top: 0.86rem;
- }
-
- .better-way-container {
- margin: 8.5rem 2.5rem 8.5rem 2.5rem;
- display: flex;
- justify-content: center;
- align-items: center;
-
- .text-container {
- display: flex;
- flex-direction: column;
- padding-top: 0.63rem;
- width: 40.29rem;
- }
-
- .image-container {
- display: flex;
- justify-content: center;
-
- img {
- width: 42.07rem;
- height: 26.86rem;
- }
- }
- }
-
- .discover-research-container {
- width: 100%;
- background: var.$gradient-1;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 8.57rem 1.71rem 8.57rem 1.71rem;
- row-gap: 3.43rem;
-
- .text-container {
- display: flex;
- flex-direction: column;
- align-items: center;
- text-align: center;
- }
- }
-
- .supports-container {
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 4.57rem 1.71rem 8.57rem 1.71rem;
- row-gap: 3.43rem;
-
- .content-container {
- display: flex;
-
- .left-bar {
- width: 50%;
- display: flex;
- flex-direction: column;
- row-gap: 1.71rem;
- padding-right: 3.57rem;
-
- .info-section {
- display: flex;
-
- .icons-wrapper {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- padding-left: 0.86rem;
- padding-right: 0.86rem;
-
- .osf-icon-arrow-down {
- color: var.$grey-1;
- font-size: mix.rem(16px);
- }
- }
-
- .text-wrapper {
- display: flex;
- flex-direction: column;
- row-gap: 0.43rem;
- padding-top: 0.86rem;
-
- h3 {
- margin-top: 0;
- line-height: 1.71rem;
- font-weight: 400;
- text-transform: none;
- }
- }
- }
- }
-
- .right-bar {
- display: flex;
- justify-content: center;
- align-items: center;
- width: 50%;
-
- iframe {
- width: 38.36rem;
- height: 21.57rem;
- border: none;
- }
- }
- }
-
- .learn-more-container {
- display: flex;
- justify-content: center;
- }
- }
-
- .others-saying-container {
- display: flex;
- flex-direction: column;
- align-items: center;
- padding-bottom: 2.86rem;
- }
-
- .carousel-container {
- width: 100%;
- padding-bottom: 8.57rem;
- flex: 0;
-
- .slide {
- position: relative;
- background: var.$bg-blue-3;
- height: 28.57rem;
- display: flex;
- justify-content: center;
- align-items: center;
-
- .user-image {
- height: 26.57rem;
- align-self: end;
- }
-
- .quote-icon {
- font-size: 2rem;
- width: 4rem;
- color: var.$pr-blue-1;
- }
-
- .content-container {
- display: flex;
- flex-direction: column;
- .text-container {
- padding-left: 3.43rem;
- width: 32.79rem;
-
- .title-container {
- margin-bottom: 3.43rem;
- }
-
- .author {
- font-weight: 600;
- }
- }
- }
- }
- }
-
- .integrations-title {
- text-align: center;
- }
-
- .integrations-main {
- display: flex;
- flex-direction: column;
- padding-top: 3.43rem;
- padding-bottom: 8.57rem;
- row-gap: 1.71rem;
-
- .integrations-container {
- display: flex;
- justify-content: space-between;
-
- .integrations-bundle {
- display: flex;
- flex-direction: column;
- align-items: center;
- row-gap: 1.71rem;
- width: 25%;
- }
-
- .integrations-bundle-border {
- display: flex;
- flex-direction: column;
- align-items: center;
- row-gap: 1.71rem;
- width: 25%;
- border-right: 1px solid var.$grey-2;
- }
- }
- }
+ .research-image {
+ max-width: 100%;
+ max-height: 100%;
+ object-fit: contain;
}
- .tablet {
- .better-way-container {
- flex-direction: column;
- align-items: center;
-
- p-button {
- width: 55%;
- }
-
- .text-container {
- align-items: center;
- margin-bottom: 4.2rem;
- }
- }
-
- .supports-container {
- padding: 4.2rem 2.5rem 8.5rem 2.5rem;
-
- .content-container {
- flex-direction: column;
- align-items: center;
-
- .left-bar {
- width: 100%;
- padding: 0 4.8rem 3.4rem 4.8rem;
- }
-
- .right-bar {
- width: 100%;
- padding: 0 4.8rem 0 4.8rem;
- iframe {
- width: 100%;
- aspect-ratio: 1.77 / 1;
- }
- }
- }
- }
-
- .carousel-container {
- .slide {
- max-width: 100vw;
- padding-left: 2.5rem;
-
- .content-container {
- .text-container {
- padding-left: 3.43rem;
- width: 40vw;
- }
- }
- }
- }
+ .discover-research-container {
+ background: var(--gradient-1);
}
- .small {
- .better-way-container {
- flex-direction: column;
- align-items: center;
-
- p-button {
- width: 55%;
- }
-
- .text-container {
- align-items: center;
- margin-bottom: 4.2rem;
- }
- }
-
- .supports-container {
- padding: 4.2rem 2.5rem 8.5rem 2.5rem;
-
- .content-container {
- flex-direction: column;
- align-items: center;
-
- .left-bar {
- width: 100%;
- padding: 0 4.8rem 3.4rem 4.8rem;
- }
-
- .right-bar {
- width: 100%;
- padding: 0 4.8rem 3.4rem 4.8rem;
- iframe {
- width: 100%;
- aspect-ratio: 1.77 / 1;
- }
- }
- }
- }
-
- .carousel-container {
- .slide {
- justify-content: center;
- padding: 2.5rem 8rem 2.5rem 8rem;
- height: 100%;
-
- .user-image {
- display: none;
- }
-
- .content-container {
- .text-container {
- padding-left: 3.43rem;
- width: 100%;
- }
- }
- }
- }
-
- .integrations-main-small {
- padding: 4.2rem 0 8.5rem 0;
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 10px;
-
- .integrations-bundle {
- display: flex;
- flex-direction: column;
- row-gap: 1.7rem;
- align-items: center;
- }
- }
+ .arrow-down {
+ color: var(--grey-1);
}
- .mobile {
- .better-way-container {
- flex-direction: column;
- align-items: center;
-
- p-button {
- width: 75%;
- }
-
- .text-container {
- width: 100%;
- text-align: center;
- align-items: center;
- margin-bottom: 4.2rem;
- }
-
- img {
- width: 100%;
- }
- }
-
- .supports-container {
- padding: 4.2rem 2.5rem 8.5rem 2.5rem;
-
- .content-container {
- flex-direction: column;
- align-items: center;
-
- .left-bar {
- width: 100%;
- padding: 0 0 3.4rem 0;
-
- .info-section {
- .icons-wrapper {
- padding: 0 1rem 0 0;
- }
- }
- }
-
- .right-bar {
- width: 100%;
- iframe {
- width: 100%;
- aspect-ratio: 1.77 / 1;
- }
- }
- }
- }
-
- .carousel-container {
- .slide {
- justify-content: center;
- padding: 2.5rem 1.1rem 2.5rem 1.1rem;
- height: 100%;
-
- .user-image {
- display: none;
- }
-
- .content-container {
- .text-container {
- padding-left: 3.43rem;
- width: 100%;
- }
- }
- }
- }
+ .youtube-frame {
+ border: none;
+ width: 100%;
+ aspect-ratio: 2 / 1;
+ }
- .integrations-main-mobile {
- padding-bottom: 4.2rem;
+ .carousel-container {
+ background: var(--bg-blue-3);
- .slide {
- display: flex;
- flex-direction: column;
- align-items: center;
- row-gap: 2rem;
- width: 100%;
- }
+ .quote-icon {
+ color: var(--pr-blue-1);
+ width: 2rem;
+ height: 2rem;
}
}
}
diff --git a/src/app/features/home/pages/home-logged-out/home-logged-out.component.ts b/src/app/features/home/pages/home-logged-out/home-logged-out.component.ts
index 16dd66261..ffb90d2da 100644
--- a/src/app/features/home/pages/home-logged-out/home-logged-out.component.ts
+++ b/src/app/features/home/pages/home-logged-out/home-logged-out.component.ts
@@ -1,31 +1,22 @@
import { TranslatePipe } from '@ngx-translate/core';
import { Button } from 'primeng/button';
-import { CarouselModule } from 'primeng/carousel';
-import { InputText } from 'primeng/inputtext';
+import { Carousel } from 'primeng/carousel';
import { NgOptimizedImage } from '@angular/common';
-import { Component, inject, signal } from '@angular/core';
-import { toSignal } from '@angular/core/rxjs-interop';
-import { FormsModule } from '@angular/forms';
+import { Component } from '@angular/core';
-import { IS_MEDIUM, IS_SMALL, IS_WEB, IS_XSMALL } from '@shared/utils';
+import { IconComponent, SearchInputComponent } from '@osf/shared/components';
import { integrationIcons, slides } from './data';
@Component({
selector: 'osf-home-logged-out',
- imports: [CarouselModule, FormsModule, Button, InputText, NgOptimizedImage, TranslatePipe],
+ imports: [Carousel, Button, SearchInputComponent, IconComponent, NgOptimizedImage, TranslatePipe],
templateUrl: './home-logged-out.component.html',
styleUrl: './home-logged-out.component.scss',
})
export class HomeLoggedOutComponent {
- searchValue = signal('');
- isWeb = toSignal(inject(IS_WEB));
- isMedium = toSignal(inject(IS_MEDIUM));
- isSmall = toSignal(inject(IS_SMALL));
- isXSmall = toSignal(inject(IS_XSMALL));
-
icons = integrationIcons;
slides = slides;
}
diff --git a/src/app/features/institutions/institutions.component.ts b/src/app/features/institutions/institutions.component.ts
index 2b5557c25..f1c6c4d17 100644
--- a/src/app/features/institutions/institutions.component.ts
+++ b/src/app/features/institutions/institutions.component.ts
@@ -7,7 +7,16 @@ import { PaginatorState } from 'primeng/paginator';
import { debounceTime, distinctUntilChanged } from 'rxjs';
import { NgOptimizedImage } from '@angular/common';
-import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, signal, untracked } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ DestroyRef,
+ effect,
+ HostBinding,
+ inject,
+ signal,
+ untracked,
+} from '@angular/core';
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
import { FormControl } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
@@ -38,6 +47,8 @@ import { FetchInstitutions, InstitutionsSelectors } from '@shared/stores';
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class InstitutionsComponent {
+ @HostBinding('class') classes = 'flex-1 flex flex-column w-full h-full';
+
private readonly route = inject(ActivatedRoute);
private readonly router = inject(Router);
private readonly destroyRef = inject(DestroyRef);
diff --git a/src/app/shared/components/add-project-form/add-project-form.component.scss b/src/app/shared/components/add-project-form/add-project-form.component.scss
index c2a84a205..a18b1b4c4 100644
--- a/src/app/shared/components/add-project-form/add-project-form.component.scss
+++ b/src/app/shared/components/add-project-form/add-project-form.component.scss
@@ -1,12 +1,10 @@
@use "assets/styles/variables" as var;
-:host {
- label {
- color: var.$dark-blue-1;
- }
+label {
+ color: var.$dark-blue-1;
+}
- h3 {
- text-transform: none;
- color: var.$dark-blue-1;
- }
+h3 {
+ text-transform: none;
+ color: var.$dark-blue-1;
}
diff --git a/src/app/shared/components/add-project-form/add-project-form.component.ts b/src/app/shared/components/add-project-form/add-project-form.component.ts
index c14fbf65c..561f0559b 100644
--- a/src/app/shared/components/add-project-form/add-project-form.component.ts
+++ b/src/app/shared/components/add-project-form/add-project-form.component.ts
@@ -20,10 +20,9 @@ import { CreateProject, GetMyProjects, MyProjectsSelectors } from '@osf/features
import { ProjectFormControls } from '@osf/shared/enums/create-project-form-controls.enum';
import { ProjectForm } from '@osf/shared/models/create-project-form.model';
import { CustomValidators } from '@osf/shared/utils';
+import { InstitutionsSelectors } from '@shared/stores/institutions';
import { IS_XSMALL } from '@shared/utils/breakpoints.tokens';
-import { InstitutionsSelectors } from 'src/app/shared/stores/institutions';
-
@Component({
selector: 'osf-add-project-form',
imports: [
diff --git a/src/app/shared/components/icon/icon.component.html b/src/app/shared/components/icon/icon.component.html
index 45428a6dc..fcc291098 100644
--- a/src/app/shared/components/icon/icon.component.html
+++ b/src/app/shared/components/icon/icon.component.html
@@ -1,3 +1,3 @@
-
+
diff --git a/src/assets/styles/_base.scss b/src/assets/styles/_base.scss
index 3186e37a4..e76385c06 100644
--- a/src/assets/styles/_base.scss
+++ b/src/assets/styles/_base.scss
@@ -3,15 +3,13 @@
@layer reset, base, primeng;
-@layer base {
+@layer reset {
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
-}
-@layer reset {
html,
body {
color: var.$dark-blue-1;
@@ -91,6 +89,11 @@
}
}
-.cursor-not-allowed {
- cursor: not-allowed;
+@layer base {
+ label {
+ display: block;
+ color: var(--dark-blue-1);
+ margin-bottom: mix.rem(4px);
+ font-weight: 400;
+ }
}
diff --git a/src/assets/styles/_common.scss b/src/assets/styles/_common.scss
index 88760866c..70e6783a9 100644
--- a/src/assets/styles/_common.scss
+++ b/src/assets/styles/_common.scss
@@ -93,6 +93,13 @@
}
// ------------------------- Universal custom hover state -------------------------
+
.grey-border-color {
border-color: var(--grey-2);
}
+
+// ------------------------- Cursor not allowed -------------------------
+
+.cursor-not-allowed {
+ cursor: not-allowed;
+}
diff --git a/src/assets/styles/_variables.scss b/src/assets/styles/_variables.scss
index e50aed655..0a452f422 100644
--- a/src/assets/styles/_variables.scss
+++ b/src/assets/styles/_variables.scss
@@ -138,8 +138,11 @@ $white-60: var(--white-60);
--gradient-3: linear-gradient(90.12deg, #dbedfb 0.03%, #eff4fc 54.38%, #dbedfb 98.07%);
// Primeng changes
+ --p-form-field-color: var(--dark-blue-1);
--p-form-field-border-color: var(--grey-2);
--p-form-field-hover-border-color: var(--grey-1);
+ --p-form-field-disabled-background: var(--white);
+ --p-form-field-disabled-color: var(--grey-1);
// Stepper
--stepper-step-background: var(--white);
diff --git a/src/assets/styles/overrides/carousel.scss b/src/assets/styles/overrides/carousel.scss
index 0ace65d1a..24c20c789 100644
--- a/src/assets/styles/overrides/carousel.scss
+++ b/src/assets/styles/overrides/carousel.scss
@@ -1,26 +1,8 @@
@use "../variables" as var;
.p-carousel {
- .p-carousel-prev-button,
- .p-carousel-next-button {
- display: none;
- }
-
- .p-carousel-indicator-active {
- .p-carousel-indicator-button {
- background: var.$pr-blue-1;
- }
- }
-
- .p-carousel-indicator-button {
- background: var.$grey-2;
- width: 1.1rem;
- height: 1.1rem;
- border-radius: 50%;
- }
-
- .p-carousel-indicator-list {
- margin-top: 1.7rem;
- column-gap: 1.7rem;
- }
+ --p-carousel-indicator-width: 1rem;
+ --p-carousel-indicator-height: 1rem;
+ --p-carousel-indicator-border-radius: 50%;
+ --p-carousel-indicator-list-gap: 1.5rem;
}
diff --git a/src/assets/styles/overrides/checkbox.scss b/src/assets/styles/overrides/checkbox.scss
index 873bb2dff..3ad2f5311 100644
--- a/src/assets/styles/overrides/checkbox.scss
+++ b/src/assets/styles/overrides/checkbox.scss
@@ -1,5 +1,3 @@
-@use "../variables" as var;
-
.affiliation-checkbox {
--p-checkbox-border-color: var(--pr-blue-1);
}
diff --git a/src/assets/styles/overrides/input.scss b/src/assets/styles/overrides/input.scss
index 33d934082..aa4405dec 100644
--- a/src/assets/styles/overrides/input.scss
+++ b/src/assets/styles/overrides/input.scss
@@ -2,91 +2,30 @@
@use "../mixins" as mix;
.p-inputtext {
- color: var.$dark-blue-1;
- background: var.$white;
- border-color: var.$grey-2;
+ --p-inputtext-padding-y: 0.6rem;
+ --p-inputtext-hover-border-color: var(--pr-blue-1);
- &:not([readonly]):enabled:hover {
- border-color: var.$pr-blue-1;
- }
-}
-
-.p-password,
-.p-inputtext {
- box-shadow: none;
- border-radius: mix.rem(8px);
- font-size: mix.rem(16px);
- height: mix.rem(44px);
width: 100%;
-}
-label {
- display: block;
- color: var.$dark-blue-1;
- margin-bottom: mix.rem(4px);
- font-weight: 400;
+ &[readonly] {
+ --p-inputtext-hover-border-color: var(--grey-2);
+ --p-inputtext-border-color: var(--grey-2);
+ --p-inputtext-focus-border-color: var(--grey-2);
+ --p-inputtext-focus-active-color: var(--grey-2);
+ }
}
.p-inputtext.ng-touched.ng-invalid,
.p-inputtext.ng-dirty.ng-invalid {
- border: 1px solid var.$red-1;
+ --p-inputtext-border-color: var(--red-1);
+ --p-inputtext-placeholder-color: var(--red-1);
}
-p-password.ng-touched.ng-invalid {
- .p-password-input {
- border: 1px solid var.$red-1;
- }
-}
-
-.p-inputtext.ng-touched.ng-invalid::placeholder,
-.p-inputtext.ng-dirty.ng-invalid::placeholder {
- color: var.$grey-1;
-}
-
-.input-search {
- position: relative;
- width: 100%;
- display: flex;
- align-items: center;
-
- i {
- position: absolute;
- left: 0.86rem;
- color: var.$dark-blue-1;
- font-size: 1.1rem;
- }
-
- .p-inputtext {
- height: 3.2rem;
- padding-left: 2.86rem;
- }
-}
+.p-textarea {
+ --p-textarea-shadow: none;
+ --p-textarea-hover-border-color: var(--pr-blue-1);
+ --p-textarea-focus-border-color: var(--pr-blue-1);
+ --p-textarea-active-border-color: var(--pr-blue-1);
-.p-textarea,
-.p-textarea:enabled:focus {
- border-color: var.$grey-2;
- font-size: mix.rem(16px);
- border-radius: mix.rem(8px);
- box-shadow: none;
resize: none;
-
- &:enabled:hover {
- border-color: var.$pr-blue-1;
- }
-}
-
-.addon-input {
- .p-inputtext {
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
- border-left-style: none;
- }
-
- .p-inputtext.ng-touched.ng-invalid,
- .p-inputtext.ng-dirty.ng-invalid {
- border-color: var.$grey-2;
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
- border-left-style: none;
- }
}