@streamscloud/embeddable 12.1.0 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +4 -16
  2. package/dist/content-player/cmp.content-player.svelte +1 -1
  3. package/dist/content-player/content-player-config.svelte.d.ts +1 -0
  4. package/dist/content-player/content-player-settings.js +1 -0
  5. package/dist/content-player/controls-and-attachments.svelte +32 -2
  6. package/dist/content-player/controls-and-attachments.svelte.d.ts +1 -0
  7. package/dist/content-player/overview-panel.svelte +2 -2
  8. package/dist/content-player/ui-manager.svelte.d.ts +2 -1
  9. package/dist/content-player/ui-manager.svelte.js +2 -1
  10. package/dist/core/enums.d.ts +3 -0
  11. package/dist/core/enums.js +4 -0
  12. package/dist/core/theme/index.d.ts +1 -0
  13. package/dist/core/theme/index.js +1 -0
  14. package/dist/core/theme/theme-store.svelte.d.ts +5 -0
  15. package/dist/core/theme/theme-store.svelte.js +10 -0
  16. package/dist/media-center/media-center/cmp.media-center-proxy.svelte +59 -0
  17. package/dist/media-center/media-center/cmp.media-center-proxy.svelte.d.ts +12 -0
  18. package/dist/media-center/media-center/discover/discover-header.svelte +10 -13
  19. package/dist/media-center/media-center/discover/discover-header.svelte.d.ts +0 -2
  20. package/dist/media-center/media-center/discover/discover-view.svelte +6 -6
  21. package/dist/media-center/media-center/discover/discover-view.svelte.d.ts +0 -2
  22. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +2 -0
  23. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +20 -1
  24. package/dist/media-center/media-center/header-footer/media-center-footer.svelte +5 -5
  25. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +5 -4
  26. package/dist/media-center/media-center/header-footer/media-center-header.svelte +6 -8
  27. package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +0 -2
  28. package/dist/media-center/media-center/index.d.ts +1 -1
  29. package/dist/media-center/media-center/index.js +1 -1
  30. package/dist/media-center/media-center/media-center-context.svelte.d.ts +3 -13
  31. package/dist/media-center/media-center/media-center-context.svelte.js +11 -7
  32. package/dist/media-center/media-center/{cmp.media-center.svelte → media-center-view.svelte} +56 -107
  33. package/dist/media-center/media-center/media-center-view.svelte.d.ts +7 -0
  34. package/dist/media-center/media-center/menu/menu.svelte +27 -23
  35. package/dist/media-center/media-center/menu/menu.svelte.d.ts +0 -2
  36. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +7 -3
  37. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel.svelte +2 -3
  38. package/dist/media-center/media-center/types.d.ts +1 -8
  39. package/dist/media-page/cmp.media-page.svelte +39 -0
  40. package/dist/media-page/cmp.media-page.svelte.d.ts +10 -0
  41. package/dist/media-page/index.d.ts +2 -0
  42. package/dist/media-page/index.js +3 -2
  43. package/dist/posts/attachments/cmp.attachments.svelte +1 -1
  44. package/dist/posts/controls/cmp.controls.svelte +4 -1
  45. package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
  46. package/dist/posts/post-viewer/attachments-horizontal.svelte +4 -12
  47. package/dist/posts/post-viewer/heading.svelte +4 -4
  48. package/dist/posts/post-viewer/media/post-media.svelte +1 -1
  49. package/dist/posts/post-viewer/post-texts.svelte +2 -2
  50. package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +1 -0
  51. package/dist/posts/posts-player/index.d.ts +1 -0
  52. package/dist/posts/posts-player/index.js +2 -2
  53. package/dist/posts/posts-player/posts-player-proxy.svelte +13 -4
  54. package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +1 -0
  55. package/dist/products/product-card/cmp.product-card.svelte +4 -16
  56. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte +6 -6
  57. package/dist/streams/data-loaders/streams-loader.js +6 -2
  58. package/dist/streams/stream-card/cmp.stream-card.svelte +1 -1
  59. package/dist/streams/streams-player/cmp.streams-player.svelte +42 -0
  60. package/dist/streams/streams-player/cmp.streams-player.svelte.d.ts +24 -0
  61. package/dist/streams/streams-player/index.d.ts +1 -0
  62. package/dist/streams/streams-player/index.js +5 -5
  63. package/dist/streams/streams-player/stream-overview.svelte +1 -1
  64. package/dist/streams/streams-player/streams-player-proxy.svelte +32 -0
  65. package/dist/streams/streams-player/streams-player-proxy.svelte.d.ts +26 -0
  66. package/dist/ui/button/resources/button-theme.svelte +0 -151
  67. package/dist/ui/button/resources/button-types.d.ts +0 -1
  68. package/dist/ui/button/resources/button-types.js +0 -1
  69. package/dist/ui/icon/cmp.icon.svelte +8 -28
  70. package/dist/ui/image/cmp.image-rounded.svelte +3 -10
  71. package/dist/ui/image/cmp.image-stub.svelte +1 -4
  72. package/dist/ui/image/cmp.image.svelte +1 -4
  73. package/dist/ui/loading/cmp.loading.svelte +1 -4
  74. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte +2 -2
  75. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte.d.ts +2 -2
  76. package/dist/ui/player/button/cmp.player-button.svelte +7 -3
  77. package/dist/ui/player/button/cmp.player-buttons-group.svelte +4 -3
  78. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -2
  79. package/dist/ui/player/button/index.d.ts +1 -1
  80. package/dist/ui/player/button/types.d.ts +1 -1
  81. package/dist/ui/player/colors/player-colors.d.ts +1 -0
  82. package/dist/ui/shadow-dom/cmp.shadow-root.svelte +156 -0
  83. package/dist/ui/shadow-dom/colors.scss +72 -0
  84. package/dist/ui/shadow-dom/index.d.ts +1 -0
  85. package/dist/ui/shadow-dom/index.js +1 -0
  86. package/dist/ui/shadow-dom/shadow-root-service.js +0 -4
  87. package/dist/ui/slider/cmp.slider.svelte +5 -5
  88. package/package.json +1 -1
  89. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +0 -4
  90. package/dist/ui/with-background/cmp.with-background.svelte +0 -86
  91. package/dist/ui/with-background/index.d.ts +0 -1
  92. package/dist/ui/with-background/index.js +0 -1
  93. /package/dist/ui/{with-background/cmp.with-background.svelte.d.ts → shadow-dom/cmp.shadow-root.svelte.d.ts} +0 -0
