diff --git a/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.html
new file mode 100644
index 000000000..15ceedee8
--- /dev/null
+++ b/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.html
@@ -0,0 +1,32 @@
+
+ {{'MediaDetails.Crews.CrewTitle' | translate}}
+
+
+
+
+
+
+ {{item.name}}
+ {{item.person}}
+
+
+ {{item.job}}
+ {{item.position}}
+ {{item.title}}
+ {{item.overview}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.scss b/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.scss
new file mode 100644
index 000000000..3c0a2de5b
--- /dev/null
+++ b/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.scss
@@ -0,0 +1,87 @@
+@import "~@angular/material/theming";
+@import "~styles/variables.scss";
+ ::ng-deep body .ui-carousel .ui-carousel-content .ui-carousel-prev,
+body .ui-carousel .ui-carousel-content .ui-carousel-next {
+ background-color: #ffffff;
+ border: solid 1px rgba(178, 193, 205, 0.64);
+ -moz-border-radius: 50%;
+ -webkit-border-radius: 50%;
+ border-radius: 50%;
+ margin: 0.2em;
+ color: #333333;
+ -moz-transition: color 0.2s;
+ -o-transition: color 0.2s;
+ -webkit-transition: color 0.2s;
+ transition: color 0.2s;
+}
+
+::ng-deep body .ui-carousel .ui-carousel-content .ui-carousel-prev:not(.ui-state-disabled):hover,
+body .ui-carousel .ui-carousel-content .ui-carousel-next:not(.ui-state-disabled):hover {
+ background-color: #ffffff;
+ color: #000;
+ border-color: solid 1px rgba(178, 193, 205, 0.64);
+}
+
+::ng-deep body .ui-carousel .ui-carousel-dots-container .ui-carousel-dot-item>.ui-button {
+ border-color: transparent;
+ background-color: transparent;
+}
+
+::ng-deep body .ui-carousel .ui-carousel-dots-container .ui-carousel-dot-item .ui-carousel-dot-icon {
+ width: 20px;
+ height: 6px;
+ background-color: rgba(255, 255, 255, 0.44);
+ margin: 0 0.2em;
+}
+
+::ng-deep body .ui-carousel .ui-carousel-dots-container .ui-carousel-dot-item .ui-carousel-dot-icon::before {
+ content: " ";
+}
+
+::ng-deep body .ui-carousel .ui-carousel-dots-container .ui-carousel-dot-item.ui-state-highlight .ui-carousel-dot-icon {
+ background-color: #FFF;
+}
+
+.carousel-item {
+ text-align: center;
+}
+
+::ng-deep .ui-carousel-next {
+ background-color: #ffffff;
+ border: solid 1px rgba(178, 193, 205, 0.64);
+ border-radius: 50%;
+ margin: 0.2em;
+ color: #333333;
+ transition: color 0.2s;
+}
+
+::ng-deep .ui-carousel-content button:focus {
+ outline: none;
+}
+
+.bottom-space {
+ padding-bottom: 10px;
+}
+
+@media (min-width: 979px) {
+
+ .crew-profile-img {
+ border-radius: 100%;
+ width: 200px;
+ max-height: 200px;
+ object-fit: cover;
+ }
+}
+@media (max-width: 978px) {
+
+ .crew-profile-img {
+ border-radius: 100%;
+ width: 100px;
+ max-height: 100px;
+ object-fit: cover;
+ }
+}
+
+.link {
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.ts b/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.ts
new file mode 100644
index 000000000..44513818a
--- /dev/null
+++ b/src/Ombi/ClientApp/src/app/media-details/components/shared/crew-carousel/crew-carousel.component.ts
@@ -0,0 +1,32 @@
+import { Component, Input } from "@angular/core";
+
+@Component({
+ selector: "crew-carousel",
+ templateUrl: "./crew-carousel.component.html",
+ styleUrls: ["./crew-carousel.component.scss"]
+})
+export class CrewCarouselComponent {
+
+ constructor() {
+ this.responsiveOptions = [
+ {
+ breakpoint: '1024px',
+ numVisible: 5,
+ numScroll: 5
+ },
+ {
+ breakpoint: '768px',
+ numVisible: 3,
+ numScroll: 3
+ },
+ {
+ breakpoint: '560px',
+ numVisible: 1,
+ numScroll: 1
+ }
+ ];
+ }
+
+ @Input() crew: any[];
+ public responsiveOptions: any[];
+}
diff --git a/src/Ombi/ClientApp/src/app/media-details/media-details.component.scss b/src/Ombi/ClientApp/src/app/media-details/media-details.component.scss
index 119035062..bad70928b 100644
--- a/src/Ombi/ClientApp/src/app/media-details/media-details.component.scss
+++ b/src/Ombi/ClientApp/src/app/media-details/media-details.component.scss
@@ -181,6 +181,11 @@
}
+.crew-profile-img {
+ border-radius: 100%;
+ width: 170px;
+}
+
.small-middle-container {
margin: auto;
diff --git a/src/Ombi/wwwroot/translations/en.json b/src/Ombi/wwwroot/translations/en.json
index e63c524d0..f3e2813a9 100644
--- a/src/Ombi/wwwroot/translations/en.json
+++ b/src/Ombi/wwwroot/translations/en.json
@@ -364,6 +364,9 @@
"Casts": {
"CastTitle": "Cast"
},
+ "Crews": {
+ "CrewTitle": "Crew"
+ },
"EpisodeSelector": {
"AllSeasonsTooltip": "This will request every season for this show",
"FirstSeasonTooltip": "This will only request the First Season for this show",
diff --git a/src/Ombi/wwwroot/translations/fr.json b/src/Ombi/wwwroot/translations/fr.json
index 8723bd9c6..be0003e3d 100644
--- a/src/Ombi/wwwroot/translations/fr.json
+++ b/src/Ombi/wwwroot/translations/fr.json
@@ -364,6 +364,9 @@
"Casts": {
"CastTitle": "Casting"
},
+ "Crews": {
+ "CrewTitle": "Equipe"
+ },
"EpisodeSelector": {
"AllSeasonsTooltip": "Cette action demandera toutes les saisons de cette série",
"FirstSeasonTooltip": "Cette action ne demandera que la Première Saison de cette série",