@streamscloud/embeddable 10.1.2 → 11.0.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 (112) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +27 -7
  2. package/dist/ads/ad-card/cmp.ad-card.svelte.d.ts +5 -0
  3. package/dist/content-player/cmp.content-player.svelte +30 -40
  4. package/dist/content-player/content-player-config.svelte.d.ts +13 -2
  5. package/dist/content-player/content-player-config.svelte.js +8 -5
  6. package/dist/content-player/content-player-settings.d.ts +12 -0
  7. package/dist/content-player/content-player-settings.js +12 -0
  8. package/dist/content-player/controls-and-attachments.svelte +25 -54
  9. package/dist/content-player/header.svelte +10 -132
  10. package/dist/content-player/header.svelte.d.ts +0 -4
  11. package/dist/content-player/overview-panel.svelte +22 -72
  12. package/dist/content-player/overview-panel.svelte.d.ts +30 -7
  13. package/dist/content-player/ui-manager.svelte.d.ts +2 -4
  14. package/dist/content-player/ui-manager.svelte.js +3 -5
  15. package/dist/media-center/config/internal-media-center-config.js +2 -1
  16. package/dist/media-center/config/operations.generated.d.ts +13 -0
  17. package/dist/media-center/config/operations.generated.js +20 -0
  18. package/dist/media-center/config/operations.graphql +13 -0
  19. package/dist/media-center/config/types.d.ts +13 -0
  20. package/dist/media-center/media-center/cmp.media-center.svelte +117 -348
  21. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +3 -1
  22. package/dist/media-center/media-center/{discover-panel-handler.svelte.d.ts → discover/discover-panel-handler.svelte.d.ts} +5 -6
  23. package/dist/media-center/media-center/{discover-panel-handler.svelte.js → discover/discover-panel-handler.svelte.js} +1 -8
  24. package/dist/media-center/media-center/discover/discover-panel-localization.d.ts +19 -0
  25. package/dist/media-center/media-center/discover/discover-panel-localization.js +78 -0
  26. package/dist/media-center/media-center/{discover-panel.svelte → discover/discover-panel.svelte} +18 -9
  27. package/dist/media-center/media-center/discover/discover-panel.svelte.d.ts +15 -0
  28. package/dist/media-center/media-center/discover/index.d.ts +2 -0
  29. package/dist/media-center/media-center/discover/index.js +2 -0
  30. package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +21 -0
  31. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +36 -0
  32. package/dist/media-center/media-center/handlers/feed-handler.svelte.d.ts +6 -0
  33. package/dist/media-center/media-center/handlers/feed-handler.svelte.js +12 -0
  34. package/dist/media-center/media-center/handlers/index.d.ts +2 -0
  35. package/dist/media-center/media-center/handlers/index.js +2 -0
  36. package/dist/media-center/media-center/header-footer/index.d.ts +3 -0
  37. package/dist/media-center/media-center/header-footer/index.js +3 -0
  38. package/dist/media-center/media-center/header-footer/media-center-footer.svelte +77 -0
  39. package/dist/media-center/media-center/header-footer/media-center-footer.svelte.d.ts +7 -0
  40. package/dist/media-center/media-center/header-footer/media-center-header-localization.d.ts +12 -0
  41. package/dist/media-center/media-center/header-footer/media-center-header-localization.js +40 -0
  42. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +91 -0
  43. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte.d.ts +11 -0
  44. package/dist/media-center/media-center/header-footer/media-center-header.svelte +310 -0
  45. package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +13 -0
  46. package/dist/media-center/media-center/media-center-context.svelte.d.ts +50 -0
  47. package/dist/media-center/media-center/media-center-context.svelte.js +98 -0
  48. package/dist/media-center/media-center/{category-following-wrapper.svelte → menu/category-following-wrapper.svelte} +3 -2
  49. package/dist/media-center/media-center/{category-following-wrapper.svelte.d.ts → menu/category-following-wrapper.svelte.d.ts} +2 -2
  50. package/dist/media-center/media-center/menu/index.d.ts +2 -0
  51. package/dist/media-center/media-center/menu/index.js +2 -0
  52. package/dist/media-center/media-center/menu/menu-localization.d.ts +19 -0
  53. package/dist/media-center/media-center/menu/menu-localization.js +78 -0
  54. package/dist/media-center/media-center/menu/menu.svelte +345 -0
  55. package/dist/media-center/media-center/menu/menu.svelte.d.ts +14 -0
  56. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +10 -0
  57. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +26 -0
  58. package/dist/media-center/media-center/providers/index.d.ts +2 -0
  59. package/dist/media-center/media-center/providers/index.js +2 -0
  60. package/dist/media-center/media-center/providers/post-player-provider-generator.d.ts +8 -0
  61. package/dist/media-center/media-center/{post-player-provider-generator.js → providers/post-player-provider-generator.js} +3 -3
  62. package/dist/media-center/media-center/{streams-player-provider-generator.d.ts → providers/streams-player-provider-generator.d.ts} +2 -2
  63. package/dist/media-center/media-center/{streams-player-provider-generator.js → providers/streams-player-provider-generator.js} +2 -2
  64. package/dist/media-center/media-center/streams-in-category/index.d.ts +2 -0
  65. package/dist/media-center/media-center/streams-in-category/index.js +2 -0
  66. package/dist/media-center/media-center/{streams-in-category-panel-handler.svelte.d.ts → streams-in-category/streams-in-category-panel-handler.svelte.d.ts} +4 -4
  67. package/dist/media-center/media-center/{streams-in-category-panel-handler.svelte.js → streams-in-category/streams-in-category-panel-handler.svelte.js} +5 -5
  68. package/dist/media-center/media-center/{streams-in-category-panel.svelte → streams-in-category/streams-in-category-panel.svelte} +1 -1
  69. package/dist/media-center/media-center/{streams-in-category-panel.svelte.d.ts → streams-in-category/streams-in-category-panel.svelte.d.ts} +1 -1
  70. package/dist/media-center/media-center/types.d.ts +1 -1
  71. package/dist/media-center/model/types.d.ts +7 -6
  72. package/dist/posts/attachments/cmp.attachments.svelte +5 -3
  73. package/dist/posts/attachments/cmp.attachments.svelte.d.ts +6 -0
  74. package/dist/posts/controls/cmp.controls.svelte +3 -3
  75. package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
  76. package/dist/posts/post-viewer/cmp.post-viewer.svelte +3 -1
  77. package/dist/posts/post-viewer/cmp.post-viewer.svelte.d.ts +4 -0
  78. package/dist/products/product-card/cmp.product-card.svelte +35 -11
  79. package/dist/products/product-card/cmp.product-card.svelte.d.ts +5 -0
  80. package/dist/streams/data-loaders/mapper.js +0 -5
  81. package/dist/streams/data-loaders/operations.generated.d.ts +0 -12
  82. package/dist/streams/data-loaders/operations.generated.js +0 -26
  83. package/dist/streams/data-loaders/operations.graphql +0 -6
  84. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +2 -1
  85. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte.d.ts +4 -0
  86. package/dist/streams/stream-card/cmp.stream-card.svelte +5 -5
  87. package/dist/streams/streams-player/index.js +1 -1
  88. package/dist/streams/streams-player/stream-overview.svelte +6 -96
  89. package/dist/streams/streams-player/stream-overview.svelte.d.ts +0 -4
  90. package/dist/streams/streams-player/stream-player-localization.d.ts +0 -1
  91. package/dist/streams/streams-player/stream-player-localization.js +0 -6
  92. package/dist/streams/streams-player/streams-player-view.svelte +0 -2
  93. package/dist/streams/streams-player/types.d.ts +0 -4
  94. package/dist/ui/icon/cmp.icon.svelte +3 -2
  95. package/dist/ui/player/button/cmp.player-button.svelte +17 -5
  96. package/dist/ui/player/button/cmp.player-button.svelte.d.ts +3 -0
  97. package/dist/ui/player/button/cmp.player-buttons-group.svelte +20 -5
  98. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -0
  99. package/dist/ui/player/button/types.d.ts +2 -0
  100. package/package.json +1 -1
  101. package/dist/content-player/content-player-localization.d.ts +0 -6
  102. package/dist/content-player/content-player-localization.js +0 -15
  103. package/dist/media-center/media-center/desktop-categories-selector.svelte +0 -132
  104. package/dist/media-center/media-center/desktop-categories-selector.svelte.d.ts +0 -12
  105. package/dist/media-center/media-center/discover-panel.svelte.d.ts +0 -15
  106. package/dist/media-center/media-center/media-center-handler.svelte.d.ts +0 -28
  107. package/dist/media-center/media-center/media-center-handler.svelte.js +0 -73
  108. package/dist/media-center/media-center/media-center-localization.d.ts +0 -10
  109. package/dist/media-center/media-center/media-center-localization.js +0 -39
  110. package/dist/media-center/media-center/mobile-controls-panel.svelte +0 -268
  111. package/dist/media-center/media-center/mobile-controls-panel.svelte.d.ts +0 -20
  112. package/dist/media-center/media-center/post-player-provider-generator.d.ts +0 -8
