@vonq/hapi-elements-types 1.3.0 → 1.5.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 (187) hide show
  1. package/enums.ts +41 -0
  2. package/package.json +6 -7
  3. package/src/_window/api.types.ts +59 -0
  4. package/src/_window/auth.types.ts +11 -0
  5. package/src/_window/config.types.ts +30 -0
  6. package/src/_window/events.types.ts +157 -0
  7. package/src/_window/index.ts +16 -0
  8. package/src/_window/instances.types.ts +18 -0
  9. package/src/_window/qa.types.ts +28 -0
  10. package/src/_window/routing.types.ts +21 -0
  11. package/src/_window/sdk.types.ts +147 -0
  12. package/src/_window/service.types.ts +67 -0
  13. package/src/_window/state.types.ts +112 -0
  14. package/src/_window/ui.types.ts +13 -0
  15. package/src/_window/utils.types.ts +34 -0
  16. package/src/_window/validation.types.ts +43 -0
  17. package/src/_window/window.ts +56 -0
  18. package/src/alert/enums.ts +22 -0
  19. package/src/alert/functions.types.ts +13 -0
  20. package/src/alert/index.ts +9 -0
  21. package/src/alert/service.types.ts +15 -0
  22. package/src/alert/state.initial.ts +16 -0
  23. package/src/alert/state.types.ts +27 -0
  24. package/src/alert/state.validations.ts +11 -0
  25. package/src/alert/types.ts +63 -0
  26. package/src/ats/api.types.ts +16 -0
  27. package/src/ats/functions.types.ts +7 -0
  28. package/src/ats/index.ts +9 -0
  29. package/src/ats/service.types.ts +17 -0
  30. package/src/ats/state.initial.ts +5 -0
  31. package/src/ats/state.types.ts +5 -0
  32. package/src/ats/state.validations.ts +6 -0
  33. package/src/ats/types.ts +19 -0
  34. package/src/basket/consts.ts +1 -0
  35. package/src/basket/functions.types.ts +40 -0
  36. package/src/basket/index.ts +12 -0
  37. package/src/basket/service.types.ts +32 -0
  38. package/src/basket/state.initial.ts +11 -0
  39. package/src/basket/state.types.ts +34 -0
  40. package/src/basket/state.validations.ts +12 -0
  41. package/src/basket/types.ts +4 -0
  42. package/src/basket/utils.ts +79 -0
  43. package/src/basket/utils.types.ts +10 -0
  44. package/src/basket/validations.types.ts +25 -0
  45. package/src/campaign/api.types.ts +45 -0
  46. package/src/campaign/consts.ts +1 -0
  47. package/src/campaign/enums.ts +17 -0
  48. package/src/campaign/functions.types.ts +90 -0
  49. package/src/campaign/index.ts +15 -0
  50. package/src/campaign/qa.types.ts +12 -0
  51. package/src/campaign/service.types.ts +48 -0
  52. package/src/campaign/state.initial.ts +84 -0
  53. package/src/campaign/state.types.ts +55 -0
  54. package/src/campaign/state.validations.ts +16 -0
  55. package/src/campaign/types.ts +237 -0
  56. package/src/campaign/utils.ts +53 -0
  57. package/src/campaign/utils.types.ts +59 -0
  58. package/src/campaign/validations.types.ts +215 -0
  59. package/src/common/LocalStorage.ts +123 -0
  60. package/src/common/browser.ts +2 -0
  61. package/src/common/color.ts +9 -0
  62. package/src/common/events/EventCommand/enums.ts +49 -0
  63. package/src/common/events/EventCommand/index.ts +4 -0
  64. package/src/common/events/EventCommand/types.ts +18 -0
  65. package/src/common/events/index.ts +4 -0
  66. package/src/common/events/types.ts +52 -0
  67. package/src/common/immutable.ts +28 -0
  68. package/src/common/index.ts +22 -0
  69. package/src/common/instances/Instance.ts +13 -0
  70. package/src/common/instances/consts.ts +1 -0
  71. package/src/common/instances/index.ts +4 -0
  72. package/src/common/json.ts +25 -0
  73. package/src/common/logger/Logger.ts +70 -0
  74. package/src/common/logger/enums.ts +12 -0
  75. package/src/common/logger/index.ts +5 -0
  76. package/src/common/logger/types.ts +7 -0
  77. package/src/common/logger-datadog/LoggerDatadog.ts +42 -0
  78. package/src/common/logger-datadog/index.ts +3 -0
  79. package/src/common/misc.ts +114 -0
  80. package/src/common/promise.ts +161 -0
  81. package/src/common/proxy.ts +77 -0
  82. package/src/common/qa.types.ts +9 -0
  83. package/src/common/regExTest.ts +12 -0
  84. package/src/common/tree.ts +148 -0
  85. package/src/common/types.ts +110 -0
  86. package/src/common/utm.ts +19 -0
  87. package/src/common/validations.types.ts +89 -0
  88. package/src/common/validators.ts +21 -0
  89. package/src/common/webComponents.ts +26 -0
  90. package/src/config/functions.types.ts +23 -0
  91. package/src/config/index.ts +5 -0
  92. package/src/config/state.initial.ts +11 -0
  93. package/src/config/state.types.ts +15 -0
  94. package/src/consts.ts +980 -0
  95. package/src/contract/api.types.ts +47 -0
  96. package/src/contract/consts.ts +1 -0
  97. package/src/contract/functions.types.ts +112 -0
  98. package/src/contract/index.ts +14 -0
  99. package/src/contract/qa.types.ts +12 -0
  100. package/src/contract/service.types.ts +54 -0
  101. package/src/contract/state.initial.ts +39 -0
  102. package/src/contract/state.types.ts +74 -0
  103. package/src/contract/state.validations.ts +21 -0
  104. package/src/contract/types.ts +145 -0
  105. package/src/contract/utils.ts +36 -0
  106. package/src/contract/utils.types.ts +11 -0
  107. package/src/contract/validations.types.ts +104 -0
  108. package/src/debugging/functions.types.ts +34 -0
  109. package/src/debugging/index.ts +6 -0
  110. package/src/debugging/state.initial.ts +10 -0
  111. package/src/debugging/state.types.ts +18 -0
  112. package/src/debugging/state.validations.ts +10 -0
  113. package/src/index.ts +22 -0
  114. package/src/language/consts.ts +6 -0
  115. package/src/language/en.ts +530 -0
  116. package/src/language/functions.types.ts +29 -0
  117. package/src/language/index.ts +11 -0
  118. package/src/language/qa.types.ts +19 -0
  119. package/src/language/state.initial.ts +13 -0
  120. package/src/language/state.types.ts +25 -0
  121. package/src/language/state.validations.ts +10 -0
  122. package/src/language/utils.ts +17 -0
  123. package/src/language/validations.types.ts +13 -0
  124. package/src/modal/consts.ts +6 -0
  125. package/src/modal/enums.ts +14 -0
  126. package/src/modal/functions.types.ts +22 -0
  127. package/src/modal/index.ts +11 -0
  128. package/src/modal/service.types.ts +32 -0
  129. package/src/modal/state.initial.ts +9 -0
  130. package/src/modal/state.types.ts +8 -0
  131. package/src/modal/state.validations.ts +6 -0
  132. package/src/modal/store.types.ts +5 -0
  133. package/src/modal/types.ts +44 -0
  134. package/src/orderJourney/consts.ts +289 -0
  135. package/src/orderJourney/enums.ts +25 -0
  136. package/src/orderJourney/functions.types.ts +140 -0
  137. package/src/orderJourney/index.ts +13 -0
  138. package/src/orderJourney/qa.types.ts +16 -0
  139. package/src/orderJourney/state.initial.ts +401 -0
  140. package/src/orderJourney/state.types.ts +99 -0
  141. package/src/orderJourney/state.validations.ts +78 -0
  142. package/src/orderJourney/types.ts +31 -0
  143. package/src/orderJourney/utils.ts +7 -0
  144. package/src/orderJourney/utils.types.ts +11 -0
  145. package/src/orderJourney/validations.types.ts +34 -0
  146. package/src/product/api.types.ts +62 -0
  147. package/src/product/consts.ts +1 -0
  148. package/src/product/enums.ts +11 -0
  149. package/src/product/functions.types.ts +156 -0
  150. package/src/product/index.ts +14 -0
  151. package/src/product/qa.types.ts +11 -0
  152. package/src/product/service.types.ts +68 -0
  153. package/src/product/state.initial.ts +28 -0
  154. package/src/product/state.types.ts +93 -0
  155. package/src/product/state.validations.ts +25 -0
  156. package/src/product/types.ts +161 -0
  157. package/src/product/utils.types.ts +22 -0
  158. package/src/product/validations.types.ts +189 -0
  159. package/src/routing/functions.types.ts +48 -0
  160. package/src/routing/index.ts +5 -0
  161. package/src/routing/state.initial.ts +10 -0
  162. package/src/routing/state.types.ts +30 -0
  163. package/src/theming/consts.ts +7727 -0
  164. package/src/theming/functions.types.ts +13 -0
  165. package/src/theming/index.ts +11 -0
  166. package/src/theming/qa.types.ts +11 -0
  167. package/src/theming/state.initial.ts +16 -0
  168. package/src/theming/state.types.ts +6 -0
  169. package/src/theming/state.validations.ts +8 -0
  170. package/src/theming/types.ts +123 -0
  171. package/src/theming/utils.ts +581 -0
  172. package/src/theming/validations.types.ts +62 -0
  173. package/src/types.ts +229 -0
  174. package/src/ui/index.ts +3 -0
  175. package/src/ui/service.types.ts +26 -0
  176. package/src/utils.ts +3 -0
  177. package/src/wallet/api.types.ts +33 -0
  178. package/src/wallet/consts.ts +3 -0
  179. package/src/wallet/functions.types.ts +58 -0
  180. package/src/wallet/index.ts +11 -0
  181. package/src/wallet/service.types.ts +26 -0
  182. package/src/wallet/state.initial.ts +18 -0
  183. package/src/wallet/state.types.ts +58 -0
  184. package/src/wallet/state.validations.ts +18 -0
  185. package/src/wallet/types.ts +65 -0
  186. package/src/wallet/validations.types.ts +18 -0
  187. package/tsconfig.json +41 -0
