uikit-react-public 0.32.5 → 0.36.1

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.
@@ -0,0 +1,260 @@
1
+ import { tokens } from 'design-system-foundations-public';
2
+ import tokenToHex from '../../utils/addAlphaToHex';
3
+
4
+ const { dark: darkThemeTokens } = tokens;
5
+
6
+ // UCL Dark Theme Colours
7
+
8
+ const bg = {
9
+ default: tokenToHex(darkThemeTokens.colour.bg.default.$value),
10
+ brand: tokenToHex(darkThemeTokens.colour.bg.brand.$value),
11
+ inverse: tokenToHex(darkThemeTokens.colour.bg.inverse.$value),
12
+ inversePrimary: tokenToHex(
13
+ darkThemeTokens.colour.bg['inverse-primary'].$value
14
+ ),
15
+ };
16
+
17
+ const border = {
18
+ default: tokenToHex(darkThemeTokens.colour.border.default.$value),
19
+ brand: tokenToHex(darkThemeTokens.colour.border.brand.$value),
20
+ brandPrimary: tokenToHex(
21
+ darkThemeTokens.colour.border['brand-primary'].$value
22
+ ),
23
+ brandHover: tokenToHex(darkThemeTokens.colour.border['brand-hover'].$value),
24
+ brandSubtle: tokenToHex(darkThemeTokens.colour.border['brand-subtle'].$value),
25
+ primary: tokenToHex(darkThemeTokens.colour.border.primary.$value),
26
+ secondary: tokenToHex(darkThemeTokens.colour.border.secondary.$value),
27
+ tertiary: tokenToHex(darkThemeTokens.colour.border.tertiary.$value),
28
+ subtle: tokenToHex(darkThemeTokens.colour.border.subtle.$value),
29
+ disabled: tokenToHex(darkThemeTokens.colour.border.disabled.$value),
30
+ inverse: tokenToHex(darkThemeTokens.colour.border.inverse.$value),
31
+ brandInverse: tokenToHex(
32
+ darkThemeTokens.colour.border['brand-inverse'].$value
33
+ ),
34
+ brandInverseSecondary: tokenToHex(
35
+ darkThemeTokens.colour.border['brand-inverse-secondary'].$value
36
+ ),
37
+ brandInverseSecondaryHover: tokenToHex(
38
+ darkThemeTokens.colour.border['brand-inverse-secondary-hover'].$value
39
+ ),
40
+ brandInverseSecondarySelected: tokenToHex(
41
+ darkThemeTokens.colour.border['brand-inverse-secondary-selected'].$value
42
+ ),
43
+ focus: tokenToHex(darkThemeTokens.colour.border.focus.$value),
44
+ success: tokenToHex(darkThemeTokens.colour.border.success.$value),
45
+ critical: tokenToHex(darkThemeTokens.colour.border.critical.$value),
46
+ warning: tokenToHex(darkThemeTokens.colour.border.warning.$value),
47
+ };
48
+
49
+ const fill = {
50
+ default: tokenToHex(darkThemeTokens.colour.fill.default.$value),
51
+ primary: tokenToHex(darkThemeTokens.colour.fill.primary.$value),
52
+ subtle: tokenToHex(darkThemeTokens.colour.fill.subtle.$value),
53
+ brand: tokenToHex(darkThemeTokens.colour.fill.brand.$value),
54
+ brandSubtle: tokenToHex(darkThemeTokens.colour.fill['brand-subtle'].$value),
55
+ brandHover: tokenToHex(darkThemeTokens.colour.fill['brand-hover'].$value),
56
+ brandPressed: tokenToHex(darkThemeTokens.colour.fill['brand-pressed'].$value),
57
+ brandSubtleSelected: tokenToHex(
58
+ darkThemeTokens.colour.fill['brand-subtle-selected'].$value
59
+ ),
60
+ brandSubtleHover: tokenToHex(
61
+ darkThemeTokens.colour.fill['brand-subtle-hover'].$value
62
+ ),
63
+ brandPrimary: tokenToHex(darkThemeTokens.colour.fill['brand-primary'].$value),
64
+ disabled: tokenToHex(darkThemeTokens.colour.fill.disabled.$value),
65
+ inverse: tokenToHex(darkThemeTokens.colour.fill.inverse.$value),
66
+ brandInverseSecondary: tokenToHex(
67
+ darkThemeTokens.colour.fill['brand-inverse-secondary'].$value
68
+ ),
69
+ inverseHover: tokenToHex(darkThemeTokens.colour.fill['inverse-hover'].$value),
70
+ critical: tokenToHex(darkThemeTokens.colour.fill.critical.$value),
71
+ criticalHover: tokenToHex(
72
+ darkThemeTokens.colour.fill['critical-hover'].$value
73
+ ),
74
+ criticalSelected: tokenToHex(
75
+ darkThemeTokens.colour.fill['critical-selected'].$value
76
+ ),
77
+ criticalPressed: tokenToHex(
78
+ darkThemeTokens.colour.fill['critical-pressed'].$value
79
+ ),
80
+ criticalSubtle: tokenToHex(
81
+ darkThemeTokens.colour.fill['critical-subtle'].$value
82
+ ),
83
+ caution: tokenToHex(darkThemeTokens.colour.fill.caution.$value),
84
+ cautionHover: tokenToHex(darkThemeTokens.colour.fill['caution-hover'].$value),
85
+ cautionSelected: tokenToHex(
86
+ darkThemeTokens.colour.fill['caution-selected'].$value
87
+ ),
88
+ cautionPressed: tokenToHex(
89
+ darkThemeTokens.colour.fill['caution-pressed'].$value
90
+ ),
91
+ cautionSubtle: tokenToHex(
92
+ darkThemeTokens.colour.fill['caution-subtle'].$value
93
+ ),
94
+ warningSubtle: tokenToHex(
95
+ darkThemeTokens.colour.fill['warning-subtle'].$value
96
+ ),
97
+ success: tokenToHex(darkThemeTokens.colour.fill.success.$value),
98
+ successSubtle: tokenToHex(
99
+ darkThemeTokens.colour.fill['success-subtle'].$value
100
+ ),
101
+ };
102
+
103
+ const icon = {
104
+ default: tokenToHex(darkThemeTokens.colour.icon.default.$value),
105
+ hover: tokenToHex(darkThemeTokens.colour.icon.hover.$value),
106
+ secondary: tokenToHex(darkThemeTokens.colour.icon.secondary.$value),
107
+ tertiary: tokenToHex(darkThemeTokens.colour.icon.tertiary.$value),
108
+ disabled: tokenToHex(darkThemeTokens.colour.icon.disabled.$value),
109
+ disabledOnBgFill: tokenToHex(
110
+ darkThemeTokens.colour.icon['disabled-on-bg-fill'].$value
111
+ ),
112
+ brand: tokenToHex(darkThemeTokens.colour.icon.brand.$value),
113
+ brandHover: tokenToHex(darkThemeTokens.colour.icon['brand-hover'].$value),
114
+ brandPressed: tokenToHex(darkThemeTokens.colour.icon['brand-pressed'].$value),
115
+ brandSelectedOnBgFill: tokenToHex(
116
+ darkThemeTokens.colour.icon['brand-selected-on-bg-fill'].$value
117
+ ),
118
+ visited: tokenToHex(darkThemeTokens.colour.icon.visited.$value),
119
+ brandPrimary: tokenToHex(darkThemeTokens.colour.icon['brand-primary'].$value),
120
+ brandInverse: tokenToHex(darkThemeTokens.colour.icon['brand-inverse'].$value),
121
+ inverse: tokenToHex(darkThemeTokens.colour.icon.inverse.$value),
122
+ brandInverseSecondary: tokenToHex(
123
+ darkThemeTokens.colour.icon['brand-inverse-secondary'].$value
124
+ ),
125
+ brandInverseSecondaryHover: tokenToHex(
126
+ darkThemeTokens.colour.icon['brand-inverse-secondary-hover'].$value
127
+ ),
128
+ brandInverseSecondarySelected: tokenToHex(
129
+ darkThemeTokens.colour.icon['brand-inverse-secondary-selected'].$value
130
+ ),
131
+ inverseTertiary: tokenToHex(
132
+ darkThemeTokens.colour.icon['inverse-tertiary'].$value
133
+ ),
134
+ inverseDisabled: tokenToHex(
135
+ darkThemeTokens.colour.icon['inverse-disabled'].$value
136
+ ),
137
+ critical: tokenToHex(darkThemeTokens.colour.icon.critical.$value),
138
+ criticalOnBgFill: tokenToHex(
139
+ darkThemeTokens.colour.icon['critical-on-bg-fill'].$value
140
+ ),
141
+ success: tokenToHex(darkThemeTokens.colour.icon.success.$value),
142
+ successOnBgFill: tokenToHex(
143
+ darkThemeTokens.colour.icon['success-on-bg-fill'].$value
144
+ ),
145
+ caution: tokenToHex(darkThemeTokens.colour.icon.caution.$value),
146
+ cautionSubtle: tokenToHex(
147
+ darkThemeTokens.colour.icon['caution-subtle'].$value
148
+ ),
149
+ warning: tokenToHex(darkThemeTokens.colour.icon.warning.$value),
150
+ warningOnBgFill: tokenToHex(
151
+ darkThemeTokens.colour.icon['warning-on-bg-fill'].$value
152
+ ),
153
+ };
154
+
155
+ const surface = {
156
+ default: tokenToHex(darkThemeTokens.colour.surface.default.$value),
157
+ primary: tokenToHex(darkThemeTokens.colour.surface.primary.$value),
158
+ secondary: tokenToHex(darkThemeTokens.colour.surface.secondary.$value),
159
+ brand: tokenToHex(darkThemeTokens.colour.surface.brand.$value),
160
+ brandHover: tokenToHex(darkThemeTokens.colour.surface['brand-hover'].$value),
161
+ brandSelected: tokenToHex(
162
+ darkThemeTokens.colour.surface['brand-selected'].$value
163
+ ),
164
+ brandSecondary: tokenToHex(
165
+ darkThemeTokens.colour.surface['brand-secondary'].$value
166
+ ),
167
+ brandTertiary: tokenToHex(
168
+ darkThemeTokens.colour.surface['brand-tertiary'].$value
169
+ ),
170
+ warning: tokenToHex(darkThemeTokens.colour.surface.warning.$value),
171
+ success: tokenToHex(darkThemeTokens.colour.surface.success.$value),
172
+ critical: tokenToHex(darkThemeTokens.colour.surface.critical.$value),
173
+ inverseBrand: tokenToHex(
174
+ darkThemeTokens.colour.surface['inverse-brand'].$value
175
+ ),
176
+ inverseBrandPrimary: tokenToHex(
177
+ darkThemeTokens.colour.surface['inverse-brand-primary'].$value
178
+ ),
179
+ backdrop: tokenToHex(darkThemeTokens.colour.surface.backdrop.$value),
180
+ };
181
+
182
+ const text = {
183
+ default: tokenToHex(darkThemeTokens.colour.text.default.$value),
184
+ secondary: tokenToHex(darkThemeTokens.colour.text.secondary.$value),
185
+ tertiary: tokenToHex(darkThemeTokens.colour.text.tertiary.$value),
186
+ disabled: tokenToHex(darkThemeTokens.colour.text.disabled.$value),
187
+ inverse: tokenToHex(darkThemeTokens.colour.text.inverse.$value),
188
+ onBgFillDisabled: tokenToHex(
189
+ darkThemeTokens.colour.text['on-bg-fill-disabled'].$value
190
+ ),
191
+ brand: tokenToHex(darkThemeTokens.colour.text.brand.$value),
192
+ brandOnLight: tokenToHex(
193
+ darkThemeTokens.colour.text['brand-on-light'].$value
194
+ ),
195
+ brandAccent: tokenToHex(darkThemeTokens.colour.text['brand-accent'].$value),
196
+ brandHover: tokenToHex(darkThemeTokens.colour.text['brand-hover'].$value),
197
+ brandPressed: tokenToHex(darkThemeTokens.colour.text['brand-pressed'].$value),
198
+ brandInverse: tokenToHex(darkThemeTokens.colour.text['brand-inverse'].$value),
199
+ brandInverseSecondary: tokenToHex(
200
+ darkThemeTokens.colour.text['brand-inverse-secondary'].$value
201
+ ),
202
+ brandInverseSecondaryHover: tokenToHex(
203
+ darkThemeTokens.colour.text['brand-inverse-secondary-hover'].$value
204
+ ),
205
+ brandInverseSecondarySelected: tokenToHex(
206
+ darkThemeTokens.colour.text['brand-inverse-secondary-selected'].$value
207
+ ),
208
+ brandPrimary: tokenToHex(darkThemeTokens.colour.text['brand-primary'].$value),
209
+ critical: tokenToHex(darkThemeTokens.colour.text.critical.$value),
210
+ cautionSubtle: tokenToHex(
211
+ darkThemeTokens.colour.text['caution-subtle'].$value
212
+ ),
213
+ caution: tokenToHex(darkThemeTokens.colour.text.caution.$value),
214
+ success: tokenToHex(darkThemeTokens.colour.text.success.$value),
215
+ warningOnBgFill: tokenToHex(
216
+ darkThemeTokens.colour.text['warning-on-bg-fill'].$value
217
+ ),
218
+ };
219
+
220
+ const link = {
221
+ default: tokenToHex(darkThemeTokens.colour.link.default.$value),
222
+ brand: tokenToHex(darkThemeTokens.colour.link.brand.$value),
223
+ brandHover: tokenToHex(darkThemeTokens.colour.link['brand-hover'].$value),
224
+ visited: tokenToHex(darkThemeTokens.colour.link.visited.$value),
225
+ primary: tokenToHex(darkThemeTokens.colour.link.primary.$value),
226
+ primaryHover: tokenToHex(darkThemeTokens.colour.link['primary-hover'].$value),
227
+ disabled: tokenToHex(darkThemeTokens.colour.link.disabled.$value),
228
+ inverse: tokenToHex(darkThemeTokens.colour.link.inverse.$value),
229
+ inverseVisited: tokenToHex(
230
+ darkThemeTokens.colour.link['inverse-visited'].$value
231
+ ),
232
+ inverseDisabled: tokenToHex(
233
+ darkThemeTokens.colour.link['inverse-disabled'].$value
234
+ ),
235
+ inverseSecondary: tokenToHex(
236
+ darkThemeTokens.colour.link['inverse-secondary'].$value
237
+ ),
238
+ inverseTertiary: tokenToHex(
239
+ darkThemeTokens.colour.link['inverse-tertiary'].$value
240
+ ),
241
+ };
242
+
243
+ const speciality = {
244
+ inputDefault: tokenToHex(
245
+ darkThemeTokens.colour.speciality['input-default'].$value
246
+ ),
247
+ };
248
+
249
+ const colour = {
250
+ bg,
251
+ border,
252
+ fill,
253
+ icon,
254
+ surface,
255
+ text,
256
+ link,
257
+ speciality,
258
+ };
259
+
260
+ export default colour;
@@ -0,0 +1,38 @@
1
+ import defaultTheme, { ThemeType } from '../original/defaultTheme';
2
+ import { typography, darkPrimitiveColour } from '../common/themeCommon';
3
+ import colour from './darkColour';
4
+
5
+ // UCL Dark Theme
6
+
7
+ const darkTheme: ThemeType = {
8
+ // new
9
+ primitiveColour:
10
+ darkPrimitiveColour as unknown as ThemeType['primitiveColour'],
11
+ colour,
12
+ typography,
13
+
14
+ // todo: depcrecate
15
+ color: defaultTheme.color,
16
+ thickness: defaultTheme.thickness,
17
+ width: defaultTheme.width,
18
+ height: defaultTheme.height,
19
+ margin: defaultTheme.margin,
20
+ padding: defaultTheme.padding,
21
+ radius: defaultTheme.radius,
22
+ border: defaultTheme.border,
23
+ outline: defaultTheme.outline,
24
+ font: defaultTheme.font,
25
+ boxShadow: {
26
+ ...defaultTheme.boxShadow,
27
+ focus: `0 0 0 2px ${colour.border.inverse}, 0 0 0 4px ${colour.border.brand}`,
28
+ },
29
+ breakpoints: defaultTheme.breakpoints,
30
+ mq: defaultTheme.mq,
31
+
32
+ // For ease of use, margin and padding are added at the top level
33
+ // Usage: margin-top: ${theme.m16};
34
+ ...defaultTheme.margin,
35
+ ...defaultTheme.padding,
36
+ };
37
+
38
+ export default darkTheme;
@@ -1,5 +1,6 @@
1
1
  export { default as theme } from './original/defaultTheme';
