diff --git a/packages/cxl-ui/package.json b/packages/cxl-ui/package.json
index 493fbe6a8..9e9eb7855 100644
--- a/packages/cxl-ui/package.json
+++ b/packages/cxl-ui/package.json
@@ -32,8 +32,10 @@
"@vaadin/tooltip": "^23.3.7",
"@vaadin/vaadin-themable-mixin": "^23.3.7",
"cross-env": "~7.0.2",
+ "crypto-js": "^4.1.1",
"headroom.js": "^0.12.0",
"imports-loader": "^2.0.0",
+ "jose": "^4.13.1",
"laravel-mix": "^6.0.39",
"lit": "^2.2.5",
"lodash-es": "^4.17.21",
diff --git a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-shadow.scss b/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-shadow.scss
index 54f4f6c4e..22d930f3e 100644
--- a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-shadow.scss
+++ b/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-shadow.scss
@@ -1,10 +1,12 @@
-@use "~@conversionxl/cxl-lumo-styles/scss/mixins";
+@use '~@conversionxl/cxl-lumo-styles/scss/mixins';
:host {
box-sizing: border-box;
+}
- [active] {
- background-color: var(--lumo-shade-10pct);
+:host([has-captions]) {
+ .cxl-jw-player-container {
+ display: grid;
}
}
@@ -35,6 +37,10 @@
justify-content: center;
}
+.cxl-jw-player-container {
+ height: 100%;
+}
+
.flex {
display: flex;
height: 100%;
diff --git a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player.scss b/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player.scss
deleted file mode 100644
index 3a387c1c1..000000000
--- a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.jw-player-button {
- width: 32px;
- fill: rgba(255, 255, 255, 0.8);
-
- &:hover {
- fill: rgba(255, 255, 255, 1);
- }
-}
diff --git a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-chapter-navigation.scss b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-chapter-navigation.scss
similarity index 97%
rename from packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-chapter-navigation.scss
rename to packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-chapter-navigation.scss
index 83f43539d..54de81403 100644
--- a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-chapter-navigation.scss
+++ b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-chapter-navigation.scss
@@ -14,6 +14,10 @@
background: var(--lumo-shade);
gap: var(--lumo-space-s);
+ &[hidden] {
+ display: none;
+ }
+
.close {
font-size: var(--lumo-font-size-xs);
cursor: pointer;
diff --git a/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-nextup.scss b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-nextup.scss
new file mode 100644
index 000000000..1587b92c9
--- /dev/null
+++ b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-nextup.scss
@@ -0,0 +1,20 @@
+cxl-jw-player {
+ .jw-nextup-container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+
+ .jw-nextup-cta {
+ max-width: 400px;
+ width: 64%;
+
+ a {
+ pointer-events: all;
+
+ vaadin-button {
+ width: 100%;
+ }
+ }
+ }
+ }
+}
diff --git a/packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-transcript.scss b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-transcript.scss
similarity index 100%
rename from packages/cxl-ui/scss/cxl-jw-player/cxl-jw-player-transcript.scss
rename to packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player-transcript.scss
diff --git a/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player.scss b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player.scss
new file mode 100644
index 000000000..29e15a17d
--- /dev/null
+++ b/packages/cxl-ui/scss/global/cxl-jw-player/cxl-jw-player.scss
@@ -0,0 +1,25 @@
+cxl-jw-player {
+ .jw-player-button {
+ width: 32px;
+ fill: rgba(255, 255, 255, 0.8);
+
+ &:hover {
+ fill: rgba(255, 255, 255, 1);
+ }
+ }
+
+ .jw-related-item {
+ height: 100% !important; /* stylelint-disable-line declaration-no-important */
+ }
+
+ .jwplayer:not(.jw-flag-small-player) .jw-related-item-next-up {
+ .jw-related-item-poster {
+ height: 100%;
+ }
+
+ .jw-related-item-title {
+ position: absolute;
+ bottom: 0;
+ }
+ }
+}
diff --git a/packages/cxl-ui/src/components/cxl-jw-player/README.md b/packages/cxl-ui/src/components/cxl-jw-player/README.md
index 96d3b7815..0baa00e76 100644
--- a/packages/cxl-ui/src/components/cxl-jw-player/README.md
+++ b/packages/cxl-ui/src/components/cxl-jw-player/README.md
@@ -62,13 +62,13 @@ Order is important as each mixin extends the previous one. In this case, `MixinT
There are currently two methods which are important to the lifecycle of the component:
-`__setup()`
+`_setup()`
-This method is async and called when the component is first created. You must call `await super.__setup()` at the beginning of this method to make sure each parent class's setup method is called.
+This method is async and called when the component is first created. You must call `await super._setup()` at the beginning of this method to make sure each parent class's setup method is called.
-`__onTimeListener()`
+`_onTimeListener()`
-This method is async and called when the player's time changes. As with `__setup()`, you must call `await super.__onTimeListener()` at the beginning of this method.
+This method is async and called when the player's time changes. As with `_setup()`, you must call `await super._onTimeListener()` at the beginning of this method.
Current mixins available for use:
diff --git a/packages/cxl-ui/src/components/cxl-jw-player/cxl-jw-player-transcript/index.js b/packages/cxl-ui/src/components/cxl-jw-player/cxl-jw-player-transcript/index.js
index 5bbd17f44..35a3a47c2 100644
--- a/packages/cxl-ui/src/components/cxl-jw-player/cxl-jw-player-transcript/index.js
+++ b/packages/cxl-ui/src/components/cxl-jw-player/cxl-jw-player-transcript/index.js
@@ -1,6 +1,6 @@
import { html, LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
-import style from '../../../styles/cxl-jw-player/cxl-jw-player-transcript-css';
+import style from '../../../styles/global/cxl-jw-player/cxl-jw-player-transcript-css';
import shadowStyle from '../../../styles/cxl-jw-player/cxl-jw-player-transcript-shadow-css';
@customElement('cxl-jw-player-transcript')
@@ -13,9 +13,9 @@ export class CXLJWPlayerTranscriptElement extends LitElement {
return html`