uikit-react-public 0.43.2 → 0.43.4

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 (57) hide show
  1. package/dist/components/Paragraph/Paragraph.d.ts +1 -1
  2. package/dist/index.js +4108 -3963
  3. package/lib/components/Accordion/Accordion.Heading.tsx +0 -2
  4. package/lib/components/Accordion/__tests__/__snapshots__/Accordion.test.tsx.snap +2 -2
  5. package/lib/components/Alert/__tests__/__snapshots__/Alert.test.tsx.snap +4 -4
  6. package/lib/components/Avatar/Avatar.tsx +7 -1
  7. package/lib/components/Avatar/__tests__/__snapshots__/Avatar.test.tsx.snap +12 -12
  8. package/lib/components/Badge/Badge.tsx +6 -11
  9. package/lib/components/Badge/__tests__/__snapshots__/Badge.test.tsx.snap +9 -9
  10. package/lib/components/Button/Button.tsx +11 -7
  11. package/lib/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +9 -9
  12. package/lib/components/Calendar/__tests__/__snapshots__/Calendar.test.tsx.snap +18 -18
  13. package/lib/components/Calendar/subcomponents/AcademicWeek.tsx +7 -5
  14. package/lib/components/Calendar/subcomponents/ColumnHeading.tsx +12 -7
  15. package/lib/components/Calendar/subcomponents/ControlsSelect.tsx +11 -6
  16. package/lib/components/Checkbox/__tests__/__snapshots__/Checkbox.test.tsx.snap +2 -2
  17. package/lib/components/Datepicker/__tests__/__snapshots__/Datepicker.test.tsx.snap +2 -2
  18. package/lib/components/DrawerMenu/DrawerMenu.tsx +4 -3
  19. package/lib/components/DropdownMenu/DropdownMenu.tsx +4 -3
  20. package/lib/components/DropdownUserMenu/DropdownUserMenu.tsx +8 -5
  21. package/lib/components/Field/CharacterCount.tsx +7 -6
  22. package/lib/components/Field/ErrorText.tsx +7 -6
  23. package/lib/components/FileInput/FileInput.tsx +11 -3
  24. package/lib/components/FileInput/__tests__/__snapshots__/FileInput.test.tsx.snap +4 -4
  25. package/lib/components/Footer/Footer.tsx +16 -3
  26. package/lib/components/Footer/FooterColumn.tsx +9 -4
  27. package/lib/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap +13 -11
  28. package/lib/components/FooterNew/BackToTop.tsx +12 -4
  29. package/lib/components/FooterNew/FooterColumn.tsx +4 -0
  30. package/lib/components/FooterNew/FooterNavLink.tsx +12 -6
  31. package/lib/components/FooterNew/LegalAndCopyright.tsx +11 -6
  32. package/lib/components/FooterNew/LogoAddressAndSocial.tsx +27 -15
  33. package/lib/components/FooterNew/__tests__/__snapshots__/Footer.test.tsx.snap +32 -26
  34. package/lib/components/HeaderDraft/HeaderBottomBreadcrumbs.tsx +6 -1
  35. package/lib/components/HeaderDraft/HeaderBottomHeadingAndAvatar.tsx +19 -8
  36. package/lib/components/HeaderDraft/HeaderBreadcrumb.tsx +11 -2
  37. package/lib/components/HeaderDraft/HeaderDraft.tsx +16 -5
  38. package/lib/components/HeaderDraft/__tests__/__snapshots__/Header.test.tsx.snap +7 -7
  39. package/lib/components/HeaderNew/HeaderItem.tsx +6 -0
  40. package/lib/components/Input/__tests__/__snapshots__/Input.test.tsx.snap +4 -4
  41. package/lib/components/Menu/MenuContent.tsx +9 -1
  42. package/lib/components/NativeDatepicker/NativeDatepicker.tsx +6 -2
  43. package/lib/components/Pagination/PaginationInfo.tsx +8 -6
  44. package/lib/components/Pagination/subcomponents/PaginationCompactControls.tsx +8 -2
  45. package/lib/components/Pagination/subcomponents/PaginationStandardControls.tsx +2 -1
  46. package/lib/components/Paragraph/Paragraph.tsx +6 -4
  47. package/lib/components/Paragraph/__tests__/Paragraph.test.tsx +1 -1
  48. package/lib/components/Paragraph/__tests__/__snapshots__/Paragraph.test.tsx.snap +9 -9
  49. package/lib/components/Radio/__tests__/__snapshots__/Radio.test.tsx.snap +2 -2
  50. package/lib/components/Search/__tests__/__snapshots__/Search.test.tsx.snap +2 -2
  51. package/lib/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +1 -1
  52. package/lib/components/Table/subcomponents/Cell/__tests__/__snapshots__/Cell.test.tsx.snap +2 -2
  53. package/lib/components/Table/subcomponents/HeadCell/__tests__/__snapshots__/HeadCell.test.tsx.snap +1 -1
  54. package/lib/components/Textarea/__tests__/__snapshots__/Textarea.test.tsx.snap +4 -4
  55. package/lib/components/Tooltip/Tooltip.tsx +5 -8
  56. package/lib/components/Tooltip/__tests__/__snapshots__/tooltip.test.tsx.snap +2 -2
  57. package/package.json +2 -2