2
2
  export { default as lightTheme } from './light/lightTheme';
3
+ export { default as darkTheme } from './dark/darkTheme';
3
4
  export type {
4
5
  ThemeType,
5
6
  DisplayColoursType,
@@ -17,6 +17,9 @@ const bg = {
17
17
  const border = {
18
18
  default: tokenToHex(lightThemeTokens.colour.border.default.$value),
19
19
  brand: tokenToHex(lightThemeTokens.colour.border.brand.$value),
20
+ brandPrimary: tokenToHex(
21
+ lightThemeTokens.colour.border['brand-primary'].$value
22
+ ), // added - commit a6fc429 - 14 Jul 2026
20
23
  brandHover: tokenToHex(lightThemeTokens.colour.border['brand-hover'].$value),
21
24
  brandSubtle: tokenToHex(
22
25
  lightThemeTokens.colour.border['brand-subtle'].$value
@@ -33,6 +36,12 @@ const border = {
33
36
  brandInverseSecondary: tokenToHex(
34
37
  lightThemeTokens.colour.border['brand-inverse-secondary'].$value
35
38
  ),
39
+ brandInverseSecondaryHover: tokenToHex(
40
+ lightThemeTokens.colour.border['brand-inverse-secondary-hover'].$value // added - commit a6fc429 - 14 Jul 2026
41
+ ),
42
+ brandInverseSecondarySelected: tokenToHex(
43
+ lightThemeTokens.colour.border['brand-inverse-secondary-selected'].$value // added - commit a6fc429 - 14 Jul 2026
44
+ ),
36
45
  focus: tokenToHex(lightThemeTokens.colour.border.focus.$value),
37
46
  success: tokenToHex(lightThemeTokens.colour.border.success.$value),
38
47
  critical: tokenToHex(lightThemeTokens.colour.border.critical.$value),
@@ -41,8 +50,10 @@ const border = {
41
50
 
42
51
  const fill = {
43
52
  default: tokenToHex(lightThemeTokens.colour.fill.default.$value),
44
- hover: tokenToHex(lightThemeTokens.colour.fill.hover.$value),
53
+ primary: tokenToHex(lightThemeTokens.colour.fill.primary.$value), // replace hover (with colour change) - commit 1504e2b - 14 Jul 2026
54
+ subtle: tokenToHex(lightThemeTokens.colour.fill.subtle.$value), // added - commit 1504e2b - 14 Jul 2026
45
55
  brand: tokenToHex(lightThemeTokens.colour.fill.brand.$value),
56
+ brandSubtle: tokenToHex(lightThemeTokens.colour.fill['brand-subtle'].$value), // replace brandSubtleSelected - commit 1504e2b - 14 Jul 2026
46
57
  brandHover: tokenToHex(lightThemeTokens.colour.fill['brand-hover'].$value),
47
58
  brandPressed: tokenToHex(
48
59
  lightThemeTokens.colour.fill['brand-pressed'].$value
@@ -74,17 +85,29 @@ const fill = {
74
85
  criticalPressed: tokenToHex(
75
86
  lightThemeTokens.colour.fill['critical-pressed'].$value
76
87
  ),
77
- warning: tokenToHex(lightThemeTokens.colour.fill.warning.$value),
78
- warningHover: tokenToHex(
79
- lightThemeTokens.colour.fill['warning-hover'].$value
88
+ criticalSubtle: tokenToHex(
89
+ lightThemeTokens.colour.fill['critical-subtle'].$value
90
+ ), // replace warning - commit 1504e2b - 14 Jul 2026
91
+ caution: tokenToHex(lightThemeTokens.colour.fill.caution.$value), // added - commit 1504e2b - 14 Jul 2026
92
+ cautionHover: tokenToHex(
93
+ lightThemeTokens.colour.fill['caution-hover'].$value // replace cautionHover - commit 1504e2b - 14 Jul 2026
94
+ ),
95
+ cautionSelected: tokenToHex(
96
+ lightThemeTokens.colour.fill['caution-selected'].$value // replace warningSelected - commit 1504e2b - 14 Jul 2026
80
97
  ),
81
- warningSelected: tokenToHex(
82
- lightThemeTokens.colour.fill['warning-selected'].$value
98
+ cautionPressed: tokenToHex(
99
+ lightThemeTokens.colour.fill['caution-pressed'].$value // replace warningPressed - commit 1504e2b - 14 Jul 2026
83
100
  ),
84
- warningPressed: tokenToHex(
85
- lightThemeTokens.colour.fill['warning-pressed'].$value
101
+ cautionSubtle: tokenToHex(
102
+ lightThemeTokens.colour.fill['caution-subtle'].$value
103
+ ),
104
+ warningSubtle: tokenToHex(
105
+ lightThemeTokens.colour.fill['warning-subtle'].$value
86
106
  ),
87
107
  success: tokenToHex(lightThemeTokens.colour.fill.success.$value),
108
+ successSubtle: tokenToHex(
109
+ lightThemeTokens.colour.fill['success-subtle'].$value
110
+ ),
88
111
  };
89
112
 
90
113
  const icon = {
@@ -98,6 +121,9 @@ const icon = {
98
121
  ),
99
122
  brand: tokenToHex(lightThemeTokens.colour.icon.brand.$value),
100
123
  brandHover: tokenToHex(lightThemeTokens.colour.icon['brand-hover'].$value),
124
+ brandPressed: tokenToHex(
125
+ lightThemeTokens.colour.icon['brand-pressed'].$value
126
+ ), // added - commit 8458667 - 14 Jul 2026
101
127
  brandSelectedOnBgFill: tokenToHex(
102
128
  lightThemeTokens.colour.icon['brand-selected-on-bg-fill'].$value
103
129
  ),
@@ -105,16 +131,22 @@ const icon = {
105
131
  brandPrimary: tokenToHex(
106
132
  lightThemeTokens.colour.icon['brand-primary'].$value
107
133
  ),
108
- brandInverted: tokenToHex(
109
- lightThemeTokens.colour.icon['brand-inverted'].$value
134
+ brandInverse: tokenToHex(
135
+ lightThemeTokens.colour.icon['brand-inverse'].$value // renamed from brandInverted - commit 8458667 - 14 Jul 2026
110
136
  ),
111
137
  inverse: tokenToHex(lightThemeTokens.colour.icon.inverse.$value),
112
- inverseHover: tokenToHex(
113
- lightThemeTokens.colour.icon['inverse-hover'].$value
114
- ),
138
+ // inverseHover: tokenToHex(
139
+ // lightThemeTokens.colour.icon['inverse-hover'].$value // deleted - commit 8458667 - 14 Jul 2026
140
+ // ),
115
141
  brandInverseSecondary: tokenToHex(
116
142
  lightThemeTokens.colour.icon['brand-inverse-secondary'].$value
117
143
  ),
144
+ brandInverseSecondaryHover: tokenToHex(
145
+ lightThemeTokens.colour.icon['brand-inverse-secondary-hover'].$value // added - commit 8458667 - 14 Jul 2026
146
+ ),
147
+ brandInverseSecondarySelected: tokenToHex(
148
+ lightThemeTokens.colour.icon['brand-inverse-secondary-selected'].$value // added - commit 8458667 - 14 Jul 2026
149
+ ),
118
150
  inverseTertiary: tokenToHex(
119
151
  lightThemeTokens.colour.icon['inverse-tertiary'].$value
120
152
  ),
@@ -129,6 +161,10 @@ const icon = {
129
161
  successOnBgFill: tokenToHex(
130
162
  lightThemeTokens.colour.icon['success-on-bg-fill'].$value
131
163
  ),
164
+ caution: tokenToHex(lightThemeTokens.colour.icon.caution.$value), // added - commit 8458667 - 14 Jul 2026
165
+ cautionSubtle: tokenToHex(
166
+ lightThemeTokens.colour.icon['caution-subtle'].$value
167
+ ), // added - commit 8458667 - 14 Jul 2026
132
168
  warning: tokenToHex(lightThemeTokens.colour.icon.warning.$value),
133
169
  warningOnBgFill: tokenToHex(
134
170
  lightThemeTokens.colour.icon['warning-on-bg-fill'].$value
@@ -144,13 +180,19 @@ const surface = {
144
180
  brandSelected: tokenToHex(
145
181
  lightThemeTokens.colour.surface['brand-selected'].$value
146
182
  ),
183
+ brandSecondary: tokenToHex(
184
+ lightThemeTokens.colour.surface['brand-secondary'].$value
185
+ ), // added - commit c830d07 - 14 Jul 2026
186
+ brandTertiary: tokenToHex(
187
+ lightThemeTokens.colour.surface['brand-tertiary'].$value
188
+ ), // added - commit c830d07 - 14 Jul 2026
147
189
  warning: tokenToHex(lightThemeTokens.colour.surface.warning.$value),
148
190
  success: tokenToHex(lightThemeTokens.colour.surface.success.$value),
149
191
  critical: tokenToHex(lightThemeTokens.colour.surface.critical.$value),
150
- hover: tokenToHex(lightThemeTokens.colour.surface.hover.$value),
151
- selected: tokenToHex(lightThemeTokens.colour.surface.selected.$value),
152
- disabled: tokenToHex(lightThemeTokens.colour.surface.disabled.$value),
153
- tertiary: tokenToHex(lightThemeTokens.colour.surface.tertiary.$value),
192
+ // hover: tokenToHex(lightThemeTokens.colour.surface.hover.$value), // deleted - commit c830d07 - 14 Jul 2026
193
+ // selected: tokenToHex(lightThemeTokens.colour.surface.selected.$value), // deleted - commit c830d07 - 14 Jul 2026
194
+ // disabled: tokenToHex(lightThemeTokens.colour.surface.disabled.$value), // deleted - commit c830d07 - 14 Jul 2026
195
+ // tertiary: tokenToHex(lightThemeTokens.colour.surface.tertiary.$value), // deleted - commit c830d07 - 14 Jul 2026
154
196
  inverseBrand: tokenToHex(
155
197
  lightThemeTokens.colour.surface['inverse-brand'].$value
156
198
  ),
@@ -170,18 +212,35 @@ const text = {
170
212
  lightThemeTokens.colour.text['on-bg-fill-disabled'].$value
171
213
  ),
172
214
  brand: tokenToHex(lightThemeTokens.colour.text.brand.$value),
215
+ brandOnLight: tokenToHex(
216
+ lightThemeTokens.colour.text['brand-on-light'].$value
217
+ ), // added - commit 331e537 - 14 Jul 2026
173
218
  brandAccent: tokenToHex(lightThemeTokens.colour.text['brand-accent'].$value),
174
219
  brandHover: tokenToHex(lightThemeTokens.colour.text['brand-hover'].$value),
220
+ brandPressed: tokenToHex(
221
+ lightThemeTokens.colour.text['brand-pressed'].$value
222
+ ), // added - commit 331e537 - 14 Jul 2026
175
223
  brandInverse: tokenToHex(
176
224
  lightThemeTokens.colour.text['brand-inverse'].$value
177
225
  ),
178
226
  brandInverseSecondary: tokenToHex(
179
227
  lightThemeTokens.colour.text['brand-inverse-secondary'].$value
180
228
  ),
229
+ brandInverseSecondaryHover: tokenToHex(
230
+ lightThemeTokens.colour.text['brand-inverse-secondary-hover'].$value // added - commit 331e537 - 14 Jul 2026
231
+ ),
232
+ brandInverseSecondarySelected: tokenToHex(
233
+ lightThemeTokens.colour.text['brand-inverse-secondary-selected'].$value // added - commit 331e537 - 14 Jul 2026
234
+ ),
181
235
  brandPrimary: tokenToHex(
182
236
  lightThemeTokens.colour.text['brand-primary'].$value
183
237
  ),
184
238
  critical: tokenToHex(lightThemeTokens.colour.text.critical.$value),
239
+ cautionSubtle: tokenToHex(
240
+ lightThemeTokens.colour.text['caution-subtle'].$value
241
+ ), // added - commit 331e537 - 14 Jul 2026
242
+ caution: tokenToHex(lightThemeTokens.colour.text.caution.$value), // added - commit 331e537 - 14 Jul 2026§
243
+ success: tokenToHex(lightThemeTokens.colour.text.success.$value), // added - commit 331e537 - 14 Jul 2026
185
244
  warningOnBgFill: tokenToHex(
186
245
  lightThemeTokens.colour.text['warning-on-bg-fill'].$value
187
246
  ),
@@ -1,12 +1,12 @@
1
1
  import defaultTheme, { ThemeType } from '../original/defaultTheme';
2
- import { typography, primitiveColour } from '../common/themeCommon';
2
+ import { typography, lightPrimitiveColour } from '../common/themeCommon';
3
3
  import colour from './lightColour';
4
4
 
5
5
  // UCL Light Theme
6
6
 
7
7
  const lightTheme: ThemeType = {
8
8
  // new
9
- primitiveColour,
9
+ primitiveColour: lightPrimitiveColour,
10
10
  colour,
11
11
  typography,
12
12
 
@@ -1,4 +1,4 @@
1
- import { typography, primitiveColour } from '../common/themeCommon';
1
+ import { typography, lightPrimitiveColour } from '../common/themeCommon';
2
2
  import color, { blackAndWhite, displayColours } from './color';
3
3
  import originalColour from './originalColourNewStructure';
4
4
 
@@ -91,7 +91,7 @@ const mq = {
91
91
 
92
92
  const theme = {
93
93
  // new
94
- primitiveColour,
94
+ primitiveColour: lightPrimitiveColour,
95
95
  colour: originalColour,
96
96
  typography,
97
97
 
@@ -16,6 +16,7 @@ const bg = {
16
16
  const border = {
17
17
  default: tokenToHex(lightThemeTokens.colour.border.default.$value),
18
18
  brand: color.interaction.blue70, // tokenToHex(lightThemeTokens.colour.border.brand.$value),
19
+ brandPrimary: color.interaction.blue100, // tokenToHex(lightThemeTokens.colour.border['brand-primary'].$value),
19
20
  brandHover: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.border['brand-hover'].$value),
20
21
  brandSubtle: color.base.blue20Alt, // tokenToHex(lightThemeTokens.colour.border['brand-subtle'].$value),
21
22
  primary: tokenToHex(lightThemeTokens.colour.border.primary.$value),
@@ -28,6 +29,8 @@ const border = {
28
29
  lightThemeTokens.colour.border['brand-inverse'].$value
29
30
  ),
30
31
  brandInverseSecondary: color.base.blue40, // tokenToHex(lightThemeTokens.colour.border['brand-inverse-secondary'].$value),
32
+ brandInverseSecondaryHover: color.base.blue25, // tokenToHex(lightThemeTokens.colour.border['brand-inverse-secondary-hover'].$value),
33
+ brandInverseSecondarySelected: color.base.blue25, // tokenToHex(lightThemeTokens.colour.border['brand-inverse-secondary-selected'].$value),
31
34
  focus: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.border.focus.$value),
32
35
  success: color.system.green70, // tokenToHex(lightThemeTokens.colour.border.success.$value),
33
36
  critical: color.system.red70, // tokenToHex(lightThemeTokens.colour.border.critical.$value),
@@ -36,8 +39,10 @@ const border = {
36
39
 
37
40
  const fill = {
38
41
  default: tokenToHex(lightThemeTokens.colour.fill.default.$value),
39
- hover: tokenToHex(lightThemeTokens.colour.fill.hover.$value),
42
+ primary: tokenToHex(lightThemeTokens.colour.fill.primary.$value),
43
+ subtle: tokenToHex(lightThemeTokens.colour.fill.subtle.$value),
40
44
  brand: color.interaction.blue70, // tokenToHex(lightThemeTokens.colour.fill.brand.$value),
45
+ brandSubtle: color.base.blue15, // tokenToHex(lightThemeTokens.colour.fill['brand-subtle'].$value),
41
46
  brandHover: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.fill['brand-hover'].$value),
42
47
  brandPressed: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.fill['brand-pressed'].$value),
43
48
  brandSubtleSelected: color.interaction.blue10, // tokenToHex(lightThemeTokens.colour.fill['brand-subtle-selected'].$value),
@@ -51,17 +56,15 @@ const fill = {
51
56
  criticalHover: color.base.red80, // tokenToHex(lightThemeTokens.colour.fill['critical-hover'].$value),
52
57
  criticalSelected: color.base.red80, // tokenToHex(lightThemeTokens.colour.fill['critical-selected'].$value),
53
58
  criticalPressed: color.base.red90, // tokenToHex(lightThemeTokens.colour.fill['critical-pressed'].$value),
54
- warning: tokenToHex(lightThemeTokens.colour.fill.warning.$value),
55
- warningHover: tokenToHex(
56
- lightThemeTokens.colour.fill['warning-hover'].$value
57
- ),
58
- warningSelected: tokenToHex(
59
- lightThemeTokens.colour.fill['warning-selected'].$value
60
- ),
61
- warningPressed: tokenToHex(
62
- lightThemeTokens.colour.fill['warning-pressed'].$value
63
- ),
59
+ criticalSubtle: color.system.red10, // tokenToHex(lightThemeTokens.colour.fill['critical-subtle'].$value),
60
+ caution: color.system.orange70, // tokenToHex(lightThemeTokens.colour.fill.caution.$value),
61
+ cautionHover: color.system.orange100, // tokenToHex(lightThemeTokens.colour.fill['caution-hover'].$value),
62
+ cautionSelected: color.system.orange100, // tokenToHex(lightThemeTokens.colour.fill['caution-selected'].$value),
63
+ cautionPressed: color.system.orange100, // tokenToHex(lightThemeTokens.colour.fill['caution-pressed'].$value),
64
+ cautionSubtle: color.system.orange10, // tokenToHex(lightThemeTokens.colour.fill['caution-subtle'].$value),
65
+ warningSubtle: color.system.orange10, // tokenToHex(lightThemeTokens.colour.fill['warning-subtle'].$value),
64
66
  success: color.system.green70, // tokenToHex(lightThemeTokens.colour.fill.success.$value),
67
+ successSubtle: color.system.green10, // tokenToHex(lightThemeTokens.colour.fill['success-subtle'].$value),
65
68
  };
66
69
 
67
70
  const icon = {
@@ -75,17 +78,17 @@ const icon = {
75
78
  ),
76
79
  brand: color.interaction.blue70, // tokenToHex(lightThemeTokens.colour.icon.brand.$value),
77
80
  brandHover: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.icon['brand-hover'].$value),
81
+ brandPressed: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.icon['brand-pressed'].$value),
78
82
  brandSelectedOnBgFill: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.icon['brand-selected-on-bg-fill'].$value),
79
83
  visited: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.icon.visited.$value),
80
84
  brandPrimary: color.interaction.blue100, // tokenToHex(lightThemeTokens.colour.icon['brand-primary'].$value),
81
- brandInverted: tokenToHex(
82
- lightThemeTokens.colour.icon['brand-inverted'].$value
85
+ brandInverse: tokenToHex(
86
+ lightThemeTokens.colour.icon['brand-inverse'].$value
83
87
  ),
84
88
  inverse: tokenToHex(lightThemeTokens.colour.icon.inverse.$value),
85
- inverseHover: tokenToHex(
86
- lightThemeTokens.colour.icon['inverse-hover'].$value
87
- ),
88
89
  brandInverseSecondary: color.base.blue40, // tokenToHex(lightThemeTokens.colour.icon['brand-inverse-secondary'].$value),
90
+ brandInverseSecondaryHover: color.base.blue25, // tokenToHex(lightThemeTokens.colour.icon['brand-inverse-secondary-hover'].$value),
91
+ brandInverseSecondarySelected: color.base.blue25, // tokenToHex(lightThemeTokens.colour.icon['brand-inverse-secondary-selected'].$value),
89
92
  inverseTertiary: tokenToHex(
90
93
  lightThemeTokens.colour.icon['inverse-tertiary'].$value
91
94
  ),
@@ -98,6 +101,10 @@ const icon = {
98
101
  successOnBgFill: tokenToHex(
99
102
  lightThemeTokens.colour.icon['success-on-bg-fill'].$value
100
103
  ),
104
+ caution: tokenToHex(lightThemeTokens.colour.icon.caution.$value),
105
+ cautionSubtle: tokenToHex(
106
+ lightThemeTokens.colour.icon['caution-subtle'].$value
107
+ ),
101
108
  warning: tokenToHex(lightThemeTokens.colour.icon.warning.$value),
102
109
  warningOnBgFill: tokenToHex(
103
110
  lightThemeTokens.colour.icon['warning-on-bg-fill'].$value
@@ -111,13 +118,11 @@ const surface = {
111
118
  brand: color.base.blue15, // tokenToHex(lightThemeTokens.colour.surface.brand.$value),
112
119
  brandHover: color.interaction.blue10, // tokenToHex(lightThemeTokens.colour.surface['brand-hover'].$value),
113
120
  brandSelected: color.interaction.blue10, // tokenToHex(lightThemeTokens.colour.surface['brand-selected'].$value),
121
+ brandSecondary: color.interaction.blue5, // tokenToHex(lightThemeTokens.colour.surface['brand-secondary'].$value),
122
+ brandTertiary: color.base.blue40, // tokenToHex(lightThemeTokens.colour.surface['brand-tertiary'].$value),
114
123
  warning: color.system.orange10, // tokenToHex(lightThemeTokens.colour.surface.warning.$value),
115
124
  success: color.system.green10, // tokenToHex(lightThemeTokens.colour.surface.success.$value),
116
125
  critical: color.system.red10, // tokenToHex(lightThemeTokens.colour.surface.critical.$value),
117
- hover: tokenToHex(lightThemeTokens.colour.surface.hover.$value),
118
- selected: tokenToHex(lightThemeTokens.colour.surface.selected.$value),
119
- disabled: tokenToHex(lightThemeTokens.colour.surface.disabled.$value),
120
- tertiary: tokenToHex(lightThemeTokens.colour.surface.tertiary.$value),
121
126
  inverseBrand: color.interaction.blue70, // tokenToHex(lightThemeTokens.colour.surface['inverse-brand'].$value),
122
127
  inverseBrandPrimary: color.interaction.blue100, // tokenToHex(lightThemeTokens.colour.surface['inverse-brand-primary'].$value),
123
128
  backdrop: tokenToHex(lightThemeTokens.colour.surface.backdrop.$value),
@@ -133,14 +138,23 @@ const text = {
133
138
  lightThemeTokens.colour.text['on-bg-fill-disabled'].$value
134
139
  ),
135
140
  brand: color.interaction.blue70, // tokenToHex(lightThemeTokens.colour.text.brand.$value),
141
+ brandOnLight: color.interaction.blue70, // tokenToHex(lightThemeTokens.colour.text['brand-on-light'].$value),
136
142
  brandAccent: tokenToHex(lightThemeTokens.colour.text['brand-accent'].$value),
137
143
  brandHover: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.text['brand-hover'].$value),
144
+ brandPressed: color.interaction.blue80, // tokenToHex(lightThemeTokens.colour.text['brand-pressed'].$value),
138
145
  brandInverse: tokenToHex(
139
146
  lightThemeTokens.colour.text['brand-inverse'].$value
140
147
  ),
141
148
  brandInverseSecondary: color.base.blue40, // tokenToHex(lightThemeTokens.colour.text['brand-inverse-secondary'].$value),
149
+ brandInverseSecondaryHover: color.base.blue25, // tokenToHex(lightThemeTokens.colour.text['brand-inverse-secondary-hover'].$value),
150
+ brandInverseSecondarySelected: color.base.blue25, // tokenToHex(lightThemeTokens.colour.text['brand-inverse-secondary-selected'].$value),
142
151
  brandPrimary: color.interaction.blue100, // tokenToHex(lightThemeTokens.colour.text['brand-primary'].$value),
143
152
  critical: color.system.red70, // tokenToHex(lightThemeTokens.colour.text.critical.$value),
153
+ cautionSubtle: tokenToHex(
154
+ lightThemeTokens.colour.text['caution-subtle'].$value
155
+ ),
156
+ caution: tokenToHex(lightThemeTokens.colour.text.caution.$value),
157
+ success: color.system.green70, // tokenToHex(lightThemeTokens.colour.text.success.$value),
144
158
  warningOnBgFill: tokenToHex(
145
159
  lightThemeTokens.colour.text['warning-on-bg-fill'].$value
146
160
  ),