@newskit-render/core 1.17.4 → 1.20.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newskit-render/core",
3
- "version": "1.17.4",
3
+ "version": "1.20.0",
4
4
  "description": "Newskit Render - Core package",
5
5
  "author": "",
6
6
  "license": "UNLICENSED",
@@ -31,17 +31,18 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@apollo/client": "3.4.16",
34
- "@newskit-render/api": "^0.10.1",
35
- "@newskit-render/auth": "^0.26.1",
36
- "@newskit-render/checkout": "^0.16.1",
37
- "@newskit-render/my-account": "^0.126.1",
38
- "@newskit-render/shared-components": "^0.27.1",
39
- "@newskit-render/sitemap": "^0.29.1",
40
- "@newskit-render/validation": "^0.31.1",
34
+ "@newskit-render/api": "^0.12.0",
35
+ "@newskit-render/auth": "^0.27.0",
36
+ "@newskit-render/checkout": "^0.18.0",
37
+ "@newskit-render/feature-flags": "^0.9.0",
38
+ "@newskit-render/my-account": "^0.129.0",
39
+ "@newskit-render/shared-components": "^0.29.0",
40
+ "@newskit-render/sitemap": "^0.31.0",
41
+ "@newskit-render/validation": "^0.33.0",
41
42
  "cross-fetch": "3.1.5",
42
43
  "graphql": "15.6.0",
43
44
  "newrelic": "7.1.0",
44
- "newskit": "4.3.1",
45
+ "newskit": "5.0.0",
45
46
  "next": "12.0.8",
46
47
  "react": "17.0.2",
47
48
  "react-dom": "17.0.2",
package/pages/_app.tsx CHANGED
@@ -3,6 +3,12 @@ import { AppProps } from 'next/app'
3
3
  import Head from 'next/head'
4
4
  import { ThemeProvider, Global, css, styled } from 'newskit'
5
5
  import { SessionProvider } from '@newskit-render/auth'
6
+ import {
7
+ getFeatureFlags,
8
+ FeatureFlagsContextProvider,
9
+ FeatureFlag,
10
+ createFeatureFlagsInstance,
11
+ } from '@newskit-render/feature-flags'
6
12
  import { AppContextProvider, AppContext } from '../app-context/AppContext'
7
13
  import { logger } from '../helpers/logger'
8
14
 
@@ -12,6 +18,12 @@ if (!process.browser) {
12
18
  logger()
13
19
  }
14
20
 
21
+ if (process.env.OPTIMIZELY_SDK_KEY) {
22
+ createFeatureFlagsInstance({
23
+ optimizelyConfig: { sdkKey: process.env.OPTIMIZELY_SDK_KEY },
24
+ })
25
+ }
26
+
15
27
  const GlobalStyling = css`
16
28
  @font-face {
17
29
  font-family: GillSansMTStd-Medium;
@@ -240,7 +252,11 @@ const PageContainer = styled.div`
240
252
  min-height: 100vh;