@@ -0,0 +1,78 @@
1
+ import {} from '../../../core/locale';
2
+ export class DiscoverPanelLocalization {
3
+ buttons;
4
+ shortVideosSectionTitle;
5
+ interestsSectionTitle;
6
+ latestStreamsSectionTitle;
7
+ popularStreamsSectionTitle;
8
+ overviewLabel;
9
+ membersLabel;
10
+ locale;
11
+ constructor(locale) {
12
+ this.shortVideosSectionTitle = loc.shortVideosSectionTitle[locale];
13
+ this.interestsSectionTitle = loc.interestsSectionTitle[locale];
14
+ this.latestStreamsSectionTitle = loc.streamsSectionTitle[locale];
15
+ this.popularStreamsSectionTitle = loc.popularStreamsSectionTitle[locale];
16
+ this.overviewLabel = loc.overviewLabel[locale];
17
+ this.buttons = {
18
+ cart: loc.cartButton[locale],
19
+ discover: loc.discoverButton[locale],
20
+ feed: loc.feedButton[locale],
21
+ login: loc.loginButton[locale],
22
+ moments: loc.momentsButton[locale],
23
+ webpage: loc.webpageButton[locale]
24
+ };
25
+ this.membersLabel = loc.membersLabel[locale];
26
+ this.locale = locale;
27
+ }
28
+ }
29
+ const loc = {
30
+ shortVideosSectionTitle: {
31
+ en: 'Popular Short Videos',
32
+ no: 'Populære korte videoer'
33
+ },
34
+ popularStreamsSectionTitle: {
35
+ en: 'Popular Streams',
36
+ no: 'Populære Streams'
37
+ },
38
+ streamsSectionTitle: {
39
+ en: 'Latest Streams',
40
+ no: 'Siste Streams'
41
+ },
42
+ interestsSectionTitle: {
43
+ en: 'Interest Channels',
44
+ no: 'Interessekanaler'
45
+ },
46
+ overviewLabel: {
47
+ en: 'Overview',
48
+ no: 'Oversikt'
49
+ },
50
+ discoverButton: {
51
+ en: 'Discover',
52
+ no: 'Oppdag'
53
+ },
54
+ feedButton: {
55
+ en: 'Feed',
56
+ no: 'Feed'
57
+ },
58
+ cartButton: {
59
+ en: 'Cart',
60
+ no: 'Handlekurv'
61
+ },
62
+ loginButton: {
63
+ en: 'Login',
64
+ no: 'Logg inn'
65
+ },
66
+ momentsButton: {
67
+ en: 'Moments',
68
+ no: 'Øyeblikk'
69
+ },
70
+ webpageButton: {
71
+ en: 'Webpage',
72
+ no: 'Nettside'
73
+ },
74
+ membersLabel: {
75
+ en: (count) => (count === 1 ? `Member` : `Members`),
76
+ no: (count) => (count === 1 ? `Medlem` : `Medlemmer`)
77
+ }
78
+ };
@@ -1,10 +1,11 @@
1
- <script lang="ts">import { getPostCoverImage } from '../../posts/model';
2
- import { ProductCard } from '../../products/product-card';
3
- import { ShortVideoCard } from '../../short-videos/short-video-card';
4
- import { StreamCard } from '../../streams/stream-card';
5
- import { DiscoverPanelHandler } from './discover-panel-handler.svelte';
6
- import { MediaCenterLocalization } from './media-center-localization';
7
- let { handler, localization, on } = $props();
1
+ <script lang="ts">import { getPostCoverImage } from '../../../posts/model';
2
+ import { ProductCard } from '../../../products/product-card';
3
+ import { ShortVideoCard } from '../../../short-videos/short-video-card';
4
+ import { StreamCard } from '../../../streams/stream-card';
5
+ import { DiscoverPanelLocalization } from './discover-panel-localization';
6
+ let { context, locale, on } = $props();
7
+ const handler = $derived(context.discoverHandler);
8
+ const localization = $derived(new DiscoverPanelLocalization(locale));
8
9
  </script>
