diff --git a/src/components/SiteHeader/MobileMenu/index.svelte b/src/components/SiteHeader/MobileMenu/index.svelte
index 9c6a340e..d4afd107 100644
--- a/src/components/SiteHeader/MobileMenu/index.svelte
+++ b/src/components/SiteHeader/MobileMenu/index.svelte
@@ -4,13 +4,15 @@
import { normalizeUrl } from '../NavBar/utils/index.js';
interface Props {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
data?: any;
isMobileMenuOpen?: boolean;
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
releaseMobileMenu?: any;
}
let {
- data = [],
+ data = {},
isMobileMenuOpen = false,
releaseMobileMenu = () => {},
}: Props = $props();
diff --git a/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte b/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte
index 7c0d8e3e..bb5c75c6 100644
--- a/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte
+++ b/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte
@@ -13,12 +13,19 @@
{story.title}
- {#if thumbnail}
+ {#if thumbnail && (thumbnail.resizer_url || thumbnail?.renditions?.square?.['120w'])}
-

+ {#if thumbnail.resizer_url}
+

+ {:else}
+

+ {/if}
{/if}
@@ -39,9 +46,6 @@
text-decoration: none;
.story-text span {
text-decoration: underline;
- &.label {
- text-decoration: none;
- }
}
}
@@ -62,14 +66,6 @@
}
}
- span.label {
- font-size: 14px;
- line-height: 1.1;
- margin-bottom: 8px;
- display: block;
- font-weight: 200;
- }
-
time {
@include font-sans;
margin-top: 8px;
diff --git a/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.js b/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.ts
similarity index 76%
rename from src/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.js
rename to src/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.ts
index d30c0c75..db2455a5 100644
--- a/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.js
+++ b/src/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.ts
@@ -31,7 +31,7 @@ dayjs.updateLocale('en', {
},
});
-const getTimeZone = (local) => {
+const getTimeZone = (local: boolean) => {
if (local) {
return dayjs.tz.guess();
}
@@ -39,15 +39,19 @@ const getTimeZone = (local) => {
return 'UTC';
};
-const diff = (dateFrom, dateTo, measurement = 'day') => {
+const diff = (
+ dateFrom: Date,
+ dateTo: number,
+ measurement: 'day' | 'hour' = 'day'
+) => {
return dayjs(dateFrom).diff(dayjs(dateTo), measurement, true);
};
-const olderThanHour = (dateFrom, dateTo, hours = 1) => {
+const olderThanHour = (dateFrom: Date, dateTo: number, hours = 1) => {
return diff(dateFrom, dateTo, 'hour') < -hours;
};
-const isSameDay = (dateFrom, dateTo) => {
+const isSameDay = (dateFrom: Date, dateTo: number) => {
const first = new Date(dateFrom);
const second = new Date(dateTo);
return (
@@ -57,10 +61,10 @@ const isSameDay = (dateFrom, dateTo) => {
);
};
-export const getTime = (datetime) => {
+export const getTime = (datetime: dayjs.ConfigType) => {
const publishTime = dayjs(datetime, { utc: true });
- const showRelativeTime = !olderThanHour(publishTime, Date.now());
- const showTime = isSameDay(publishTime, Date.now());
+ const showRelativeTime = !olderThanHour(publishTime.toDate(), Date.now());
+ const showTime = isSameDay(publishTime.toDate(), Date.now());
const timezone = getTimeZone(false);
if (showRelativeTime) {
return dayjs().to(publishTime);
diff --git a/src/components/SiteHeader/NavBar/NavDropdown/index.svelte b/src/components/SiteHeader/NavBar/NavDropdown/index.svelte
index 2f32cb2d..89eeb35f 100644
--- a/src/components/SiteHeader/NavBar/NavDropdown/index.svelte
+++ b/src/components/SiteHeader/NavBar/NavDropdown/index.svelte
@@ -1,20 +1,34 @@
-
-
@@ -54,7 +74,7 @@
diff --git a/src/components/SiteHeader/NavBar/index.svelte b/src/components/SiteHeader/NavBar/index.svelte
index 7dff8f02..feb0c9a6 100644
--- a/src/components/SiteHeader/NavBar/index.svelte
+++ b/src/components/SiteHeader/NavBar/index.svelte
@@ -4,10 +4,12 @@
import MoreDropdown from './NavDropdown/MoreDropdown.svelte';
import { normalizeUrl } from './utils/index';
import { getContext } from 'svelte';
+ import type { Writable } from 'svelte/store';
let { sections = [] } = $props();
- const activeSection = getContext('nav-active-section');
+ const activeSection =
+ getContext
>('nav-active-section');
let windowWidth = $state(1200);
@@ -16,7 +18,7 @@
return 5;
});
- let navTimeout = $state();
+ let navTimeout = $state>();
const timeout = 250;
let displayCount = $derived(getDisplayCount());
diff --git a/src/components/SiteHeader/NavBar/utils/index.js b/src/components/SiteHeader/NavBar/utils/index.ts
similarity index 57%
rename from src/components/SiteHeader/NavBar/utils/index.js
rename to src/components/SiteHeader/NavBar/utils/index.ts
index dd3c8404..bbb458bd 100644
--- a/src/components/SiteHeader/NavBar/utils/index.js
+++ b/src/components/SiteHeader/NavBar/utils/index.ts
@@ -1,2 +1,2 @@
-export const normalizeUrl = (url) =>
+export const normalizeUrl = (url: string) =>
/^http/.test(url) ? url : `https://www.reuters.com${url}`;
diff --git a/src/components/SiteHeader/SiteHeader.mdx b/src/components/SiteHeader/SiteHeader.mdx
new file mode 100644
index 00000000..afb66d4e
--- /dev/null
+++ b/src/components/SiteHeader/SiteHeader.mdx
@@ -0,0 +1,33 @@
+import { Meta } from '@storybook/blocks';
+
+import * as SiteHeaderStories from './SiteHeader.stories.svelte';
+
+
+
+# SiteHeader
+
+Reuters dotcom site header, ported from [Raptor UI components](https://github.com/tr/rcom-arc_raptor-ui/tree/develop/packages/rcom-raptor-ui_common/src/components/site-header).
+
+> **Note:** In the Graphics Kit, you can find this component in `pages/+page.svelte`. Customise it there for the default page.
+
+```svelte
+
+
+
+```
+
+## Dark theme
+
+Colours are customised by the [`Theme`](?path=/docs/theming-theme--default) component. ([Demo](?path=/story/components-page-furniture-siteheader--customised-theme))
+
+```svelte
+
+
+
+
+
+```
diff --git a/src/components/SiteHeader/SiteHeader.stories.svelte b/src/components/SiteHeader/SiteHeader.stories.svelte
index 979f5ab5..518debd8 100644
--- a/src/components/SiteHeader/SiteHeader.stories.svelte
+++ b/src/components/SiteHeader/SiteHeader.stories.svelte
@@ -1,43 +1,24 @@
-
-
-
- {#snippet children({ args })}
-
-
-
- {/snippet}
-
-
-
-
-
+
diff --git a/src/components/SiteHeader/SiteHeader.svelte b/src/components/SiteHeader/SiteHeader.svelte
index 5a0072a8..b5064fec 100644
--- a/src/components/SiteHeader/SiteHeader.svelte
+++ b/src/components/SiteHeader/SiteHeader.svelte
@@ -8,7 +8,7 @@
import MenuIcon from './svgs/Menu.svelte';
import MobileMenu from './MobileMenu/index.svelte';
- setContext('nav-active-section', writable(null));
+ setContext('nav-active-section', writable(null));
let data = $state(starterData);
diff --git a/src/components/SiteHeader/stories/docs/component.md b/src/components/SiteHeader/stories/docs/component.md
deleted file mode 100644
index 431b7e25..00000000
--- a/src/components/SiteHeader/stories/docs/component.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Reuters dotcom site header, ported from [Raptor UI components](https://github.com/tr/rcom-arc_raptor-ui/tree/develop/packages/rcom-raptor-ui_common/src/components/site-header).
-
-> **Note:** In the Graphics Kit, you can find this component in `pages/+page.svelte`. Customise it there for the default page.
-
-```svelte
-
-
-
-```
diff --git a/src/components/SiteHeader/stories/docs/darkTheme.md b/src/components/SiteHeader/stories/docs/darkTheme.md
deleted file mode 100644
index 492e8157..00000000
--- a/src/components/SiteHeader/stories/docs/darkTheme.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Colours are customised by the [`Theme`](?path=/docs/theming-theme--default) component.
-
-```svelte
-
-
-
-
-
-```