241
253
  `
242
254
 
243
- function MyApp({ Component, pageProps }: AppProps) {
255
+ interface MyAppProps extends AppProps {
256
+ featureFlags?: FeatureFlag
257
+ }
258
+
259
+ function MyApp({ Component, pageProps, featureFlags }: MyAppProps) {
244
260
  return (
245
261
  <AppContextProvider>
246
262
  <>
@@ -254,21 +270,31 @@ function MyApp({ Component, pageProps }: AppProps) {
254
270
  key="viewport"
255
271
  />
256
272
  </Head>
257
- <SessionProvider pageProps={pageProps}>
258
- <AppContext.Consumer>
259
- {({ theme }) => (
260
- <ThemeProvider theme={theme}>
261
- <Global styles={GlobalStyling} />
262
- <PageContainer>
263
- <Component {...pageProps} />
264
- </PageContainer>
265
- </ThemeProvider>
266
- )}
267
- </AppContext.Consumer>
268
- </SessionProvider>
273
+ <FeatureFlagsContextProvider context={featureFlags}>
274
+ <SessionProvider pageProps={pageProps}>
275
+ <AppContext.Consumer>
276
+ {({ theme }) => (
277
+ <ThemeProvider theme={theme}>
278
+ <Global styles={GlobalStyling} />
279
+ <PageContainer>
280
+ <Component {...pageProps} />
281
+ </PageContainer>
282
+ </ThemeProvider>
283
+ )}
284
+ </AppContext.Consumer>
285
+ </SessionProvider>
286
+ </FeatureFlagsContextProvider>
269
287
  </>
270
288
  </AppContextProvider>
271
289
  )
272
290
  }
273
291
 
292
+ MyApp.getInitialProps = async () => {
293
+ if (process.env.OPTIMIZELY_SDK_KEY) {
294
+ const featureFlags = await getFeatureFlags()
295
+ return { featureFlags }
296
+ }
297
+ return {}
298
+ }
299
+
274
300
  export default MyApp
@@ -32,7 +32,13 @@ export default class MyDocument extends Document {
32
32
 
33
33
  render() {
34
34
  const helmet = Helmet.rewind()
35
- const { showAds } = this.props.__NEXT_DATA__.props.pageProps
35
+ const showAds =
36
+ this.props.__NEXT_DATA__.props.pageProps &&
37
+ this.props.__NEXT_DATA__.props.pageProps.showAds
38
+ ? this.props.__NEXT_DATA__.props.pageProps.showAds
39
+ : false
40
+
41
+ const { featureFlags } = this.props.__NEXT_DATA__.props
36
42
  return (
37
43
  <Html lang="en">
38
44
  <Head>
@@ -47,12 +53,14 @@ export default class MyDocument extends Document {
47
53
  ),
48
54
  }}
49
55
  />
50
- {EXPERIMENTATION_WEB && (
51
- <ExperimentationWeb
52
- optimizelyWebConfig={{ scriptCdn: EXPERIMENTATION_WEB }}
53
- reactHelmet={Helmet}
54
- />
55
- )}
56
+ {EXPERIMENTATION_WEB &&
57
+ featureFlags &&
58
+ featureFlags.experimentation_web_flag && (
59
+ <ExperimentationWeb
60
+ optimizelyWebConfig={{ scriptCdn: EXPERIMENTATION_WEB }}
61
+ reactHelmet={Helmet}
62
+ />
63
+ )}
56
64
  {helmet.script.toComponent()}
57
65
  {SOURCEPOINT_ACCOUNT_ID && (
58
66
  <Consent
@@ -1,10 +1,18 @@
1
1
  import { AccountCreation, getProviderProps } from '@newskit-render/checkout'
2
2
  import React, { useContext } from 'react'
3
3
  import { AppContext } from '../../../app-context/AppContext'
4
+ import validation from '../../../validation'
4
5
 
5
6
  const AccountCreationPage = (props) => {
6
7
  const { theme, setTheme } = useContext(AppContext)
7
- return <AccountCreation {...props} customTheme={theme} setTheme={setTheme} />
8
+ return (
9
+ <AccountCreation
10
+ {...props}
11
+ customTheme={theme}
12
+ setTheme={setTheme}
13
+ validation={validation}
14
+ />
15
+ )
8
16
  }
9
17
 
10
18
  export default AccountCreationPage
@@ -0,0 +1,4 @@
1
+ {
2
+ "neutral100": "rgba(25, 26, 26, 1)",
3
+ "customInterfaceBrand": "{{colors.neutral100}}"
4
+ }
@@ -1,9 +1,11 @@
1
1
  import { createTheme, newskitLightTheme, newskitDarkTheme } from 'newskit'
2
+ import colors from './colours.json'
2
3
 
3
4
  export const renderCustomLightTheme = createTheme({
4
- name: 'render-custom-light-theme',
5
+ name: 'Newskit-Light',
5
6
  baseTheme: newskitLightTheme,
6
7
  overrides: {
8
+ colors,
7
9
  stylePresets: {
8
10
  dividerFooterHorizontal: {
9
11
  base: {
@@ -47,9 +49,10 @@ export const renderCustomLightTheme = createTheme({
47
49
  })
48
50
 
49
51
  export const renderCustomDarkTheme = createTheme({
50
- name: 'render-custom-dark-theme',
52
+ name: 'Newskit-Dark',
51
53
  baseTheme: newskitDarkTheme,
52
54
  overrides: {
55
+ colors,
53
56
  stylePresets: {
54
57
  cardContainer: {
55
58
  base: {
@@ -1,4 +0,0 @@
1
- import { UncompiledTheme } from 'newskit'
2
-
3
- export const getKey = (obj: { [key: string]: unknown }, val: UncompiledTheme) =>
4
- Object.keys(obj).find((key) => obj[key] === val)