@@ -102,8 +102,8 @@ const styles = $derived.by(() => {
102
102
  }
103
103
  }
104
104
  .ad-card {
105
- --_ad-card--background-color: var(--ad-card--background-color, rgb(from #ffffff r g b/90%));
106
- --_ad-card--border-color: var(--ad-card--background-color, #f2f2f3);
105
+ --_ad-card--background-color: var(--ad-card--background-color, rgb(from var(--sc-mc-color--bg-card) r g b/90%));
106
+ --_ad-card--border-color: var(--ad-card--background-color, var(--sc-mc-color--border-card));
107
107
  --_ad-card--price-color: var(--ad-card--price-color, inherit);
108
108
  width: 100%;
109
109
  height: max-content;
@@ -112,7 +112,6 @@ const styles = $derived.by(() => {
112
112
  position: relative;
113
113
  container-type: inline-size;
114
114
  aspect-ratio: 9/16;
115
- color: #000000;
116
115
  background-color: var(--_ad-card--background-color);
117
116
  border: 1px solid var(--_ad-card--border-color);
118
117
  border-radius: 0.5rem;
@@ -121,11 +120,6 @@ const styles = $derived.by(() => {
121
120
  gap: 0.5rem;
122
121
  /* Set 'container-type: inline-size;' to reference container*/
123
122
  }
124
- :global([data-theme="dark"]) .ad-card {
125
- --_ad-card--background-color: var(--ad-card--background-color, rgb(from #121212 r g b/90%));
126
- --_ad-card--border-color: var(--ad-card--background-color, #1e1e1e);
127
- color: #ffffff;
128
- }
129
123
  @container (width < 230px) {
130
124
  .ad-card {
131
125
  padding: 0.5rem 0.5rem 0.75rem;
@@ -221,7 +215,7 @@ const styles = $derived.by(() => {
221
215
  }
222
216
  .ad-card__description {
223
217
  font-weight: 400;
224
- color: #6b7280;
218
+ color: var(--sc-mc-color--text-secondary);
225
219
  font-size: 0.9375rem;
226
220
  line-height: 1.375rem;
227
221
  min-height: 1.375rem;
@@ -234,9 +228,6 @@ const styles = $derived.by(() => {
234
228
  min-height: 0.875rem;
235
229
  }
236
230
  }
237
- :global([data-theme="dark"]) .ad-card__description {
238
- color: #d1d5db;
239
- }
240
231
  .ad-card__price {
241
232
  font-size: 1.6875rem;
242
233
  font-weight: 700;
@@ -262,7 +253,7 @@ const styles = $derived.by(() => {
262
253
  line-height: 1.09125rem;
263
254
  letter-spacing: 0;
264
255
  text-align: right;
265
- color: #6b7280;
256
+ color: var(--sc-mc-color--text-secondary);
266
257
  white-space: nowrap;
267
258
  overflow: hidden;
268
259
  text-overflow: ellipsis;
@@ -276,9 +267,6 @@ const styles = $derived.by(() => {
276
267
  line-height: 0.875rem;
277
268
  }
278
269
  }
279
- :global([data-theme="dark"]) .ad-card__price-info-label {
280
- color: #d1d5db;
281
- }
282
270
  .ad-card__button {
283
271
  width: 100%;
284
272
  }
@@ -150,7 +150,7 @@ const handleSliderMounted = (node) => {
150
150
  {/if}
151
151
  </div>
152
152
 
153
- <ControlsAndAttachments config={config} />
153
+ <ControlsAndAttachments config={config} hasOverview={!!overviewPanelContent} />
154
154
  {:else}
155
155
  <Loading positionFixedCenter={true} timeout={1000} />
156
156
  {/if}
@@ -34,6 +34,7 @@ export declare class ContentPlayerConfig<T extends {
34
34
  buttonInactive: string | null;
35
35
  cardButton: string | null;
36
36
  cardBackground: string | null;
37
+ menuBackground: string | null;
37
38
  playerBackground: string | null;
38
39
  price: string | null;
39
40
  salePrice: string | null;
@@ -7,6 +7,7 @@ export class ContentPlayerSettings {
7
7
  buttonInactive: null,
8
8
  cardButton: null,
9
9
  cardBackground: null,
10
+ menuBackground: null,
10
11
  playerBackground: null,
11
12
  price: null,
12
13
  salePrice: null,
@@ -1,12 +1,14 @@
1
1
  <script lang="ts">import { slideHorizontally } from '../core/transitions';
2
2
  import { PostAttachments } from '../posts/attachments';
3
3
  import { PostControls } from '../posts/controls';
4
- import { PlayerButton } from '../ui/player/button';
4
+ import { IconColor } from '../ui/icon';
5
+ import { PlayerButton, PlayerButtonsGroup } from '../ui/player/button';
5
6
  import { ContentPlayerConfig } from './content-player-config.svelte';
7
+ import IconCalendarWeekNumbers from '@fluentui/svg-icons/icons/calendar_week_numbers_24_regular.svg?raw';
6
8
  import IconChevronDown from '@fluentui/svg-icons/icons/chevron_down_28_regular.svg?raw';
7
9
  import IconChevronUp from '@fluentui/svg-icons/icons/chevron_up_28_regular.svg?raw';
8
10
  import IconDismiss from '@fluentui/svg-icons/icons/dismiss_28_regular.svg?raw';
9
- let { config } = $props();
11
+ let { config, hasOverview } = $props();
10
12
  const uiManager = config.uiManager;
11
13
  let attachmentsCollapsed = $state(false);
12
14
  let closeButtonAreaHeight = $state(0);
@@ -17,6 +19,18 @@ const currentItemPostContainer = $derived.by(() => {
17
19
  }
18
20
  return config.itemAsPostViewerModel(config.playerBuffer.current);
19
21
  });
22
+ const extraActions = $derived.by(() => {
23
+ const actions = [];
24
+ if (hasOverview && uiManager.overviewCanBeShown) {
25
+ actions.push({
26
+ icon: IconCalendarWeekNumbers,
27
+ callback: () => {
28
+ uiManager.overviewCollapsed = !uiManager.overviewCollapsed;
29
+ }
30
+ });
31
+ }
32
+ return actions;
33
+ });
20
34
  const changeShowAttachments = () => {
21
35
  attachmentsCollapsed = !attachmentsCollapsed;
22
36
  };
@@ -68,7 +82,23 @@ const variables = $derived.by(() => {
68
82
  activeColor={config.playerColors.button}
69
83
  inactiveColor={config.playerColors.buttonInactive}
70
84
  socialInteractionsHandler={config.socialInteractionsHandler}
85
+ extraActions={extraActions}
71
86
  on={{ attachmentsClicked: changeShowAttachments }} />
87
+ {:else if extraActions.length}
88
+ {#if extraActions.length === 1}
89
+ <PlayerButton
90
+ scaleEffect={true}
91
+ activeColor={config.playerColors.button}
92
+ inactiveColor={config.playerColors.buttonInactive}
93
+ icon={extraActions[0].icon}
94
+ on={{ click: extraActions[0].callback }} />
95
+ {:else}
96
+ <PlayerButtonsGroup
97
+ scaleEffect={true}
98
+ activeColor={config.playerColors.button}
99
+ backgroundColor={config.playerColors.buttonInactive}
100
+ actions={extraActions} />
101
+ {/if}
72
102
  {/if}
73
103
  {#if config.playerBuffer}
74
104
  <div
@@ -4,6 +4,7 @@ declare class __sveltets_Render<T extends {
4
4
  }> {
5
5
  props(): {
6
6
  config: ContentPlayerConfig<T>;
7
+ hasOverview: boolean;
7
8
  };
8
9
  events(): {};
9
10
  slots(): {};
@@ -22,7 +22,7 @@ const styles = $derived.by(() => {
22
22
 
23
23
  <!--Double `if` for correct behavior of slideHorizontally-->
24
24
  {#if uiManager.viewInitialized}
25
- {#if !uiManager.overviewCollapsed}
25
+ {#if uiManager.overviewCanBeShown && !uiManager.overviewCollapsed}
26
26
  <div class="overview-panel" style={styles} transition:slideHorizontally|local onclick={handlePanelClick} onkeydown={() => {}} role="none">
27
27
  <div class="overview-panel__content" onclick={(e) => e.stopPropagation()} onkeydown={() => {}} role="none">
28
28
  {@render children()}
@@ -43,7 +43,7 @@ const styles = $derived.by(() => {
43
43
  }
44
44
  }
45
45
  .overview-panel {
46
- --_overview-panel--background: var(--overview-panel--background, #1c1c1c);
46
+ --_overview-panel--background: var(--overview-panel--background, rgb(from var(--sc-mc-color--bg-panel) r g b / 90%));
47
47
  --_overview-panel--width: var(--overview-panel--width);
48
48
  --_overview-panel--top: var(--overview-panel--top);
49
49
  --_overview-panel--bottom: var(--overview-panel--bottom);
@@ -1,5 +1,6 @@
1
1
  export declare class ContentPlayerUIManager {
2
- readonly overviewCollapsed: boolean;
2
+ overviewCollapsed: boolean;
3
+ readonly overviewCanBeShown: boolean;
3
4
  readonly overviewMaxWidth = 150;
4
5
  attachmentsWidth: number;
5
6
  readonly attachmentsMaxWidth = 176;
@@ -2,7 +2,8 @@ const ATTACHMENTS_MAX_WIDTH = 176;
2
2
  const OVERLAY_MAX_WIDTH = 150;
3
3
  const SAFE_AREA_SIZE = 70;
4
4
  export class ContentPlayerUIManager {
5
- overviewCollapsed = $derived.by(() => this.overviewMaxWidth > this.sidePanelsMaxWidth);
5
+ overviewCollapsed = $state(true);
6
+ overviewCanBeShown = $derived.by(() => this.overviewMaxWidth <= this.sidePanelsMaxWidth);
6
7
  overviewMaxWidth = OVERLAY_MAX_WIDTH;
7
8
  attachmentsWidth = $state(0);
8
9
  attachmentsMaxWidth = ATTACHMENTS_MAX_WIDTH;
@@ -45,3 +45,6 @@ export declare enum Status {
45
45
  export declare enum StreamStatus {
46
46
  Published = "PUBLISHED"
47
47
  }
48
+ export declare enum EmbedStreamsOrderBy {
49
+ ContentUpdatedAt = "CONTENT_UPDATED_AT"
50
+ }
@@ -55,3 +55,7 @@ export var StreamStatus;
55
55
  (function (StreamStatus) {
56
56
  StreamStatus["Published"] = "PUBLISHED";
57
57
  })(StreamStatus || (StreamStatus = {}));
58
+ export var EmbedStreamsOrderBy;
59
+ (function (EmbedStreamsOrderBy) {
60
+ EmbedStreamsOrderBy["ContentUpdatedAt"] = "CONTENT_UPDATED_AT";
61
+ })(EmbedStreamsOrderBy || (EmbedStreamsOrderBy = {}));
@@ -0,0 +1 @@
1
+ export { Theme } from './theme-store.svelte';
@@ -0,0 +1 @@
1
+ export { Theme } from './theme-store.svelte';
@@ -0,0 +1,5 @@
1
+ export declare const Theme: {
2
+ get: () => "dark" | "light";
3
+ set: (theme: "dark" | "light") => void;
4
+ toggle: () => void;
5
+ };
@@ -0,0 +1,10 @@
1
+ let themeStore = $state('dark');
2
+ export const Theme = {
3
+ get: () => themeStore,
4
+ set: (theme) => {
5
+ themeStore = theme;
6
+ },
7
+ toggle: () => {
8
+ themeStore = themeStore === 'dark' ? 'light' : 'dark';
9
+ }
10
+ };
@@ -0,0 +1,59 @@
1
+ <script lang="ts">import { Theme } from '../../core/theme';
2
+ import { Utils } from '../../core/utils';
3
+ import { Loading } from '../../ui/loading';
4
+ import {} from '../../ui/player/close-orchestrator';
5
+ import { ShadowRoot } from '../../ui/shadow-dom';
6
+ import { MediaCenterContext } from './media-center-context.svelte';
7
+ import { default as MediaCenterView } from './media-center-view.svelte';
8
+ import { untrack } from 'svelte';
9
+ let { config, modeProps, settings, closeOrchestrator } = $props();
10
+ const context = new MediaCenterContext({
11
+ config,
12
+ closeOrchestrator,
13
+ settings,
14
+ on: {
15
+ initialized: (instance) => {
16
+ switch (modeProps.mode) {
17
+ case 'posts':
18
+ instance.playPostsFeed({
19
+ dataProvider: modeProps.props.dataProvider,
20
+ onPostActivated: modeProps.props.onPostActivated
21
+ });
22
+ break;
23
+ case 'streams':
24
+ instance.playStreamsFeed({
25
+ dataProvider: modeProps.props.dataProvider,
26
+ onStreamActivated: modeProps.props.onStreamActivated
27
+ });
28
+ break;
29
+ case 'discover':
30
+ instance.activateDiscover({ categoryId: null });
31
+ break;
32
+ default:
33
+ Utils.assertUnreachable(modeProps);
34
+ }
35
+ },
36
+ failed: () => {
37
+ console.error('Media Center initialization failed');
38
+ closeOrchestrator.requestClose();
39
+ }
40
+ }
41
+ });
42
+ $effect(() => {
43
+ void (settings === null || settings === void 0 ? void 0 : settings.theme);
44
+ untrack(() => {
45
+ var _a;
46
+ Theme.set((_a = settings === null || settings === void 0 ? void 0 : settings.theme) !== null && _a !== void 0 ? _a : 'dark');
47
+ });
48
+ });
49
+ </script>
50
+
51
+ {#if context.initializing}
52
+ <Loading positionFixedCenter={true} timeout={600} />
53
+ {:else if !context.initialized}
54
+ Not initialized placeholder
55
+ {:else}
56
+ <ShadowRoot {...context.backgroundWrapperProps}>
57
+ <MediaCenterView context={context} />
58
+ </ShadowRoot>
59
+ {/if}
@@ -0,0 +1,12 @@
1
+ import type { IMediaCenterConfig } from '../config/types';
2
+ import { type ICloseOrchestrator } from '../../ui/player/close-orchestrator';
3
+ import type { MediaCenterSettings, MediaCenterModeProps } from './types';
4
+ type Props = {
5
+ config: IMediaCenterConfig;
6
+ settings?: MediaCenterSettings;
7
+ modeProps: MediaCenterModeProps;
8
+ closeOrchestrator: ICloseOrchestrator;
9
+ };
10
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
11
+ type Cmp = ReturnType<typeof Cmp>;
12
+ export default Cmp;
@@ -4,8 +4,8 @@ import { LineClamp } from '../../../ui/line-clamp';
4
4
  import { ProportionalContainer } from '../../../ui/proportional-container';
5
5
  import { DiscoverHeaderLocalization } from './discover-header-localization';
6
6
  import { MomentsCircle } from '../moments';
7
- let { context, locale = 'en' } = $props();
8
- const localization = $derived(new DiscoverHeaderLocalization(locale));
7
+ let { context } = $props();
8
+ const localization = $derived(new DiscoverHeaderLocalization(context.locale));
9
9
  </script>
10
10
 
11
11
  {#if context.targetData}
@@ -19,7 +19,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
19
19
  <p class="header__handle">@{target.handle}</p>
20
20
  <div class="header__members">
21
21
  <span class="header__members-count">
22
- {compactNumber(target.membersCount, { locale: localization.locale })}
22
+ {compactNumber(target.membersCount, { locale: context.locale })}
23
23
  </span>
24
24
  <span class="header__members-label">
25
25
  {localization.membersLabel(target.membersCount)}
@@ -28,7 +28,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
28
28
 
29
29
  {#if target.description}
30
30
  <p class="header__description">
31
- <LineClamp enableShowMore={true} locale={locale}>{target.description}</LineClamp>
31
+ <LineClamp enableShowMore={true} locale={context.locale}>{target.description}</LineClamp>
32
32
  </p>
33
33
  {/if}
34
34
  </div>
@@ -60,7 +60,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
60
60
  </div>
61
61
  {#if target.description}
62
62
  <p class="header-mobile__description">
63
- <LineClamp enableShowMore={true} locale={locale}>{target.description}</LineClamp>
63
+ <LineClamp enableShowMore={true} locale={context.locale}>{target.description}</LineClamp>
64
64
  </p>
65
65
  {/if}
66
66
  </div>
@@ -82,7 +82,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
82
82
  flex-direction: row;
83
83
  gap: 2.25rem;
84
84
  padding-top: 1.25rem;
85
- color: #ffffff;
85
+ color: var(--sc-mc-color--text-primary);
86
86
  /* Set 'container-type: inline-size;' to reference container*/
87
87
  }
88
88
  @container (width < 576px) {
@@ -109,10 +109,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
109
109
  .header__handle {
110
110
  font-size: 0.875rem;
111
111
  font-weight: 400;
112
- color: #5a8dec;
113
- }
114
- :global([data-theme="dark"]) .header__handle {
115
- color: #5a8dec;
112
+ color: var(--sc-mc-color--text-brand);
116
113
  }
117
114
  .header__members {
118
115
  margin-top: 0.625rem;
@@ -129,7 +126,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
129
126
  font-size: 0.75rem;
130
127
  line-height: 1;
131
128
  font-weight: 400;
132
- color: #d1d5db;
129
+ color: var(--sc-mc-color--text-secondary);
133
130
  }
134
131
  .header__description {
135
132
  margin-top: 0.875rem;
@@ -154,7 +151,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
154
151
  flex-direction: column;
155
152
  gap: 1.0625rem;
156
153
  padding-top: 0.625rem;
157
- color: #ffffff;
154
+ color: var(--sc-mc-color--text-primary);
158
155
  /* Set 'container-type: inline-size;' to reference container*/
159
156
  }
160
157
  @container (width < 576px) {
@@ -205,7 +202,7 @@ const localization = $derived(new DiscoverHeaderLocalization(locale));
205
202
  font-size: 0.75rem;
206
203
  line-height: 1;
207
204
  font-weight: 600;
208
- color: #d1d5db;
205
+ color: var(--sc-mc-color--text-secondary);
209
206
  }
210
207
  .header-mobile__description {
211
208
  font-size: 1rem;
@@ -1,8 +1,6 @@
1
- import type { Locale } from '../../../core/locale';
2
1
  import type { MediaCenterContext } from '../media-center-context.svelte';
3
2
  type Props = {
4
3
  context: MediaCenterContext;
5
- locale?: Locale;
6
4
  };
7
5
  declare const DiscoverHeader: import("svelte").Component<Props, {}, "">;
8
6
  type DiscoverHeader = ReturnType<typeof DiscoverHeader>;
@@ -4,15 +4,15 @@ import { StreamCard } from '../../../streams/stream-card';
4
4
  import { InfiniteScrolling } from '../../../ui/infinite-scrolling';
5
5
  import { default as Header } from './discover-header.svelte';
6
6
  import { DiscoverViewLocalization } from './discover-view-localization';
7
- let { context, locale = 'en', on } = $props();
7
+ let { context, on } = $props();
8
8
  const handler = $derived(context.discoverHandler);
9
- const localization = $derived(new DiscoverViewLocalization(locale));
9
+ const localization = $derived(new DiscoverViewLocalization(context.locale));
10
10
  </script>
11
11
 
12
12
  {#if !handler.loading}
13
13
  <div class="media-center-discover">
14
14
  <div class="media-center-discover__content">
15
- <Header context={context} locale={locale} />
15
+ <Header context={context} />
16
16
  {#if handler.streamsHolder?.streams.length}
17
17
  <div class="media-center-discover__section">
18
18
  <div class="media-center-discover__section-header">
@@ -46,7 +46,7 @@ const localization = $derived(new DiscoverViewLocalization(locale));
46
46
  viewsCount: item.viewsCount,
47
47
  products: item.products
48
48
  }}
49
- locale={locale}
49
+ locale={context.locale}
50
50
  on={{ click: () => on.shortVideoSelected(item) }} />
51
51
  {/each}
52
52
  </div>
@@ -154,8 +154,8 @@ const localization = $derived(new DiscoverViewLocalization(locale));
154
154
  font-size: 1.125rem;
155
155
  line-height: 1.75rem;
156
156
  font-weight: 600;
157
- color: #ffffff;
158
- text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 6px rgba(0, 0, 0, 0.05);
157
+ color: var(--sc-mc-color--text-white);
158
+ text-shadow: var(--sc-mc-color--text-white-shadow);
159
159
  }
160
160
  .media-center-discover__section-content {
161
161
  display: grid;
@@ -1,10 +1,8 @@
1
- import type { Locale } from '../../../core/locale';
2
1
  import type { PostPlayerModel } from '../../../posts/posts-player/types';
3
2
  import type { StreamPlayerModel } from '../../../streams/streams-player';
4
3
  import type { MediaCenterContext } from '../media-center-context.svelte';
5
4
  type Props = {
6
5
  context: MediaCenterContext;
7
- locale?: Locale;
8
6
  on: {
9
7
  shortVideoSelected: (shortVideo: PostPlayerModel) => void;
10
8
  streamSelected: (stream: StreamPlayerModel) => void;
@@ -3,8 +3,10 @@ import type { MediaCenterSettings } from '../types';
3
3
  export declare class MediaCenterSettingsHandler {
4
4
  private _backgroundImageUrl;
5
5
  private _contentPlayerSettings;
6
+ private _colorsMap;
6
7
  constructor(settings?: MediaCenterSettings);
7
8
  get playerSettings(): MediaCenterSettingsWithColors;
9
+ get locale(): import("../../../core/locale").Locale;
8
10
  get backgroundWrapperProps(): {
9
11
  backgroundDisabled: boolean;
10
12
  backgroundImageUrl: string | null;
@@ -1,12 +1,27 @@
1
+ import { Theme } from '../../../core/theme';
2
+ import { untrack } from 'svelte';
1
3
  export class MediaCenterSettingsHandler {
2
4
  _backgroundImageUrl = $state(null);
3
5
  _contentPlayerSettings = $state({});
6
+ _colorsMap = {
7
+ light: null,
8
+ dark: null
9
+ };
4
10
  constructor(settings) {
5
11
  this._contentPlayerSettings = settings ?? {};
12
+ $effect(() => {
13
+ const theme = Theme.get();
14
+ untrack(() => {
15
+ this._contentPlayerSettings.playerColors = this._colorsMap[theme];
16
+ });
17
+ });
6
18
  }
7
19
  get playerSettings() {
8
20
  return this._contentPlayerSettings;
9
21
  }
22
+ get locale() {
23
+ return this._contentPlayerSettings.locale || 'en';
24
+ }
10
25
  get backgroundWrapperProps() {
11
26
  return {
12
27
  backgroundDisabled: this._contentPlayerSettings.disableBackground === true,
@@ -21,6 +36,10 @@ export class MediaCenterSettingsHandler {
21
36
  this._backgroundImageUrl = url;
22
37
  };
23
38
  updatePlayerColors = (colors) => {
24
- this._contentPlayerSettings.playerColors = colors;
39
+ this._colorsMap = {
40
+ light: null,
41
+ dark: colors
42
+ };
43
+ this._contentPlayerSettings.playerColors = this._colorsMap[Theme.get()];
25
44
  };
26
45
  }
@@ -6,7 +6,7 @@ import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular
6
6
  let { context } = $props();
7
7
  </script>
8
8
 
9
- <div class="media-center-footer">
9
+ <div class="media-center-footer" data-theme="dark">
10
10
  <div class="media-center-footer__spacer"></div>
11
11
  <button
12
12
  type="button"
@@ -52,9 +52,9 @@ let { context } = $props();
52
52
  justify-content: space-between;
53
53
  pointer-events: auto;
54
54
  z-index: 1;
55
- background: #000000;
56
55
  padding-top: 0.5rem;
57
56
  padding-bottom: 1.25rem;
57
+ background: var(--sc-mc-color--bg-panel);
58
58
  }
59
59
  .media-center-footer__button {
60
60
  position: relative;
@@ -64,10 +64,10 @@ let { context } = $props();
64
64
  justify-content: center;
65
65
  align-items: center;
66
66
  --icon--size: 1.5rem;
67
- --icon--color: #f2f2f2;
67
+ --icon--color: var(--sc-mc-color--text-secondary);
68
68
  line-height: 0;
69
69
  }
70
70
  .media-center-footer__button--active {
71
- --icon--color: #ffffff;
72
- --icon--stroke-width: 0.6;
71
+ --icon--color: var(--sc-mc-color--text-primary);
72
+ --icon--stroke-width: 0.3;
73
73
  }</style>
@@ -64,7 +64,8 @@ const headerMounted = (node) => {
64
64
  font-size: 1.125rem;
65
65
  font-weight: 600;
66
66
  line-height: 1.4;
67
- color: #ffffff;
67
+ color: var(--sc-mc-color--text-white);
68
+ text-shadow: var(--sc-mc-color--text-white-shadow);
68
69
  }
69
70
  .media-center-header-mobile__button {
70
71
  pointer-events: auto;
@@ -73,8 +74,8 @@ const headerMounted = (node) => {
73
74
  display: flex;
74
75
  justify-content: center;
75
76
  align-items: center;
76
- --icon--size: 1.5rem;
77
- --icon--color: #ffffff;
78
- --icon--filter: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
77
+ --icon--size: 1.625rem;
78
+ --icon--color: var(--sc-mc-color--icon-overlay);
79
+ --icon--filter: var(--sc-mc-color--icon-overlay-shadow);
79
80
  line-height: 0;
80
81
  }</style>
@@ -10,8 +10,8 @@ import IconReOrderDotsHorizontal from '@fluentui/svg-icons/icons/re_order_dots_h
10
10
  import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular.svg?raw';
11
11
  import IconSearch from '@fluentui/svg-icons/icons/search_20_regular.svg?raw';
12
12
  const SCROLL_MASK_OFFSET = 32;
13
- let { context, locale = 'en', on } = $props();
14
- const localization = $derived(new MediaCenterHeaderLocalization(locale));
13
+ let { context, on } = $props();
14
+ const localization = $derived(new MediaCenterHeaderLocalization(context.locale));
15
15
  let scrollAreaRef = $state(null);
16
16
  const headerMounted = (node) => {
17
17
  const heightResizeObserver = new ResizeObserver(() => {
@@ -172,10 +172,10 @@ const styles = $derived.by(() => {
172
172
  }
173
173
 
174
174
  .media-center-header {
175
- --_media-center-header--button-color: var(--media-center-header--button-color, rgb(from #000000 r g b / 95%));
175
+ --_media-center-header--button-color: var(--media-center-header--button-color, var(--sc-mc-color--button-player));
176
176
  --_media-center-header--button-color--inactive: var(
177
177
  --media-center-header--button-color--inactive,
178
- rgb(from var(--_media-center-header--button-color, #000000) r g b / 60%)
178
+ rgb(from var(--_media-center-header--button-color, var(--sc-mc-color--button-player)) r g b / 60%)
179
179
  );
180
180
  width: 73.75rem;
181
181
  max-width: 100%;
@@ -264,7 +264,7 @@ const styles = $derived.by(() => {
264
264
  border-radius: 0.875rem;
265
265
  background-color: var(--_media-center-header--button-color--inactive);
266
266
  border-color: var(--_media-center-header--button-color);
267
- color: #f2f2f2;
267
+ color: var(--sc-mc-color--text-inactive);
268
268
  transition: background 0.3s ease-in-out;
269
269
  -webkit-user-drag: none;
270
270
  user-select: none;
@@ -278,21 +278,19 @@ const styles = $derived.by(() => {
278
278
  }
279
279
  .control-button--active {
280
280
  background-color: var(--_media-center-header--button-color);
281
- color: #ffffff;
281
+ color: var(--sc-mc-color--text-white);
282
282
  }
283
283
  .control-button:hover:not(.control-button--active) {
284
284
  background-color: var(--_media-center-header--button-color);
285
285
  }
286
286
  .control-button__icon {
287
287
  --icon--size: 1rem;
288
- --icon--color: #f2f2f2;
289
288
  line-height: 0;
290
289
  }
291
290
  .control-button__icon--trigger {
292
291
  --icon--size: 1.5rem;
293
292
  }
294
293
  .control-button__icon--active {
295
- --icon--color: #ffffff;
296
294
  --icon--stroke-width: 0.2;
297
295
  }
298
296
  .control-button__value {
@@ -1,8 +1,6 @@
1
- import type { Locale } from '../../../core/locale';
2
1
  import type { MediaCenterContext } from '../media-center-context.svelte';
3
2
  type Props = {
4
3
  context: MediaCenterContext;
5
- locale?: Locale;
6
4
  on: {
7
5
  headerHeightChanged: (height: number) => void;
8
6
  };
@@ -1 +1 @@
1
- export { default as MediaCenter } from './cmp.media-center.svelte';
1
+ export { default as MediaCenterProxy } from './cmp.media-center-proxy.svelte';
@@ -1 +1 @@
1
- export { default as MediaCenter } from './cmp.media-center.svelte';
1
+ export { default as MediaCenterProxy } from './cmp.media-center-proxy.svelte';