@@ -17,6 +17,7 @@ const ControlsSelect = <T extends string | number>({
17
17
  onValueChange,
18
18
  }: ControlsSelectProps<T>) => {
19
19
  const [theme] = useTheme();
20
+ const { md, mdSemibold } = theme.typography.body;
20
21
 
21
22
  const selectStyle = css`
22
23
  && {
@@ -27,10 +28,11 @@ const ControlsSelect = <T extends string | number>({
27
28
  padding: 0;
28
29
  border: 0;
29
30
  background-color: transparent;
30
- font-family: ${theme.font.family.primary};
31
- font-size: ${theme.font.size.f16};
32
- font-weight: 700;
33
- line-height: 20px;
31
+ font-family: ${mdSemibold.fontFamily};
32
+ font-feature-settings: ${mdSemibold.fontSettings};
33
+ font-size: ${mdSemibold.fontSize}px;
34
+ font-weight: ${mdSemibold.fontWeight};
35
+ line-height: ${mdSemibold.lineHeight}%;
34
36
 
35
37
  &:focus-visible,
36
38
  &:focus-within {
@@ -60,8 +62,11 @@ const ControlsSelect = <T extends string | number>({
60
62
  const optionStyle = css`
61
63
  min-height: 48px;
62
64
  padding: 12px ${theme.padding.p16};
63
- font-weight: 400;
64
- line-height: ${theme.font.lineHeight.h150};
65
+ font-family: ${md.fontFamily};
66
+ font-feature-settings: ${md.fontSettings};
67
+ font-size: ${md.fontSize}px;
68
+ font-weight: ${md.fontWeight};
69
+ line-height: ${md.lineHeight}%;
65
70
  `;
66
71
 
67
72
  return (
@@ -77,7 +77,7 @@ exports[`Checkbox > snapshot: indeterminate prop 1`] = `
77
77
 
78
78
  exports[`Checkbox > snapshot: no props 1`] = `
79
79
  <span
80
- class="ucl-uikit-base-checkbox ucl-uikit-checkbox css-tfrbiv"
80
+ class="ucl-uikit-base-checkbox ucl-uikit-checkbox css-qoivhx"
81
81
  data-testid="ucl-uikit-checkbox__root"
82
82
  >
83
83
  <input
@@ -94,7 +94,7 @@ exports[`Checkbox > snapshot: no props 1`] = `
94
94
 
95
95
  exports[`Checkbox > snapshot: testId prop 1`] = `
96
96
  <span
97
- class="ucl-uikit-base-checkbox ucl-uikit-checkbox css-tfrbiv"
97
+ class="ucl-uikit-base-checkbox ucl-uikit-checkbox css-qoivhx"
98
98
  data-testid="test123__root"
99
99
  >
100
100
  <input
@@ -6,7 +6,7 @@ exports[`Datepicker > Snapshot: no date provided 1`] = `
6
6
  data-testid="ucl-uikit-datepicker"
7
7
  >
8
8
  <div
9
- class="ucl-uikit-datepicker__visible-field css-j8089z"
9
+ class="ucl-uikit-datepicker__visible-field css-2ui4ji"
10
10
  data-testid="ucl-uikit-datepicker__visible-field"
11
11
  >
12
12
  <input
@@ -61,7 +61,7 @@ exports[`Datepicker > Snapshot: with date provided 1`] = `
61
61
  data-testid="ucl-uikit-datepicker"
62
62
  >
63
63
  <div
64
- class="ucl-uikit-datepicker__visible-field css-j8089z"
64
+ class="ucl-uikit-datepicker__visible-field css-2ui4ji"
65
65
  data-testid="ucl-uikit-datepicker__visible-field"
66
66
  >
67
67
  <input
@@ -13,8 +13,7 @@ export interface DrawerMenuChildrenApi {
13
13
  }
14
14
 
15
15
  type DrawerMenuChildren =
16
- | ReactNode
17
- | ((api: DrawerMenuChildrenApi) => ReactNode);
16
+ ReactNode | ((api: DrawerMenuChildrenApi) => ReactNode);
18
17
 
19
18
  export interface DrawerMenuProps
20
19
  extends
@@ -74,8 +73,10 @@ const DrawerMenu = ({
74
73
  const triggerStyle = css`
75
74
  color: ${theme.colour.text.brandPrimary};
76
75
  font-family: ${theme.typography.body.mdNumeric.fontFamily};
76
+ font-feature-settings: ${theme.typography.body.mdNumeric.fontSettings};
77
+ font-size: ${theme.typography.body.mdNumeric.fontSize}px;
77
78
  font-weight: ${theme.typography.body.mdNumeric.fontWeight};
78
- font-size: 14px;
79
+ line-height: ${theme.typography.body.mdNumeric.lineHeight}%;
79
80
  `;
80
81
 
81
82
  const dropdownStyle = cx(NAME, dropdownClassName);
@@ -13,8 +13,7 @@ export interface DropdownMenuChildrenApi {
13
13
  }
14
14
 
15
15
  type DropdownMenuChildren =
16
- | ReactNode
17
- | ((api: DropdownMenuChildrenApi) => ReactNode);
16
+ ReactNode | ((api: DropdownMenuChildrenApi) => ReactNode);
18
17
 
19
18
  export interface DropdownMenuProps
20
19
  extends
@@ -64,8 +63,10 @@ const DropdownMenu = ({
64
63
  const triggerStyle = css`
65
64
  color: ${theme.colour.text.brandPrimary};
66
65
  font-family: ${theme.typography.body.mdNumeric.fontFamily};
66
+ font-feature-settings: ${theme.typography.body.mdNumeric.fontSettings};
67
+ font-size: ${theme.typography.body.mdNumeric.fontSize}px;
67
68
  font-weight: ${theme.typography.body.mdNumeric.fontWeight};
68
- font-size: 14px;
69
+ line-height: ${theme.typography.body.mdNumeric.lineHeight}%;
69
70
  `;
70
71
 
71
72
  const dropdownStyle = cx(NAME, dropdownClassName);
@@ -3,6 +3,7 @@ import { css, cx } from '@emotion/css';
3
3
  import Dropdown, { DropdownProps } from '../Dropdown';
4
4
  import Avatar, { AvatarProps } from '../Avatar';
5
5
  import Icon from '../Icon';
6
+ import Text from '../Text';
6
7
  import useTheme from '../../theme/useTheme';
7
8
  import useMediaQuery from '../../hooks/useMediaQuery';
8
9
 
@@ -67,10 +68,7 @@ const DropdownUserMenu = ({
67
68
  `;
68
69
 
69
70
  const userNameStyle = css`
70
- font-family: ${theme.typography.body.md.fontFamily};
71
- font-feature-settings: ${theme.typography.body.md.fontSettings};
72
- font-size: ${theme.typography.body.md.fontSize}px;
73
- line-height: 1.2;
71
+ color: inherit;
74
72
  white-space: nowrap;
75
73
  `;
76
74
 
@@ -111,7 +109,12 @@ const DropdownUserMenu = ({
111
109
  className={resolvedTriggerClassName}
112
110
  >
113
111
  {isDesktop ? (
114
- <span className={resolvedUserNameClassName}>{userName}</span>
112
+ <Text
113
+ level='md'
114
+ className={resolvedUserNameClassName}
115
+ >
116
+ {userName}
117
+ </Text>
115
118
  ) : null}
116
119
  <Avatar
117
120
  tabIndex={-1}
@@ -2,6 +2,7 @@ import { HTMLAttributes, use } from 'react';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { FieldContext } from './Field';
4
4
  import { useTheme } from '../../theme';
5
+ import Paragraph from '../Paragraph';
5
6
 
6
7
  const NAME = 'ucl-uikit-field__char-count';
7
8
 
@@ -22,9 +23,6 @@ const CharacaterCount = ({
22
23
 
23
24
  const baseStyle = css`
24
25
  color: ${theme.colour.text.secondary};
25
- font-size: ${theme.font.size.f14};
26
- font-family: ${theme.font.family.primary};
27
- line-height: ${theme.font.lineHeight.h120};
28
26
  text-align: right;
29
27
  `;
30
28
 
@@ -35,13 +33,16 @@ const CharacaterCount = ({
35
33
  const style = cx(NAME, baseStyle, disabled && disabledStyle, className);
36
34
 
37
35
  return (
38
- <div
36
+ <Paragraph
37
+ as='div'
38
+ level='sm'
39
+ noMargins
39
40
  className={style}
40
- data-testid={testId}
41
+ testId={testId}
41
42
  {...props}
42
43
  >
43
44
  {charCount}/{maxChars}
44
- </div>
45
+ </Paragraph>
45
46
  );
46
47
  };
47
48
 
@@ -3,6 +3,7 @@ import { css, cx } from '@emotion/css';
3
3
  import { FieldContext } from './Field';
4
4
  import { Icon } from '../';
5
5
  import { useTheme } from '../../theme';
6
+ import Paragraph from '../Paragraph';
6
7
 
7
8
  const NAME = 'ucl-uikit-field__error-text';
8
9
 
@@ -27,9 +28,6 @@ const ErrorText = ({
27
28
  gap: 8px;
28
29
  margin-top: 8px;
29
30
  color: ${theme.colour.text.critical};
30
- font-family: ${theme.font.family.primary};
31
- font-size: ${theme.font.size.f14};
32
- line-height: ${theme.font.lineHeight.h120};
33
31
  `;
34
32
 
35
33
  // Prevents the icon getting squished by lots of text
@@ -41,15 +39,18 @@ const ErrorText = ({
41
39
  const style = cx(NAME, baseStyle, className);
42
40
 
43
41
  return (
44
- <div
42
+ <Paragraph
43
+ as='div'
44
+ level='sm'
45
+ noMargins
45
46
  className={style}
46
- data-testid={testId}
47
+ testId={testId}
47
48
  {...props}
48
49
  role='alert'
49
50
  >
50
51
  <Icon.Info className={iconStyle} />
51
52
  {children}
52
- </div>
53
+ </Paragraph>
53
54
  );
54
55
  };
55
56
 
@@ -19,10 +19,14 @@ const FileInput = ({
19
19
  }: FileInputProps) => {
20
20
  const [theme] = useTheme();
21
21
  const fileInputRef = useRef<HTMLInputElement>(null);
22
+ const { md, mdSemibold } = theme.typography.body;
22
23
 
23
24
  const baseStyle = css`
24
- font-size: ${theme.font.size.f16};
25
- font-family: ${theme.font.family.primary};
25
+ font-family: ${md.fontFamily};
26
+ font-feature-settings: ${md.fontSettings};
27
+ font-size: ${md.fontSize}px;
28
+ font-weight: ${md.fontWeight};
29
+ line-height: ${md.lineHeight}%;
26
30
  color: ${theme.colour.link.default};
27
31
  `;
28
32
 
@@ -37,7 +41,11 @@ const FileInput = ({
37
41
  display: inline-flex;
38
42
  text-decoration: underline;
39
43
  gap: 6px;
40
- font-weight: 700;
44
+ font-family: ${mdSemibold.fontFamily};
45
+ font-feature-settings: ${mdSemibold.fontSettings};
46
+ font-size: ${mdSemibold.fontSize}px;
47
+ font-weight: ${mdSemibold.fontWeight};
48
+ line-height: ${mdSemibold.lineHeight}%;
41
49
  margin-top: 3px;
42
50
  cursor: pointer;
43
51
  `;
@@ -2,10 +2,10 @@
2
2
 
3
3
  exports[`Input > snapshot: no props 1`] = `
4
4
  <div
5
- class="ucl-uikit-fileinput css-1ubxuij"
5
+ class="ucl-uikit-fileinput css-1aikphx"
6
6
  >
7
7
  <label
8
- class="css-1lc9iag"
8
+ class="css-iffx76"
9
9
  for="file-input-1"
10
10
  >
11
11
  <svg
@@ -39,10 +39,10 @@ exports[`Input > snapshot: no props 1`] = `
39
39
 
40
40
  exports[`Input > snapshot: value prop 1`] = `
41
41
  <div
42
- class="ucl-uikit-fileinput css-1ubxuij"
42
+ class="ucl-uikit-fileinput css-1aikphx"
43
43
  >
44
44
  <label
45
- class="css-1lc9iag"
45
+ class="css-iffx76"
46
46
  for="file-input-1"
47
47
  >
48
48
  <svg
@@ -40,12 +40,16 @@ const LegacyFooter = ({
40
40
  const copyrightYear = new Date().getFullYear();
41
41
 
42
42
  const [theme] = useTheme();
43
+ const footerTypography = theme.typography.body.sm;
43
44
 
44
45
  const baseStyle = css`
45
46
  background-color: ${theme.color.neutral.grey90};
46
47
  color: ${theme.color.text.inverted};
47
- font-family: ${theme.font.family.primary};
48
- font-weight: 300;
48
+ font-family: ${footerTypography.fontFamily};
49
+ font-feature-settings: ${footerTypography.fontSettings};
50
+ font-size: ${footerTypography.fontSize}px;
51
+ font-weight: ${footerTypography.fontWeight};
52
+ line-height: ${footerTypography.lineHeight}%;
49
53
  padding: ${theme.padding.p40} 0 ${theme.padding.p40};
50
54
  `;
51
55
 
@@ -102,7 +106,11 @@ const LegacyFooter = ({
102
106
  color: ${theme.color.neutral.grey20};
103
107
  display: flex;
104
108
  flex-direction: column;
105
- font-size: ${theme.font.size.f14};
109
+ font-family: ${footerTypography.fontFamily};
110
+ font-feature-settings: ${footerTypography.fontSettings};
111
+ font-size: ${footerTypography.fontSize}px;
112
+ font-weight: ${footerTypography.fontWeight};
113
+ line-height: ${footerTypography.lineHeight}%;
106
114
 
107
115
  @media screen and (min-width: ${theme.breakpoints.tablet}px) {
108
116
  flex-direction: row;
@@ -148,6 +156,11 @@ const LegacyFooter = ({
148
156
  padding: ${theme.padding.p8} 0;
149
157
  display: flex;
150
158
  flex-direction: column;
159
+ font-family: ${footerTypography.fontFamily};
160
+ font-feature-settings: ${footerTypography.fontSettings};
161
+ font-size: ${footerTypography.fontSize}px;
162
+ font-weight: ${footerTypography.fontWeight};
163
+ line-height: ${footerTypography.lineHeight}%;
151
164
 
152
165
  @media screen and (min-width: ${theme.breakpoints.tablet}px) {
153
166
  flex-direction: row;
@@ -1,6 +1,7 @@
1
1
  import { memo, HTMLAttributes } from 'react';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { useTheme } from '../../theme';
4
+ import Heading from '../Heading';
4
5
 
5
6
  export const NAME = 'ucl-uikit-footer__column';
6
7
 
@@ -32,9 +33,6 @@ const FooterColumn = ({
32
33
 
33
34
  const headingStyle = css`
34
35
  margin: 0 0 ${theme.margin.m12};
35
- font-family: ${theme.font.family.primary};
36
- font-weight: 600;
37
- font-size: ${theme.font.size.f20};
38
36
  `;
39
37
 
40
38
  return (
@@ -43,7 +41,14 @@ const FooterColumn = ({
43
41
  data-testid={testId}
44
42
  {...props}
45
43
  >
46
- <h3 className={headingStyle}>{heading}</h3>
44
+ <Heading
45
+ as='h3'
46
+ level='xs'
47
+ margins={false}
48
+ className={headingStyle}
49
+ >
50
+ {heading}
51
+ </Heading>
47
52
 
48
53
  {children}
49
54
  </div>
@@ -2,7 +2,7 @@
2
2
 
3
3
  exports[`Footer > snapshot: footer links provided 1`] = `
4
4
  <footer
5
- class="ucl-uikit-footer css-mq639a"
5
+ class="ucl-uikit-footer css-1if83z3"
6
6
  data-testid="ucl-uikit-footer"
7
7
  >
8
8
  <div
@@ -227,7 +227,7 @@ exports[`Footer > snapshot: footer links provided 1`] = `
227
227
  role="separator"
228
228
  />
229
229
  <div
230
- class="css-1ah386p"
230
+ class="css-s55e1t"
231
231
  >
232
232
  <span
233
233
  class="css-13yf1i2"
@@ -249,7 +249,7 @@ exports[`Footer > snapshot: footer links provided 1`] = `
249
249
  </span>
250
250
  </div>
251
251
  <div
252
- class="css-1k5afze"
252
+ class="css-ho31tg"
253
253
  >
254
254
  <a
255
255
  class="css-16lix8i"
@@ -306,7 +306,7 @@ exports[`Footer > snapshot: footer links provided 1`] = `
306
306
 
307
307
  exports[`Footer > snapshot: nav links 1`] = `
308
308
  <footer
309
- class="ucl-uikit-footer css-mq639a"
309
+ class="ucl-uikit-footer css-1if83z3"
310
310
  data-testid="ucl-uikit-footer"
311
311
  >
312
312
  <div
@@ -320,7 +320,8 @@ exports[`Footer > snapshot: nav links 1`] = `
320
320
  data-testid="ucl-uikit-footer__column"
321
321
  >
322
322
  <h3
323
- class="css-7bhh44"
323
+ class="ucl-uikit-heading css-sy55ia"
324
+ data-testid="ucl-uikit-heading"
324
325
  >
325
326
  Category 1
326
327
  </h3>
@@ -344,7 +345,8 @@ exports[`Footer > snapshot: nav links 1`] = `
344
345
  data-testid="ucl-uikit-footer__column"
345
346
  >
346
347
  <h3
347
- class="css-7bhh44"
348
+ class="ucl-uikit-heading css-sy55ia"
349
+ data-testid="ucl-uikit-heading"
348
350
  >
349
351
  Category 2
350
352
  </h3>
@@ -580,7 +582,7 @@ exports[`Footer > snapshot: nav links 1`] = `
580
582
  role="separator"
581
583
  />
582
584
  <div
583
- class="css-1ah386p"
585
+ class="css-s55e1t"
584
586
  >
585
587
  <span
586
588
  class="css-13yf1i2"
@@ -602,7 +604,7 @@ exports[`Footer > snapshot: nav links 1`] = `
602
604
  </span>
603
605
  </div>
604
606
  <div
605
- class="css-1k5afze"
607
+ class="css-ho31tg"
606
608
  >
607
609
  <a
608
610
  class="css-16lix8i"
@@ -659,7 +661,7 @@ exports[`Footer > snapshot: nav links 1`] = `
659
661
 
660
662
  exports[`Footer > snapshot: no nav links 1`] = `
661
663
  <footer
662
- class="ucl-uikit-footer css-mq639a"
664
+ class="ucl-uikit-footer css-1if83z3"
663
665
  data-testid="ucl-uikit-footer"
664
666
  >
665
667
  <div
@@ -884,7 +886,7 @@ exports[`Footer > snapshot: no nav links 1`] = `
884
886
  role="separator"
885
887
  />
886
888
  <div
887
- class="css-1ah386p"
889
+ class="css-s55e1t"
888
890
  >
889
891
  <span
890
892
  class="css-13yf1i2"
@@ -906,7 +908,7 @@ exports[`Footer > snapshot: no nav links 1`] = `
906
908
  </span>
907
909
  </div>
908
910
  <div
909
- class="css-1k5afze"
911
+ class="css-ho31tg"
910
912
  >
911
913
  <a
912
914
  class="css-16lix8i"
@@ -18,6 +18,8 @@ const BackToTop = ({
18
18
  ...props
19
19
  }: BackToTopProps) => {
20
20
  const [theme] = useTheme();
21
+ const smallTypography = theme.typography.body.sm;
22
+ const mediumTypography = theme.typography.body.md;
21
23
 
22
24
  const handleBackToTopButtonClick = () => {
23
25
  scrollToTop();
@@ -47,9 +49,11 @@ const BackToTop = ({
47
49
  background-color: transparent;
48
50
  border: none;
49
51
  color: ${theme.colour.text.brandInverse};
50
- font-family: ${theme.typography.body.md.fontFamily};
51
- font-size: 14px;
52
- line-height: ${theme.typography.body.md.lineHeight}%;
52
+ font-family: ${smallTypography.fontFamily};
53
+ font-feature-settings: ${smallTypography.fontSettings};
54
+ font-size: ${smallTypography.fontSize}px;
55
+ font-weight: ${smallTypography.fontWeight};
56
+ line-height: ${smallTypography.lineHeight}%;
53
57
  cursor: pointer;
54
58
  display: inline-flex;
55
59
  align-items: center;
@@ -60,7 +64,11 @@ const BackToTop = ({
60
64
  }
61
65
 
62
66
  @media screen and (min-width: ${theme.breakpoints.desktop}px) {
63
- font-size: 16px;
67
+ font-family: ${mediumTypography.fontFamily};
68
+ font-feature-settings: ${mediumTypography.fontSettings};
69
+ font-size: ${mediumTypography.fontSize}px;
70
+ font-weight: ${mediumTypography.fontWeight};
71
+ line-height: ${mediumTypography.lineHeight}%;
64
72
  }
65
73
  `;
66
74
 
@@ -26,8 +26,10 @@ const FooterColumn = ({
26
26
  align-items: start;
27
27
  gap: 16px;
28
28
  font-family: ${theme.typography.body.md.fontFamily};
29
+ font-feature-settings: ${theme.typography.body.md.fontSettings};
29
30
  font-weight: ${theme.typography.body.md.fontWeight};
30
31
  font-size: ${theme.typography.body.md.fontSize}px;
32
+ line-height: ${theme.typography.body.md.lineHeight}%;
31
33
 
32
34
  :not(:first-child) {
33
35
  margin-top: ${theme.margin.m24};
@@ -58,8 +60,10 @@ const FooterColumn = ({
58
60
  margin: 0;
59
61
  color: ${theme.colour.text.brandInverse};
60
62
  font-family: ${theme.typography.body.mdSemibold.fontFamily};
63
+ font-feature-settings: ${theme.typography.body.mdSemibold.fontSettings};
61
64
  font-weight: ${theme.typography.body.mdSemibold.fontWeight};
62
65
  font-size: ${theme.typography.body.mdSemibold.fontSize}px;
66
+ line-height: ${theme.typography.body.mdSemibold.lineHeight}%;
63
67
  `;
64
68
 
65
69
  return (
@@ -19,15 +19,17 @@ const FooterNavLink = ({
19
19
  ...props
20
20
  }: FooterNavLinkProps) => {
21
21
  const [theme] = useTheme();
22
+ const smallTypography = theme.typography.body.sm;
23
+ const mediumTypography = theme.typography.body.md;
22
24
 
23
25
  const baseStyle = css`
24
26
  text-decoration: none;
25
27
  color: ${theme.colour.text.brandInverse};
26
- font-family: ${theme.typography.body.md.fontFamily};
27
- font-size: 14px;
28
- line-height: ${
29
- theme.typography.body.md.lineHeight
30
- }%; // todo: change foundations lib to use non-percent number
28
+ font-family: ${smallTypography.fontFamily};
29
+ font-feature-settings: ${smallTypography.fontSettings};
30
+ font-size: ${smallTypography.fontSize}px;
31
+ font-weight: ${smallTypography.fontWeight};
32
+ line-height: ${smallTypography.lineHeight}%;
31
33
  transition: color 0.2s ease-out;
32
34
 
33
35
  &:focus-visible {
@@ -45,7 +47,11 @@ const FooterNavLink = ({
45
47
  }
46
48
 
47
49
  @media screen and (min-width: ${theme.breakpoints.desktop}px) {
48
- font-size: 16px;
50
+ font-family: ${mediumTypography.fontFamily};
51
+ font-feature-settings: ${mediumTypography.fontSettings};
52
+ font-size: ${mediumTypography.fontSize}px;
53
+ font-weight: ${mediumTypography.fontWeight};
54
+ line-height: ${mediumTypography.lineHeight}%;
49
55
  }
50
56
  `;
51
57
 
@@ -30,6 +30,7 @@ const LegalAndCopyright = ({
30
30
  const copyrightYear = new Date().getFullYear();
31
31
 
32
32
  const [theme] = useTheme();
33
+ const smallTypography = theme.typography.body.sm;
33
34
 
34
35
  const baseStyle = css`
35
36
  margin-top: ${theme.margin.m16};
@@ -49,9 +50,11 @@ const LegalAndCopyright = ({
49
50
 
50
51
  const linksStyle = css`
51
52
  color: ${theme.colour.text.brandInverseSecondary};
52
- font-family: ${theme.typography.body.md.fontFamily};
53
- font-size: 14px;
54
- line-height: 1.4;
53
+ font-family: ${smallTypography.fontFamily};
54
+ font-feature-settings: ${smallTypography.fontSettings};
55
+ font-size: ${smallTypography.fontSize}px;
56
+ font-weight: ${smallTypography.fontWeight};
57
+ line-height: ${smallTypography.lineHeight}%;
55
58
  display: flex;
56
59
  flex-wrap: wrap;
57
60
  gap: 16px;
@@ -80,9 +83,11 @@ const LegalAndCopyright = ({
80
83
  margin-top: ${theme.margin.m24};
81
84
  color: ${theme.colour.text.brandInverse};
82
85
  opacity: 0.6; // todo
83
- font-family: ${theme.typography.body.md.fontFamily};
84
- line-height: ${theme.typography.body.md.lineHeight}%;
85
- font-size: 14px;
86
+ font-family: ${smallTypography.fontFamily};
87
+ font-feature-settings: ${smallTypography.fontSettings};
88
+ font-size: ${smallTypography.fontSize}px;
89
+ font-weight: ${smallTypography.fontWeight};
90
+ line-height: ${smallTypography.lineHeight}%;
86
91
 
87
92
  @media screen and (min-width: ${theme.breakpoints.desktopLarge}px) {
88
93
  margin-top: 0;