9
10
 
10
11
  <div class="media-center-overview">
@@ -12,7 +13,7 @@ let { handler, localization, on } = $props();
12
13
  {#if handler.streamSectionItems.length}
13
14
  <div class="media-center-overview__section">
14
15
  <div class="media-center-overview__section-header media-center-overview__section-header--blue">
15
- {localization.streamsSectionTitle}
16
+ {localization.latestStreamsSectionTitle}
16
17
  </div>
17
18
  <div class="media-center-overview__section-content">
18
19
  {#each handler.streamSectionItems as item (item.id)}
@@ -36,7 +37,15 @@ let { handler, localization, on } = $props();
36
37
  </div>
37
38
  {:else if item.kind === 'product'}
38
39
  <div class="media-center-overview__card-wrapper" data-theme="dark">
39
- <ProductCard product={item.data} trackingParams={item.trackingParams} locale={localization.locale} />
40
+ <ProductCard
41
+ product={item.data}
42
+ colors={{
43
+ background: context.playerColors?.cardBackground ?? null,
44
+ price: context.playerColors?.price ?? null,
45
+ salePrice: context.playerColors?.salePrice ?? null
46
+ }}
47
+ trackingParams={item.trackingParams}
48
+ locale={localization.locale} />
40
49
  </div>
41
50
  {/if}
42
51
  {/each}
@@ -0,0 +1,15 @@
1
+ import type { Locale } from '../../../core/locale';
2
+ import type { PostPlayerModel } from '../../../posts/posts-player/types';
3
+ import type { StreamPlayerModel } from '../../../streams/streams-player';
4
+ import type { MediaCenterContext } from '../media-center-context.svelte';
5
+ type Props = {
6
+ context: MediaCenterContext;
7
+ locale: Locale;
8
+ on: {
9
+ shortVideoSelected: (shortVideo: PostPlayerModel) => void;
10
+ streamSelected: (stream: StreamPlayerModel) => void;
11
+ };
12
+ };
13
+ declare const DiscoverPanel: import("svelte").Component<Props, {}, "">;
14
+ type DiscoverPanel = ReturnType<typeof DiscoverPanel>;
15
+ export default DiscoverPanel;
@@ -0,0 +1,2 @@
1
+ export { default as DiscoverPanel } from './discover-panel.svelte';
2
+ export { DiscoverPanelHandler } from './discover-panel-handler.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as DiscoverPanel } from './discover-panel.svelte';
2
+ export { DiscoverPanelHandler } from './discover-panel-handler.svelte';
@@ -0,0 +1,21 @@
1
+ import type { MediaCenterConfigModel } from '../../config/types';
2
+ import type { MediaCenterCategoryData } from '../types';
3
+ export declare class CategoriesHandler {
4
+ readonly categories: {
5
+ id: string;
6
+ name: string;
7
+ children: {
8
+ id: string;
9
+ name: string;
10
+ image: string | null;
11
+ parentId: string;
12
+ }[];
13
+ image: string | null;
14
+ }[];
15
+ private _allCateogories;
16
+ private _selectedCategoryId;
17
+ get selectedCategoryId(): string | null;
18
+ set selectedCategoryId(value: string | null);
19
+ getCategoryData: (categoryId: string) => MediaCenterCategoryData | null;
20
+ init: (categories: MediaCenterConfigModel["contentCategories"]) => Promise<void>;
21
+ }
@@ -0,0 +1,36 @@
1
+ export class CategoriesHandler {
2
+ categories = $derived.by(() => {
3
+ return this._allCateogories
4
+ .filter((c) => !c.parentId)
5
+ .map((c) => {
6
+ const childCategories = this._allCateogories.filter((cc) => cc.parentId === c.id);
7
+ const children = childCategories.map((cc) => ({ id: cc.id, name: cc.name, image: cc.image, parentId: cc.parentId }));
8
+ return { id: c.id, name: c.name, children, image: c.image };
9
+ });
10
+ });
11
+ _allCateogories = $state.raw([]);
12
+ _selectedCategoryId = $state.raw(null);
13
+ get selectedCategoryId() {
14
+ return this._selectedCategoryId;
15
+ }
16
+ set selectedCategoryId(value) {
17
+ this._selectedCategoryId = value;
18
+ }
19
+ getCategoryData = (categoryId) => {
20
+ const category = this._allCateogories.find((c) => c.id === categoryId);
21
+ if (!category) {
22
+ return null;
23
+ }
24
+ const parentCategory = category.parentId ? this._allCateogories.find((c) => c.id === category.parentId) : null;
25
+ const selectedCategoryData = {
26
+ id: category.id,
27
+ name: category.name,
28
+ parentId: parentCategory?.id,
29
+ parentName: parentCategory?.name
30
+ };
31
+ return selectedCategoryData;
32
+ };
33
+ init = async (categories) => {
34
+ this._allCateogories = categories;
35
+ };
36
+ }
@@ -0,0 +1,6 @@
1
+ export declare class FeedHandler {
2
+ private _active;
3
+ get active(): boolean;
4
+ activate: () => Promise<void>;
5
+ deactivate: () => void;
6
+ }
@@ -0,0 +1,12 @@
1
+ export class FeedHandler {
2
+ _active = $state(false);
3
+ get active() {
4
+ return this._active;
5
+ }
6
+ activate = async () => {
7
+ this._active = true;
8
+ };
9
+ deactivate = () => {
10
+ this._active = false;
11
+ };
12
+ }
@@ -0,0 +1,2 @@
1
+ export { CategoriesHandler } from './categories-handler.svelte';
2
+ export { FeedHandler } from './feed-handler.svelte';
@@ -0,0 +1,2 @@
1
+ export { CategoriesHandler } from './categories-handler.svelte';
2
+ export { FeedHandler } from './feed-handler.svelte';
@@ -0,0 +1,3 @@
1
+ export { default as MediaCenterFooter } from './media-center-footer.svelte';
2
+ export { default as MediaCenterHeaderMobile } from './media-center-header-mobile.svelte';
3
+ export { default as MediaCenterHeader } from './media-center-header.svelte';
@@ -0,0 +1,3 @@
1
+ export { default as MediaCenterFooter } from './media-center-footer.svelte';
2
+ export { default as MediaCenterHeaderMobile } from './media-center-header-mobile.svelte';
3
+ export { default as MediaCenterHeader } from './media-center-header.svelte';
@@ -0,0 +1,77 @@
1
+ <script lang="ts">import { Icon } from '../../../ui/icon';
2
+ import IconCart from '@fluentui/svg-icons/icons/cart_20_regular.svg?raw';
3
+ import IconLineHorizontal3 from '@fluentui/svg-icons/icons/line_horizontal_3_20_regular.svg?raw';
4
+ import IconPhone from '@fluentui/svg-icons/icons/phone_20_regular.svg?raw';
5
+ import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular.svg?raw';
6
+ let { context } = $props();
7
+ </script>
8
+
9
+ <div class="media-center-footer">
10
+ <div class="media-center-footer__spacer"></div>
11
+ <button
12
+ type="button"
13
+ class="media-center-footer__button"
14
+ class:media-center-footer__button--active={context.feedHandler.active}
15
+ onclick={() => context.activateFeed()}>
16
+ <Icon src={IconPhone} />
17
+ </button>
18
+ <div class="media-center-footer__spacer"></div>
19
+ <button
20
+ type="button"
21
+ class="media-center-footer__button"
22
+ class:media-center-footer__button--active={context.discoverHandler.activated}
23
+ onclick={context.activateDiscover}>
24
+ <Icon src={IconScreenSearch} />
25
+ </button>
26
+ <div class="media-center-footer__spacer"></div>
27
+ <button type="button" class="media-center-footer__button" class:media-center-footer__button--active={false} onclick={() => ({})}>
28
+ <Icon src={IconCart} />
29
+ </button>
30
+ <div class="media-center-footer__spacer"></div>
31
+ <button type="button" class="media-center-footer__button" class:media-center-footer__button--active={context.menuActive} onclick={context.toggleMenu}>
32
+ <Icon src={IconLineHorizontal3} />
33
+ </button>
34
+ <div class="media-center-footer__spacer"></div>
35
+ </div>
36
+
37
+ <style>@keyframes fadeIn {
38
+ 0% {
39
+ opacity: 1;
40
+ }
41
+ 50% {
42
+ opacity: 0.4;
43
+ }
44
+ 100% {
45
+ opacity: 1;
46
+ }
47
+ }
48
+ .media-center-footer {
49
+ width: 100%;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: space-between;
53
+ pointer-events: auto;
54
+ z-index: 1;
55
+ background: #000000;
56
+ padding-top: 0.5rem;
57
+ padding-bottom: 2.625rem;
58
+ }
59
+ .media-center-footer__button {
60
+ position: relative;
61
+ pointer-events: auto;
62
+ padding: 0.75rem;
63
+ display: flex;
64
+ justify-content: center;
65
+ align-items: center;
66
+ --icon--size: 1.5rem;
67
+ --icon--color: #f2f2f2;
68
+ line-height: 0;
69
+ }
70
+ .media-center-footer__button--active {
71
+ --icon--color: #ffffff;
72
+ --icon--stroke-width: 0.5;
73
+ }
74
+ .media-center-footer__button--active {
75
+ color: #ffffff;
76
+ text-shadow: 0.001em 0 0 currentColor, -0.001em 0 0 currentColor, 0 0.001em 0 currentColor, 0 -0.001em 0 currentColor;
77
+ }</style>
@@ -0,0 +1,7 @@
1
+ import type { MediaCenterContext } from '../media-center-context.svelte';
2
+ type Props = {
3
+ context: MediaCenterContext;
4
+ };
5
+ declare const MediaCenterFooter: import("svelte").Component<Props, {}, "">;
6
+ type MediaCenterFooter = ReturnType<typeof MediaCenterFooter>;
7
+ export default MediaCenterFooter;
@@ -0,0 +1,12 @@
1
+ import { type Locale } from '../../../core/locale';
2
+ export declare class MediaCenterHeaderLocalization {
3
+ buttons: {
4
+ cart: string;
5
+ discover: string;
6
+ feed: string;
7
+ login: string;
8
+ moments: string;
9
+ webpage: string;
10
+ };
11
+ constructor(locale: Locale);
12
+ }
@@ -0,0 +1,40 @@
1
+ import {} from '../../../core/locale';
2
+ export class MediaCenterHeaderLocalization {
3
+ buttons;
4
+ constructor(locale) {
5
+ this.buttons = {
6
+ cart: loc.cartButton[locale],
7
+ discover: loc.discoverButton[locale],
8
+ feed: loc.feedButton[locale],
9
+ login: loc.loginButton[locale],
10
+ moments: loc.momentsButton[locale],
11
+ webpage: loc.webpageButton[locale]
12
+ };
13
+ }
14
+ }
15
+ const loc = {
16
+ discoverButton: {
17
+ en: 'Discover',
18
+ no: 'Oppdag'
19
+ },
20
+ feedButton: {
21
+ en: 'Feed',
22
+ no: 'Feed'
23
+ },
24
+ cartButton: {
25
+ en: 'Cart',
26
+ no: 'Handlekurv'
27
+ },
28
+ loginButton: {
29
+ en: 'Login',
30
+ no: 'Logg inn'
31
+ },
32
+ momentsButton: {
33
+ en: 'Moments',
34
+ no: 'Øyeblikk'
35
+ },
36
+ webpageButton: {
37
+ en: 'Webpage',
38
+ no: 'Nettside'
39
+ }
40
+ };
@@ -0,0 +1,91 @@
1
+ <script lang="ts">import { Icon } from '../../../ui/icon';
2
+ import IconDismiss from '@fluentui/svg-icons/icons/dismiss_20_regular.svg?raw';
3
+ import IconLineHorizontal3 from '@fluentui/svg-icons/icons/line_horizontal_3_20_regular.svg?raw';
4
+ let { context, closeFn, on } = $props();
5
+ const headerMounted = (node) => {
6
+ const heightResizeObserver = new ResizeObserver(() => {
7
+ const headerHeight = node.clientHeight;
8
+ on.headerHeightChanged(headerHeight);
9
+ });
10
+ heightResizeObserver.observe(node);
11
+ return {
12
+ destroy: () => {
13
+ on.headerHeightChanged(0);
14
+ heightResizeObserver.disconnect();
15
+ }
16
+ };
17
+ };
18
+ const styles = $derived.by(() => {
19
+ var _a, _b;
20
+ const values = [];
21
+ if ((_a = context.playerColors) === null || _a === void 0 ? void 0 : _a.button) {
22
+ values.push(`--media-center-header-mobile--button-color: ${context.playerColors.button}`);
23
+ }
24
+ if ((_b = context.playerColors) === null || _b === void 0 ? void 0 : _b.buttonInactive) {
25
+ values.push(`--media-center-header-mobile--button-color--inactive: ${context.playerColors.buttonInactive}`);
26
+ }
27
+ return values.join(';');
28
+ });
29
+ </script>
30
+
31
+ <div class="media-center-header-mobile" use:headerMounted style={styles}>
32
+ {#if closeFn}
33
+ <button type="button" class="media-center-header-mobile__button" onclick={closeFn}>
34
+ <Icon src={IconDismiss} />
35
+ </button>
36
+ {:else}
37
+ <span><!--just a stub--></span>
38
+ {/if}
39
+ <button
40
+ type="button"
41
+ class="media-center-header-mobile__button"
42
+ class:media-center-header-mobile__button--active={context.menuActive}
43
+ onclick={context.toggleMenu}>
44
+ <Icon src={IconLineHorizontal3} />
45
+ </button>
46
+ </div>
47
+
48
+ <style>@keyframes fadeIn {
49
+ 0% {
50
+ opacity: 1;
51
+ }
52
+ 50% {
53
+ opacity: 0.4;
54
+ }
55
+ 100% {
56
+ opacity: 1;
57
+ }
58
+ }
59
+ .media-center-header-mobile {
60
+ --_media-center-header-mobile--button-color: var(--media-center-header-mobile--button-color, rgb(from #000000 r g b / 95%));
61
+ --_media-center-header-mobile--button-color--inactive: var(
62
+ --media-center-header-mobile--button-color--inactive,
63
+ rgb(from var(--_media-center-header-mobile--button-color, #000000) r g b / 60%)
64
+ );
65
+ position: absolute;
66
+ inset: 0;
67
+ bottom: auto;
68
+ padding-block: 0.9375rem;
69
+ padding-inline: 0.625rem;
70
+ z-index: 1;
71
+ display: flex;
72
+ justify-content: space-between;
73
+ align-items: center;
74
+ }
75
+ .media-center-header-mobile__button {
76
+ pointer-events: auto;
77
+ padding-block: 0.25rem;
78
+ padding-inline: 1rem;
79
+ display: flex;
80
+ justify-content: center;
81
+ align-items: center;
82
+ border-radius: 0.875rem;
83
+ background-color: var(--_media-center-header-mobile--button-color--inactive);
84
+ border: var(--_media-center-header-mobile--button-color);
85
+ --icon--size: 1.5rem;
86
+ --icon--color: #ffffff;
87
+ line-height: 0;
88
+ }
89
+ .media-center-header-mobile__button--active {
90
+ background-color: var(--_media-center-header-mobile--button-color);
91
+ }</style>
@@ -0,0 +1,11 @@
1
+ import type { MediaCenterContext } from '../media-center-context.svelte';
2
+ type Props = {
3
+ context: MediaCenterContext;
4
+ closeFn: (() => void) | null;
5
+ on: {
6
+ headerHeightChanged: (height: number) => void;
7
+ };
8
+ };
9
+ declare const MediaCenterHeaderMobile: import("svelte").Component<Props, {}, "">;
10
+ type MediaCenterHeaderMobile = ReturnType<typeof MediaCenterHeaderMobile>;
11
+ export default MediaCenterHeaderMobile;