@@ -0,0 +1,581 @@
1
+ import { getColorInstanceOrUndefined } from "../common/color"
2
+ import { HapiTheme, ThemeGlobalStyles } from "./types"
3
+ import {
4
+ THEME_LIGHT_BASE_COMPONENT_STYLES,
5
+ THEME_LIGHT_DEFAULT_COLORS,
6
+ themeBaseVars,
7
+ } from "./consts"
8
+ import { mergeDeepOverwriteArrays } from "../common/immutable"
9
+ import { RecursivePartial } from "../common/types"
10
+
11
+ export const borderWidthForThingsLikeTabs = "3px"
12
+
13
+ export const getDefaultTheme = (
14
+ globalColors?: RecursivePartial<ThemeGlobalStyles>,
15
+ ): HapiTheme => {
16
+ return {
17
+ global: globalColors || THEME_LIGHT_DEFAULT_COLORS,
18
+ link: {
19
+ color: "var(--hapi-global-primary-background-color)",
20
+ },
21
+ loadingSpinner: {
22
+ fill: "var(--hapi-global-primary-background-color)",
23
+ },
24
+ userJourneyBar: {},
25
+ card: {
26
+ display: "block",
27
+ backgroundColor: "#FFF",
28
+ borderRadius: "var(--hapi-global-border-radius)",
29
+ boxShadow: "0px 1px 3px rgba(51, 51, 51, 0.2)",
30
+ },
31
+ modal: {
32
+ backgroundColor: "#FFF",
33
+ borderLeftWidth: "6px",
34
+ borderLeftColor: "var(--hapi-global-primary-background-color)",
35
+ dropShadow:
36
+ "drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06))",
37
+ "&:focus-visible": {
38
+ outline: "none !important",
39
+ },
40
+ },
41
+ modalBackdrop: {
42
+ backdropFilter: "brightness(0.75)",
43
+ },
44
+ tabHeaders: {
45
+ ".tab--horizontal &": {
46
+ columnGap: themeBaseVars.gap!["2"],
47
+ },
48
+ ".tab--vertical &": {
49
+ rowGap: themeBaseVars.gap!["2"],
50
+ },
51
+ },
52
+ tabHeader: {
53
+ display: "inline-flex",
54
+ alignItems: "center",
55
+ justifyContent: "center",
56
+ cursor: "pointer",
57
+ flex: themeBaseVars.flex!["1"],
58
+ padding: `${themeBaseVars.padding!["4"]} ${
59
+ themeBaseVars.padding!["12"]
60
+ }`,
61
+ borderRadius: "0px",
62
+ backgroundColor: getColorInstanceOrUndefined(
63
+ globalColors?.fadedBackgroundColor ||
64
+ THEME_LIGHT_DEFAULT_COLORS.fadedBackgroundColor,
65
+ )?.hex(),
66
+ ".tab--horizontal &.active": {
67
+ backgroundColor: getColorInstanceOrUndefined(
68
+ globalColors?.infoSecondaryBackgroundColor ||
69
+ THEME_LIGHT_DEFAULT_COLORS.infoSecondaryBackgroundColor,
70
+ )?.hex(),
71
+ borderTopWidth: borderWidthForThingsLikeTabs,
72
+ borderTopStyle: "solid",
73
+ borderTopColor:
74
+ globalColors?.primaryBackgroundColor ||
75
+ THEME_LIGHT_DEFAULT_COLORS.primaryBackgroundColor,
76
+ },
77
+ ".tab--vertical &.active": {
78
+ backgroundColor: getColorInstanceOrUndefined(
79
+ globalColors?.infoSecondaryBackgroundColor ||
80
+ THEME_LIGHT_DEFAULT_COLORS.infoSecondaryBackgroundColor,
81
+ )?.hex(),
82
+ borderLeftWidth: borderWidthForThingsLikeTabs,
83
+ borderLeftStyle: "solid",
84
+ borderLeftColor:
85
+ globalColors?.primaryBackgroundColor ||
86
+ THEME_LIGHT_DEFAULT_COLORS.primaryBackgroundColor,
87
+ },
88
+ ".tab--horizontal &:first-child": {
89
+ borderTopLeftRadius:
90
+ globalColors?.borderRadius ||
91
+ THEME_LIGHT_DEFAULT_COLORS.borderRadius,
92
+ },
93
+ ".tab--horizontal &:last-child": {
94
+ borderTopRightRadius:
95
+ globalColors?.borderRadius ||
96
+ THEME_LIGHT_DEFAULT_COLORS.borderRadius,
97
+ },
98
+ ".tab--vertical &:first-child": {
99
+ borderTopLeftRadius:
100
+ globalColors?.borderRadius ||
101
+ THEME_LIGHT_DEFAULT_COLORS.borderRadius,
102
+ },
103
+ ".tab--vertical &:last-child": {
104
+ borderBottomLeftRadius:
105
+ globalColors?.borderRadius ||
106
+ THEME_LIGHT_DEFAULT_COLORS.borderRadius,
107
+ },
108
+ },
109
+ tabPanels: {},
110
+ tabPanel: {
111
+ backgroundColor: getColorInstanceOrUndefined(
112
+ globalColors?.infoSecondaryBackgroundColor ||
113
+ THEME_LIGHT_DEFAULT_COLORS.infoSecondaryBackgroundColor,
114
+ )?.hex(),
115
+ ".tab--horizontal &": {
116
+ padding: `${themeBaseVars.padding!["4"]} ${
117
+ themeBaseVars.padding!["2"]
118
+ }`,
119
+ },
120
+ ".tab--vertical &": {
121
+ padding: `${themeBaseVars.padding!["2"]} ${
122
+ themeBaseVars.padding!["4"]
123
+ }`,
124
+ },
125
+ },
126
+ buttonBase: THEME_LIGHT_BASE_COMPONENT_STYLES["button"] || {},
127
+ buttonPrimary: {
128
+ extend: "buttonBase",
129
+ backgroundColor: "var(--hapi-global-primary-background-color)",
130
+ color: "var(--hapi-global-primary-text-color)",
131
+ "&:disabled": {
132
+ backgroundColor: getColorInstanceOrUndefined(
133
+ globalColors?.primaryBackgroundColor ||
134
+ THEME_LIGHT_DEFAULT_COLORS.primaryBackgroundColor,
135
+ )
136
+ ?.fade(0.3)
137
+ .hexa(),
138
+ },
139
+ "&:hover:enabled": {
140
+ backgroundColor: getColorInstanceOrUndefined(
141
+ globalColors?.primaryBackgroundColor ||
142
+ THEME_LIGHT_DEFAULT_COLORS.primaryBackgroundColor,
143
+ )
144
+ ?.darken(0.1)
145
+ .hex(),
146
+ },
147
+ },
148
+ buttonSecondary: {
149
+ extend: "buttonBase",
150
+ backgroundColor: "var(--hapi-global-secondary-background-color)",
151
+ color: "var(--hapi-global-secondary-text-color)",
152
+ "&:disabled": {
153
+ backgroundColor: getColorInstanceOrUndefined(
154
+ globalColors?.secondaryBackgroundColor ||
155
+ THEME_LIGHT_DEFAULT_COLORS.secondaryBackgroundColor,
156
+ )
157
+ ?.fade(0.3)
158
+ .hexa(),
159
+ },
160
+ "&:hover:enabled": {
161
+ backgroundColor: getColorInstanceOrUndefined(
162
+ globalColors?.secondaryBackgroundColor ||
163
+ THEME_LIGHT_DEFAULT_COLORS.secondaryBackgroundColor,
164
+ )
165
+ ?.darken(0.1)
166
+ .hex(),
167
+ },
168
+ },
169
+ buttonDanger: {
170
+ extend: "buttonBase",
171
+ backgroundColor: "var(--hapi-global-danger-background-color)",
172
+ color: "var(--hapi-global-danger-text-color)",
173
+ "&:disabled": {
174
+ backgroundColor: getColorInstanceOrUndefined(
175
+ globalColors?.dangerBackgroundColor ||
176
+ THEME_LIGHT_DEFAULT_COLORS.dangerBackgroundColor,
177
+ )
178
+ ?.fade(0.3)
179
+ .hexa(),
180
+ },
181
+ "&:hover:enabled": {
182
+ backgroundColor: getColorInstanceOrUndefined(
183
+ globalColors?.dangerBackgroundColor ||
184
+ THEME_LIGHT_DEFAULT_COLORS.dangerBackgroundColor,
185
+ )
186
+ ?.darken(0.1)
187
+ .hex(),
188
+ },
189
+ },
190
+ buttonDangerSecondary: {
191
+ extend: "buttonBase",
192
+ backgroundColor:
193
+ "var(--hapi-global-danger-secondary-background-color)",
194
+ color: "var(--hapi-global-danger-background-color)",
195
+ "&:disabled": {
196
+ backgroundColor: getColorInstanceOrUndefined(
197
+ globalColors?.dangerSecondaryBackgroundColor ||
198
+ THEME_LIGHT_DEFAULT_COLORS.dangerSecondaryBackgroundColor,
199
+ )
200
+ ?.fade(0.3)
201
+ .hexa(),
202
+ },
203
+ "&:hover:enabled": {
204
+ backgroundColor: getColorInstanceOrUndefined(
205
+ globalColors?.dangerSecondaryBackgroundColor ||
206
+ THEME_LIGHT_DEFAULT_COLORS.dangerSecondaryBackgroundColor,
207
+ )
208
+ ?.darken(0.1)
209
+ .hex(),
210
+ },
211
+ },
212
+ buttonSuccess: {
213
+ extend: "buttonBase",
214
+ backgroundColor: "var(--hapi-global-success-background-color)",
215
+ color: "var(--hapi-global-success-text-color)",
216
+ "&:disabled": {
217
+ backgroundColor: getColorInstanceOrUndefined(
218
+ globalColors?.successBackgroundColor ||
219
+ THEME_LIGHT_DEFAULT_COLORS.successBackgroundColor,
220
+ )
221
+ ?.fade(0.3)
222
+ .hexa(),
223
+ },
224
+ "&:hover:enabled": {
225
+ backgroundColor: getColorInstanceOrUndefined(
226
+ globalColors?.successBackgroundColor ||
227
+ THEME_LIGHT_DEFAULT_COLORS.successBackgroundColor,
228
+ )
229
+ ?.darken(0.1)
230
+ .hex(),
231
+ },
232
+ },
233
+ buttonSuccessSecondary: {
234
+ extend: "buttonBase",
235
+ backgroundColor:
236
+ "var(--hapi-global-success-secondary-background-color)",
237
+ color: "var(--hapi-global-success-background-color)",
238
+ "&:disabled": {
239
+ backgroundColor: getColorInstanceOrUndefined(
240
+ globalColors?.successSecondaryBackgroundColor ||
241
+ THEME_LIGHT_DEFAULT_COLORS.successSecondaryBackgroundColor,
242
+ )
243
+ ?.fade(0.3)
244
+ .hexa(),
245
+ },
246
+ "&:hover:enabled": {
247
+ backgroundColor: getColorInstanceOrUndefined(
248
+ globalColors?.successSecondaryBackgroundColor ||
249
+ THEME_LIGHT_DEFAULT_COLORS.successSecondaryBackgroundColor,
250
+ )
251
+ ?.darken(0.1)
252
+ .hex(),
253
+ },
254
+ },
255
+ buttonInfo: {
256
+ extend: "buttonBase",
257
+ backgroundColor: "var(--hapi-global-info-background-color)",
258
+ color: "var(--hapi-global-info-text-color)",
259
+ "&:disabled": {
260
+ backgroundColor: getColorInstanceOrUndefined(
261
+ globalColors?.infoBackgroundColor ||
262
+ THEME_LIGHT_DEFAULT_COLORS.infoBackgroundColor,
263
+ )
264
+ ?.fade(0.3)
265
+ .hexa(),
266
+ },
267
+ "&:hover:enabled": {
268
+ backgroundColor: getColorInstanceOrUndefined(
269
+ globalColors?.infoBackgroundColor ||
270
+ THEME_LIGHT_DEFAULT_COLORS.infoBackgroundColor,
271
+ )
272
+ ?.darken(0.1)
273
+ .hex(),
274
+ },
275
+ },
276
+ buttonInfoSecondary: {
277
+ extend: "buttonBase",
278
+ backgroundColor:
279
+ "var(--hapi-global-info-secondary-background-color)",
280
+ color: "var(--hapi-global-info-background-color)",
281
+ "&:disabled": {
282
+ backgroundColor: getColorInstanceOrUndefined(
283
+ globalColors?.infoSecondaryBackgroundColor ||
284
+ THEME_LIGHT_DEFAULT_COLORS.infoSecondaryBackgroundColor,
285
+ )
286
+ ?.fade(0.3)
287
+ .hexa(),
288
+ },
289
+ "&:hover:enabled": {
290
+ backgroundColor: getColorInstanceOrUndefined(
291
+ globalColors?.infoSecondaryBackgroundColor ||
292
+ THEME_LIGHT_DEFAULT_COLORS.infoSecondaryBackgroundColor,
293
+ )
294
+ ?.darken(0.1)
295
+ .hex(),
296
+ },
297
+ },
298
+ buttonWarning: {
299
+ extend: "buttonBase",
300
+ backgroundColor: "var(--hapi-global-warning-background-color)",
301
+ color: "var(--hapi-global-warning-text-color)",
302
+ "&:disabled": {
303
+ backgroundColor: getColorInstanceOrUndefined(
304
+ globalColors?.warningBackgroundColor ||
305
+ THEME_LIGHT_DEFAULT_COLORS.warningBackgroundColor,
306
+ )
307
+ ?.fade(0.3)
308
+ .hexa(),
309
+ },
310
+ "&:hover:enabled": {
311
+ backgroundColor: getColorInstanceOrUndefined(
312
+ globalColors?.warningBackgroundColor ||
313
+ THEME_LIGHT_DEFAULT_COLORS.warningBackgroundColor,
314
+ )
315
+ ?.darken(0.1)
316
+ .hex(),
317
+ },
318
+ },
319
+ buttonWarningSecondary: {
320
+ extend: "buttonBase",
321
+ backgroundColor:
322
+ "var(--hapi-global-warning-secondary-background-color)",
323
+ color: "var(--hapi-global-warning-background-color)",
324
+ "&:disabled": {
325
+ backgroundColor: getColorInstanceOrUndefined(
326
+ globalColors?.warningSecondaryBackgroundColor ||
327
+ THEME_LIGHT_DEFAULT_COLORS.warningSecondaryBackgroundColor,
328
+ )
329
+ ?.fade(0.3)
330
+ .hexa(),
331
+ },
332
+ "&:hover:enabled": {
333
+ backgroundColor: getColorInstanceOrUndefined(
334
+ globalColors?.warningSecondaryBackgroundColor ||
335
+ THEME_LIGHT_DEFAULT_COLORS.warningSecondaryBackgroundColor,
336
+ )
337
+ ?.darken(0.1)
338
+ .hex(),
339
+ },
340
+ },
341
+ buttonAccent: {
342
+ extend: "buttonBase",
343
+ backgroundColor: "var(--hapi-global-accent-background-color)",
344
+ color: "var(--hapi-global-accent-text-color)",
345
+ "&:disabled": {
346
+ backgroundColor: getColorInstanceOrUndefined(
347
+ globalColors?.accentBackgroundColor ||
348
+ THEME_LIGHT_DEFAULT_COLORS.accentBackgroundColor,
349
+ )
350
+ ?.fade(0.3)
351
+ .hexa(),
352
+ },
353
+ "&:hover:enabled": {
354
+ backgroundColor: getColorInstanceOrUndefined(
355
+ globalColors?.accentBackgroundColor ||
356
+ THEME_LIGHT_DEFAULT_COLORS.accentBackgroundColor,
357
+ )
358
+ ?.darken(0.1)
359
+ .hex(),
360
+ },
361
+ },
362
+ buttonFaded: {
363
+ extend: "buttonBase",
364
+ backgroundColor: "var(--hapi-global-faded-background-color)",
365
+ color: "var(--hapi-global-faded-text-color)",
366
+ "&:disabled": {
367
+ backgroundColor: getColorInstanceOrUndefined(
368
+ globalColors?.fadedBackgroundColor ||
369
+ THEME_LIGHT_DEFAULT_COLORS.fadedBackgroundColor,
370
+ )
371
+ ?.fade(0.3)
372
+ .hexa(),
373
+ },
374
+ "&:hover:enabled": {
375
+ backgroundColor: getColorInstanceOrUndefined(
376
+ globalColors?.fadedBackgroundColor ||
377
+ THEME_LIGHT_DEFAULT_COLORS.fadedBackgroundColor,
378
+ )
379
+ ?.darken(0.1)
380
+ .hex(),
381
+ },
382
+ },
383
+ badgeBase: {
384
+ backgroundColor: "var(--hapi-global-primary-background-color)",
385
+ color: "var(--hapi-global-primary-text-color)",
386
+ },
387
+ headingBase: {},
388
+ headingOne: {
389
+ fontSize: themeBaseVars.fontSize!["5xl"][0],
390
+ lineHeight: themeBaseVars.fontSize!["5xl"][1].lineHeight,
391
+ },
392
+ headingTwo: {
393
+ fontSize: themeBaseVars.fontSize!["4xl"][0],
394
+ lineHeight: themeBaseVars.fontSize!["4xl"][1].lineHeight,
395
+ },
396
+ headingThree: {
397
+ fontSize: themeBaseVars.fontSize!["3xl"][0],
398
+ lineHeight: themeBaseVars.fontSize!["3xl"][1].lineHeight,
399
+ },
400
+ headingFour: {
401
+ fontSize: themeBaseVars.fontSize!["2xl"][0],
402
+ lineHeight: themeBaseVars.fontSize!["2xl"][1].lineHeight,
403
+ },
404
+ headingFive: {
405
+ fontSize: themeBaseVars.fontSize!["xl"][0],
406
+ lineHeight: themeBaseVars.fontSize!["xl"][1].lineHeight,
407
+ },
408
+ headingSix: {
409
+ fontSize: themeBaseVars.fontSize!["lg"][0],
410
+ lineHeight: themeBaseVars.fontSize!["lg"][1].lineHeight,
411
+ },
412
+ formFieldBase: THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"] || {},
413
+ inputSelectBase:
414
+ THEME_LIGHT_BASE_COMPONENT_STYLES["inputSelectBase"] || {},
415
+ input: {
416
+ extend: [
417
+ THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"] || {},
418
+ THEME_LIGHT_BASE_COMPONENT_STYLES["inputSelectBase"] || {},
419
+ ],
420
+ },
421
+ inputHtml: {
422
+ extend: () => {
423
+ const style: any = {}
424
+
425
+ const combinedStyles = {
426
+ ...THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"],
427
+ ...THEME_LIGHT_BASE_COMPONENT_STYLES["inputSelectBase"],
428
+ }
429
+
430
+ Object.keys(combinedStyles)
431
+ .filter((key) => !key.includes("padding"))
432
+ .forEach((key) => (style[key] = combinedStyles[key]))
433
+
434
+ return style
435
+ },
436
+ },
437
+ inputRange: {
438
+ extend: "formFieldBase",
439
+ backgroundColor: "var(--hapi-global-secondary-background-color)",
440
+ borderColor: "var(--hapi-global-primary-background-color)",
441
+ },
442
+ inputTags: {
443
+ extend: () => {
444
+ const style: any = {}
445
+
446
+ const combinedStyles = {
447
+ ...THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"],
448
+ ...THEME_LIGHT_BASE_COMPONENT_STYLES["inputSelectBase"],
449
+ }
450
+
451
+ Object.keys(combinedStyles)
452
+ .filter(
453
+ (key) =>
454
+ !key.includes("border") && !key.includes("padding"),
455
+ )
456
+ .forEach((key) => (style[key] = combinedStyles[key]))
457
+
458
+ return style
459
+ },
460
+ marginBottom: "0",
461
+ flex: "1",
462
+ padding: "0",
463
+ border: "0",
464
+ "&:focus": {
465
+ border: "0",
466
+ boxShadow: "none",
467
+ outline: "none",
468
+ },
469
+ },
470
+ textarea: {
471
+ extend: [
472
+ THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"] || {},
473
+ THEME_LIGHT_BASE_COMPONENT_STYLES["inputSelectBase"] || {},
474
+ ],
475
+ },
476
+ select: {
477
+ extend: () => {
478
+ const style: any = {}
479
+
480
+ const combinedStyles = {
481
+ ...THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"],
482
+ ...THEME_LIGHT_BASE_COMPONENT_STYLES["inputSelectBase"],
483
+ }
484
+
485
+ Object.keys(combinedStyles)
486
+ .filter(
487
+ (key) =>
488
+ !key.includes("padding") &&
489
+ (key === "borderRadius" || !key.includes("border")),
490
+ )
491
+ .forEach((key) => (style[key] = combinedStyles[key]))
492
+
493
+ return style
494
+ },
495
+ },
496
+ checkbox: {
497
+ extend: "formFieldBase",
498
+ "&:checked": {
499
+ color: THEME_LIGHT_DEFAULT_COLORS.primaryBackgroundColor,
500
+ },
501
+ },
502
+ radio: {
503
+ extend: () => {
504
+ const style: any = {}
505
+ Object.keys(
506
+ THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"] || {},
507
+ )
508
+ .filter((key) => key !== "borderRadius")
509
+ .forEach((key) => {
510
+ if (
511
+ THEME_LIGHT_BASE_COMPONENT_STYLES["formFieldBase"]
512
+ ) {
513
+ style[key] =
514
+ THEME_LIGHT_BASE_COMPONENT_STYLES[
515
+ "formFieldBase"
516
+ ][key]
517
+ }
518
+ })
519
+ return style
520
+ },
521
+ "&:checked": {
522
+ color: THEME_LIGHT_DEFAULT_COLORS.primaryBackgroundColor,
523
+ },
524
+ },
525
+ accordionButton: {
526
+ display: "flex",
527
+ alignItems: "center",
528
+ width: "100%",
529
+ borderRadius: "var(--hapi-global-border-radius)",
530
+ color: "#000",
531
+ fontWeight: themeBaseVars.fontWeight!["medium"],
532
+ textAlign: "left",
533
+ padding: `${themeBaseVars.padding!["2"]} ${
534
+ themeBaseVars.padding!["4"]
535
+ }`,
536
+ backgroundColor: themeBaseVars.backgroundColor!["gray"]["100"],
537
+ cursor: "pointer",
538
+ "&:hover": {
539
+ backgroundColor: getColorInstanceOrUndefined(
540
+ themeBaseVars.backgroundColor!["gray"]["100"],
541
+ )
542
+ ?.darken(0.1)
543
+ .hex(),
544
+ },
545
+ },
546
+ accordionArrow: {
547
+ height: themeBaseVars.height!["4"],
548
+ width: themeBaseVars.width!["4"],
549
+ color: themeBaseVars.textColor!["gray"]["500"],
550
+ },
551
+ accordionPanel: {
552
+ marginBottom: themeBaseVars.margin!["2"],
553
+ paddingBottom: themeBaseVars.padding!["5"],
554
+ paddingRight: themeBaseVars.padding!["5"],
555
+ paddingLeft: themeBaseVars.padding!["5"],
556
+ fontSize: themeBaseVars.fontSize!["sm"],
557
+ color: themeBaseVars.textColor!["gray"]["500"],
558
+ backgroundColor: themeBaseVars.backgroundColor!["gray"]["100"],
559
+ },
560
+ accordionTitle: {
561
+ display: "inline-flex",
562
+ flex: themeBaseVars.flex!["1"],
563
+ alignItems: "center",
564
+ },
565
+ alert: {
566
+ maxWidth: themeBaseVars.maxWidth!["md"],
567
+ },
568
+ }
569
+ }
570
+
571
+ export const getUpdatedTheme = (
572
+ updatedTheme: Partial<HapiTheme>,
573
+ ): Partial<HapiTheme> => {
574
+ const newTheme: Partial<HapiTheme> = getDefaultTheme(
575
+ mergeDeepOverwriteArrays(
576
+ THEME_LIGHT_DEFAULT_COLORS,
577
+ updatedTheme.global,
578
+ ),
579
+ )
580
+ return newTheme
581
+ }
@@ -0,0 +1,62 @@
1
+ import {
2
+ ZodArray,
3
+ ZodLiteral,
4
+ ZodObject,
5
+ ZodOptional,
6
+ ZodRecord,
7
+ ZodString,
8
+ ZodTypeAny,
9
+ ZodUnion,
10
+ } from "zod"
11
+
12
+ export type ZodThemeGlobalStyles = ZodObject<{
13
+ borderRadius: ZodString
14
+
15
+ primaryBackgroundColor: ZodString
16
+ primaryTextColor: ZodString
17
+
18
+ secondaryBackgroundColor: ZodString
19
+ secondaryTextColor: ZodString
20
+
21
+ successBackgroundColor: ZodString
22
+ successTextColor: ZodString
23
+
24
+ dangerBackgroundColor: ZodString
25
+ dangerTextColor: ZodString
26
+
27
+ warningBackgroundColor: ZodString
28
+ warningTextColor: ZodString
29
+
30
+ infoBackgroundColor: ZodString
31
+ infoTextColor: ZodString
32
+
33
+ fadedBackgroundColor: ZodString
34
+ fadedTextColor: ZodString
35
+
36
+ accentBackgroundColor: ZodString
37
+ accentTextColor: ZodString
38
+ }>
39
+
40
+ export type ZodFontFace = ZodObject<{
41
+ fontFamily: ZodString
42
+ src: ZodString
43
+ fontWeight: ZodOptional<ZodString>
44
+ fontStyle: ZodOptional<ZodString>
45
+ fontSize: ZodOptional<ZodString>
46
+ }>
47
+ export type ZodFontFaces = ZodArray<ZodFontFace>
48
+ export type ZodFontOptions = ZodObject<{
49
+ fontFamily: ZodString
50
+ fontFaces: ZodFontFaces
51
+ }>
52
+ export type ZodTheme = ZodRecord<
53
+ ZodUnion<[ZodLiteral<"global">, ZodString]>,
54
+ ZodObject<{ global: ZodTypeAny }>
55
+ >
56
+ export type WindowHapiValidationsTheming = {
57
+ globalTheme: ZodThemeGlobalStyles
58
+ theme: ZodTheme
59
+ fontFace: ZodFontFace
60
+ fontFaces: ZodFontFaces
61
+ fontOptions: ZodFontOptions
62
+ }