diff --git a/sanityv3/colorConfig.js b/sanityv3/colorConfig.js
new file mode 100644
index 000000000..379a1cea1
--- /dev/null
+++ b/sanityv3/colorConfig.js
@@ -0,0 +1,32 @@
+//IMPORTANT
+// Keep web/colorConfig in sync with this
+export default {
+ white: {
+ 100: 'hsl(0, 0%, 100%)',
+ },
+ 'moss-green': {
+ //moss-green-light
+ 50: 'hsl(184, 30%, 96%)',
+ },
+ 'spruce-wood': {
+ 90: 'hsl(25, 100%, 94%)',
+ },
+ 'energy-red': {
+ 100: 'hsl(348, 100%, 54%)',
+ },
+ 'mist-blue': {
+ 100: 'hsl(199, 58%, 90%)',
+ },
+ green: {
+ 50: '#c3e4ce',
+ },
+ yellow: {
+ 50: '#fff5b8',
+ },
+ blue: {
+ 50: '#49709c',
+ },
+ orange: {
+ 50: '#f8d1af',
+ },
+}
diff --git a/sanityv3/pnpm-lock.yaml b/sanityv3/pnpm-lock.yaml
index d8dd51d84..afc152af7 100644
--- a/sanityv3/pnpm-lock.yaml
+++ b/sanityv3/pnpm-lock.yaml
@@ -1,9 +1,5 @@
lockfileVersion: '6.0'
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
dependencies:
'@equinor/eds-icons':
specifier: ^0.17.0
@@ -22,7 +18,7 @@ dependencies:
version: 1.2.4(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(sanity@3.21.1)(typescript@4.0.2)
'@sanity/document-internationalization':
specifier: ^1.1.1
- version: 1.1.1(lodash@4.17.21)(react-dom@18.2.0)(react-is@18.2.0)(react-router-dom@5.3.4)(react-router@5.3.4)(react@18.2.0)(rxjs@7.8.0)(sanity@3.21.1)(styled-components@5.3.6)
+ version: 1.1.1(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(rxjs@7.8.0)(sanity@3.21.1)(styled-components@5.3.6)
'@sanity/icons':
specifier: ^2.3.1
version: 2.3.1(react@18.2.0)
@@ -37,7 +33,7 @@ dependencies:
version: 3.0.2
'@sanity/vision':
specifier: ^3.19.1
- version: 3.19.1(@babel/runtime@7.23.2)(@codemirror/lint@6.4.2)(@codemirror/state@6.3.1)(@codemirror/theme-one-dark@6.1.2)(@lezer/common@1.1.0)(codemirror@6.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(styled-components@5.3.6)
+ version: 3.19.1(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(styled-components@5.3.6)
buffer:
specifier: ^6.0.3
version: 6.0.3
@@ -160,7 +156,7 @@ packages:
'@babel/traverse': 7.23.0
'@babel/types': 7.23.0
convert-source-map: 2.0.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -183,7 +179,7 @@ packages:
'@babel/traverse': 7.23.6
'@babel/types': 7.23.6
convert-source-map: 2.0.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -326,7 +322,7 @@ packages:
'@babel/core': 7.23.0
'@babel/helper-compilation-targets': 7.22.15
'@babel/helper-plugin-utils': 7.22.5
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
lodash.debounce: 4.0.8
resolve: 1.22.2
transitivePeerDependencies:
@@ -1577,7 +1573,6 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
- dev: false
/@babel/template@7.22.15:
resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
@@ -1626,7 +1621,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.0
'@babel/types': 7.23.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -1644,7 +1639,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -1675,13 +1670,8 @@ packages:
to-fast-properties: 2.0.0
dev: false
- /@codemirror/autocomplete@6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0):
+ /@codemirror/autocomplete@6.10.2:
resolution: {integrity: sha512-3dCL7b0j2GdtZzWN5j7HDpRAJ26ip07R4NGYz7QYthIYMiX8I4E4TNrYcdTayPJGeVQtd/xe7lWU4XL7THFb/w==}
- peerDependencies:
- '@codemirror/language': ^6.0.0
- '@codemirror/state': ^6.0.0
- '@codemirror/view': ^6.0.0
- '@lezer/common': ^1.0.0
dependencies:
'@codemirror/language': 6.9.2
'@codemirror/state': 6.3.1
@@ -1701,7 +1691,7 @@ packages:
/@codemirror/lang-javascript@6.2.1:
resolution: {integrity: sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==}
dependencies:
- '@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
+ '@codemirror/autocomplete': 6.10.2
'@codemirror/language': 6.9.2
'@codemirror/lint': 6.4.2
'@codemirror/state': 6.3.1
@@ -1829,7 +1819,7 @@ packages:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
'@babel/helper-module-imports': 7.22.5
- '@babel/runtime': 7.22.6
+ '@babel/runtime': 7.23.2
'@emotion/hash': 0.9.1
'@emotion/memoize': 0.8.1
'@emotion/serialize': 1.1.2
@@ -1888,7 +1878,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.22.6
+ '@babel/runtime': 7.23.2
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.2
@@ -2363,7 +2353,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
espree: 9.5.2
globals: 13.20.0
ignore: 5.2.4
@@ -2420,7 +2410,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 1.2.1
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -2824,7 +2814,7 @@ packages:
'@sanity/diff-match-patch': 3.1.1
dev: false
- /@sanity/document-internationalization@1.1.1(lodash@4.17.21)(react-dom@18.2.0)(react-is@18.2.0)(react-router-dom@5.3.4)(react-router@5.3.4)(react@18.2.0)(rxjs@7.8.0)(sanity@3.21.1)(styled-components@5.3.6):
+ /@sanity/document-internationalization@1.1.1(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(rxjs@7.8.0)(sanity@3.21.1)(styled-components@5.3.6):
resolution: {integrity: sha512-8NQG7fPKr9LkwE2T/3ROjo7q4ZSYDQ0TNeNxCL2ZhW4JmJVNBUlVHnbf3hTlx0ZOFWNiaKV72ulAm66xZnYnzg==}
engines: {node: '>=14'}
peerDependencies:
@@ -2847,13 +2837,10 @@ packages:
just-omit: 2.2.0
just-safe-get: 4.2.0
just-split: 3.2.0
- lodash: 4.17.21
pinst: 2.1.6
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-fast-compare: 3.2.2
- react-router: 5.3.4(react@18.2.0)
- react-router-dom: 5.3.4(react@18.2.0)
react-twemoji: 0.5.0(react@18.2.0)
rxjs: 7.8.0
sanity: 3.21.1(@types/react@18.0.9)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.6)
@@ -3112,7 +3099,7 @@ packages:
'@vvo/tzdb': 6.108.0
date-fns: 2.30.0
date-fns-tz: 2.0.0(date-fns@2.30.0)
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
lodash: 4.17.21
pluralize: 8.0.0
react: 18.2.0
@@ -3312,13 +3299,13 @@ packages:
uuid: 8.3.2
dev: false
- /@sanity/vision@3.19.1(@babel/runtime@7.23.2)(@codemirror/lint@6.4.2)(@codemirror/state@6.3.1)(@codemirror/theme-one-dark@6.1.2)(@lezer/common@1.1.0)(codemirror@6.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(styled-components@5.3.6):
+ /@sanity/vision@3.19.1(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(styled-components@5.3.6):
resolution: {integrity: sha512-LlzY4MbrL0BGx5BLzJ/+axZQl0Z+0Ia5DookM/cA7rR1MDDDZJzWDWs6xbjf9bWVvABYrG4QXHr1Vj3q8EymkQ==}
peerDependencies:
react: ^18
styled-components: ^5.2 || ^6
dependencies:
- '@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
+ '@codemirror/autocomplete': 6.10.2
'@codemirror/commands': 6.3.0
'@codemirror/lang-javascript': 6.2.1
'@codemirror/language': 6.9.2
@@ -3331,7 +3318,7 @@ packages:
'@sanity/color': 2.2.5
'@sanity/icons': 2.7.0(react@18.2.0)
'@sanity/ui': 1.8.3(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(styled-components@5.3.6)
- '@uiw/react-codemirror': 4.21.20(@babel/runtime@7.23.2)(@codemirror/autocomplete@6.10.2)(@codemirror/language@6.9.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.4)(@codemirror/state@6.3.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.22.0)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0)
+ '@uiw/react-codemirror': 4.21.20(@codemirror/autocomplete@6.10.2)(@codemirror/language@6.9.2)(@codemirror/search@6.5.4)(@codemirror/view@6.22.0)(react-dom@18.2.0)(react@18.2.0)
hashlru: 2.3.0
is-hotkey: 0.1.8
json5: 2.2.3
@@ -3339,12 +3326,6 @@ packages:
react: 18.2.0
styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)
transitivePeerDependencies:
- - '@babel/runtime'
- - '@codemirror/lint'
- - '@codemirror/state'
- - '@codemirror/theme-one-dark'
- - '@lezer/common'
- - codemirror
- react-dom
- react-is
dev: false
@@ -3358,7 +3339,7 @@ packages:
conventional-changelog-angular: 7.0.0
conventional-commits-filter: 4.0.0
conventional-commits-parser: 5.0.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
import-from: 4.0.0
lodash-es: 4.17.21
micromatch: 4.0.5
@@ -3384,7 +3365,7 @@ packages:
'@octokit/plugin-throttling': 8.1.2(@octokit/core@5.0.1)
'@semantic-release/error': 4.0.0
aggregate-error: 5.0.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
dir-glob: 3.0.1
globby: 13.2.2
http-proxy-agent: 7.0.0
@@ -3431,7 +3412,7 @@ packages:
conventional-changelog-writer: 7.0.1
conventional-commits-filter: 4.0.0
conventional-commits-parser: 5.0.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
get-stream: 7.0.1
import-from: 4.0.0
into-stream: 7.0.0
@@ -3670,7 +3651,7 @@ packages:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.6.0)(typescript@4.0.2)
'@typescript-eslint/utils': 5.62.0(eslint@8.6.0)(typescript@4.0.2)
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
eslint: 8.6.0
graphemer: 1.4.0
ignore: 5.2.4
@@ -3695,7 +3676,7 @@ packages:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.0.2)
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
eslint: 8.6.0
typescript: 4.0.2
transitivePeerDependencies:
@@ -3722,7 +3703,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.0.2)
'@typescript-eslint/utils': 5.62.0(eslint@8.6.0)(typescript@4.0.2)
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
eslint: 8.6.0
tsutils: 3.21.0(typescript@4.0.2)
typescript: 4.0.2
@@ -3746,7 +3727,7 @@ packages:
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.2
@@ -3784,18 +3765,16 @@ packages:
eslint-visitor-keys: 3.4.1
dev: true
- /@uiw/codemirror-extensions-basic-setup@4.21.20(@codemirror/autocomplete@6.10.2)(@codemirror/commands@6.3.0)(@codemirror/language@6.9.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.4)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0):
+ /@uiw/codemirror-extensions-basic-setup@4.21.20(@codemirror/autocomplete@6.10.2)(@codemirror/commands@6.3.0)(@codemirror/language@6.9.2)(@codemirror/search@6.5.4)(@codemirror/view@6.22.0):
resolution: {integrity: sha512-Wyi9q4uw0xGYd/tJ6bULG7tkCLqcUsQT0AQBfCDtnkV3LdiLU0LceTrzJoHJyIKSHsKDJxFQxa1qg3QLt4gIUA==}
peerDependencies:
'@codemirror/autocomplete': '>=6.0.0'
'@codemirror/commands': '>=6.0.0'
'@codemirror/language': '>=6.0.0'
- '@codemirror/lint': '>=6.0.0'
'@codemirror/search': '>=6.0.0'
- '@codemirror/state': '>=6.0.0'
'@codemirror/view': '>=6.0.0'
dependencies:
- '@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
+ '@codemirror/autocomplete': 6.10.2
'@codemirror/commands': 6.3.0
'@codemirror/language': 6.9.2
'@codemirror/lint': 6.4.2
@@ -3804,14 +3783,10 @@ packages:
'@codemirror/view': 6.22.0
dev: false
- /@uiw/react-codemirror@4.21.20(@babel/runtime@7.23.2)(@codemirror/autocomplete@6.10.2)(@codemirror/language@6.9.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.4)(@codemirror/state@6.3.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.22.0)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0):
+ /@uiw/react-codemirror@4.21.20(@codemirror/autocomplete@6.10.2)(@codemirror/language@6.9.2)(@codemirror/search@6.5.4)(@codemirror/view@6.22.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-PdyewPvNXnvT3JHj888yjpbWsAGw5qlxW6w1sMdsqJ0R6vPV++ob1iZXCGrM1FVpbqPK0DNfpXvjzp2gIr3lYw==}
peerDependencies:
- '@babel/runtime': '>=7.11.0'
- '@codemirror/state': '>=6.0.0'
- '@codemirror/theme-one-dark': '>=6.0.0'
'@codemirror/view': '>=6.0.0'
- codemirror: '>=6.0.0'
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
@@ -3820,14 +3795,13 @@ packages:
'@codemirror/state': 6.3.1
'@codemirror/theme-one-dark': 6.1.2
'@codemirror/view': 6.22.0
- '@uiw/codemirror-extensions-basic-setup': 4.21.20(@codemirror/autocomplete@6.10.2)(@codemirror/commands@6.3.0)(@codemirror/language@6.9.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.4)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)
- codemirror: 6.0.1(@lezer/common@1.1.0)
+ '@uiw/codemirror-extensions-basic-setup': 4.21.20(@codemirror/autocomplete@6.10.2)(@codemirror/commands@6.3.0)(@codemirror/language@6.9.2)(@codemirror/search@6.5.4)(@codemirror/view@6.22.0)
+ codemirror: 6.0.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
transitivePeerDependencies:
- '@codemirror/autocomplete'
- '@codemirror/language'
- - '@codemirror/lint'
- '@codemirror/search'
dev: false
@@ -3904,7 +3878,7 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
dependencies:
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
@@ -3913,7 +3887,7 @@ packages:
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
engines: {node: '>= 14'}
dependencies:
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
@@ -4129,7 +4103,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.22.6
+ '@babel/runtime': 7.23.2
cosmiconfig: 7.1.0
resolve: 1.22.2
dev: false
@@ -4421,18 +4395,16 @@ packages:
wrap-ansi: 7.0.0
dev: false
- /codemirror@6.0.1(@lezer/common@1.1.0):
+ /codemirror@6.0.1:
resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==}
dependencies:
- '@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
+ '@codemirror/autocomplete': 6.10.2
'@codemirror/commands': 6.3.0
'@codemirror/language': 6.9.2
'@codemirror/lint': 6.4.2
'@codemirror/search': 6.5.4
'@codemirror/state': 6.3.1
'@codemirror/view': 6.22.0
- transitivePeerDependencies:
- - '@lezer/common'
dev: false
/color-convert@1.9.3:
@@ -4779,6 +4751,17 @@ packages:
ms: 2.1.3
dev: false
+ /debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+
/debug@4.3.4(supports-color@5.5.0):
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
@@ -4790,6 +4773,7 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 5.5.0
+ dev: false
/decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -4874,7 +4858,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.22.6
+ '@babel/runtime': 7.23.2
csstype: 3.1.2
dev: false
@@ -5087,7 +5071,7 @@ packages:
peerDependencies:
esbuild: '>=0.12 <1'
dependencies:
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
esbuild: 0.19.9
transitivePeerDependencies:
- supports-color
@@ -5286,7 +5270,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
doctrine: 3.0.0
enquirer: 2.3.6
escape-string-regexp: 4.0.0
@@ -5583,7 +5567,7 @@ packages:
debug:
optional: true
dependencies:
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
dev: false
/for-each@0.3.3:
@@ -5772,7 +5756,7 @@ packages:
resolution: {integrity: sha512-Pu3pnJfnYuLEhwJgMlFqk19ugvtazzTxh7rg8wATaBL4c5Fy4ahM5B+bGdluiNSNYYK89F5vSa+N3sTa/qqtlg==}
engines: {node: '>=14.0.0'}
dependencies:
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
decompress-response: 7.0.0
follow-redirects: 1.15.3(debug@4.3.4)
into-stream: 6.0.0
@@ -6061,17 +6045,6 @@ packages:
space-separated-tokens: 1.1.5
dev: false
- /history@4.10.1:
- resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==}
- dependencies:
- '@babel/runtime': 7.23.2
- loose-envify: 1.4.0
- resolve-pathname: 3.0.0
- tiny-invariant: 1.3.1
- tiny-warning: 1.0.3
- value-equal: 1.0.1
- dev: false
-
/history@5.3.0:
resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
dependencies:
@@ -6150,7 +6123,7 @@ packages:
dependencies:
'@tootallnate/once': 2.0.0
agent-base: 6.0.2
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
@@ -6160,7 +6133,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
@@ -6170,7 +6143,7 @@ packages:
engines: {node: '>= 6'}
dependencies:
agent-base: 6.0.2
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
@@ -6180,7 +6153,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
@@ -7560,12 +7533,6 @@ packages:
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- /path-to-regexp@1.8.0:
- resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==}
- dependencies:
- isarray: 0.0.1
- dev: false
-
/path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -7777,7 +7744,7 @@ packages:
peerDependencies:
react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
dependencies:
- '@babel/runtime': 7.22.6
+ '@babel/runtime': 7.23.2
react: 18.2.0
dev: false
@@ -7955,38 +7922,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
- /react-router-dom@5.3.4(react@18.2.0):
- resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==}
- peerDependencies:
- react: '>=15'
- dependencies:
- '@babel/runtime': 7.23.2
- history: 4.10.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
- react: 18.2.0
- react-router: 5.3.4(react@18.2.0)
- tiny-invariant: 1.3.1
- tiny-warning: 1.0.3
- dev: false
-
- /react-router@5.3.4(react@18.2.0):
- resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==}
- peerDependencies:
- react: '>=15'
- dependencies:
- '@babel/runtime': 7.23.2
- history: 4.10.1
- hoist-non-react-statics: 3.3.2
- loose-envify: 1.4.0
- path-to-regexp: 1.8.0
- prop-types: 15.8.1
- react: 18.2.0
- react-is: 16.13.1
- tiny-invariant: 1.3.1
- tiny-warning: 1.0.3
- dev: false
-
/react-rx@2.1.3(react@18.2.0)(rxjs@7.8.0):
resolution: {integrity: sha512-4dppkgEFAldr75IUUz14WyxuI2cJhpXYrrIM+4gvG6slKzaMUCmcgiiykx9Hst0UmtwNt247nRoOFDmN0Q7GJw==}
peerDependencies:
@@ -8032,7 +7967,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.22.6
+ '@babel/runtime': 7.23.2
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -8241,7 +8176,7 @@ packages:
/regenerator-transform@0.15.2:
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
dependencies:
- '@babel/runtime': 7.22.10
+ '@babel/runtime': 7.23.2
dev: true
/regexp.prototype.flags@1.5.0:
@@ -8306,10 +8241,6 @@ packages:
engines: {node: '>=8'}
dev: false
- /resolve-pathname@3.0.0:
- resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==}
- dev: false
-
/resolve@1.22.2:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true
@@ -8673,7 +8604,7 @@ packages:
'@semantic-release/release-notes-generator': 12.0.0(semantic-release@22.0.6)
aggregate-error: 5.0.0
cosmiconfig: 8.3.6(typescript@4.0.2)
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
env-ci: 10.0.0
execa: 8.0.1
figures: 6.0.1
@@ -9577,10 +9508,6 @@ packages:
spdx-expression-parse: 3.0.1
dev: false
- /value-equal@1.0.1:
- resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==}
- dev: false
-
/vite@4.5.0:
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -9808,3 +9735,7 @@ packages:
/zod@3.22.2:
resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==}
dev: false
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
diff --git a/sanityv3/schemas/components/ColorSelector/ColorSelector.tsx b/sanityv3/schemas/components/ColorSelector/ColorSelector.tsx
index 9a8042086..61aa58c08 100644
--- a/sanityv3/schemas/components/ColorSelector/ColorSelector.tsx
+++ b/sanityv3/schemas/components/ColorSelector/ColorSelector.tsx
@@ -3,7 +3,7 @@ import { useCallback } from 'react'
import { set } from 'sanity'
import type { ObjectInputProps } from 'sanity'
import styled from 'styled-components'
-import { defaultColors } from './defaultColors'
+import { defaultColors } from '../../defaultColors'
const Circle = styled.div<{ active: boolean }>`
display: inline-block;
@@ -23,6 +23,9 @@ const InnerCircle = styled.div<{ color: string }>`
export type ColorSelectorValue = {
title: string
value: string
+ dark?: boolean
+ key?: string
+ onlyTextColor?: boolean
}
type ColorCircleProps = {
@@ -64,6 +67,8 @@ export const ColorSelector = ({ value, onChange, schemaType }: ColorSelectorProp
onChange(set(selected.title, ['title']))
onChange(set(selected.value, ['value']))
+ onChange(set(selected.dark, ['dark']))
+ onChange(set(selected.key, ['key']))
},
[onChange, value],
)
@@ -73,16 +78,18 @@ export const ColorSelector = ({ value, onChange, schemaType }: ColorSelectorProp
{colors && (
- {colors.map((colorItem: ColorSelectorValue) => {
- return (
-
- )
- })}
+ {colors
+ .filter((colorItem: ColorSelectorValue) => !colorItem?.onlyTextColor)
+ .map((colorItem: ColorSelectorValue) => {
+ return (
+
+ )
+ })}
)}
diff --git a/sanityv3/schemas/components/ColorSelector/defaultColors.ts b/sanityv3/schemas/components/ColorSelector/defaultColors.ts
deleted file mode 100644
index d41f2cec2..000000000
--- a/sanityv3/schemas/components/ColorSelector/defaultColors.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export const defaultColors = [
- { title: 'White', value: 'hsl(0, 0%, 100%)' },
- //{ title: 'Moss Green', value: 'hsl(184, 31%, 74%)' },
- { title: 'Moss Green Light', value: 'hsl(184, 30%, 96%)' },
- { title: 'Spruce Wood', value: 'hsl(25, 100%, 94%)' },
- { title: 'Mist Blue', value: 'hsl(199, 58%, 90%)' },
- // { title: 'Slate Blue', value: 'hsl(206, 34%, 14%)' },
- { title: 'Mid Yellow', value: '#FFF5B8' },
- { title: 'Mid Orange', value: '#F8D1AF' },
- { title: 'Mid Blue', value: '#49709C' },
- { title: 'Mid Green', value: '#C3E4CE' },
-]
diff --git a/sanityv3/schemas/components/ColorSelector/index.ts b/sanityv3/schemas/components/ColorSelector/index.ts
index 796008274..38cabdfb6 100644
--- a/sanityv3/schemas/components/ColorSelector/index.ts
+++ b/sanityv3/schemas/components/ColorSelector/index.ts
@@ -1,2 +1 @@
export * from './ColorSelector'
-export * from './defaultColors'
diff --git a/sanityv3/schemas/components/ThemeSelector/ThemeSelector.tsx b/sanityv3/schemas/components/ThemeSelector/ThemeSelector.tsx
index fbf6c6d53..e854181c2 100644
--- a/sanityv3/schemas/components/ThemeSelector/ThemeSelector.tsx
+++ b/sanityv3/schemas/components/ThemeSelector/ThemeSelector.tsx
@@ -3,7 +3,7 @@ import { useCallback } from 'react'
import { set } from 'sanity'
import type { ObjectInputProps } from 'sanity'
import styled from 'styled-components'
-import { defaultColors, getColorForTheme } from './defaultColors'
+import { themeColors, getColorForTheme } from './themeColors'
import { EdsIcon } from '../../../icons'
import { text_field } from '@equinor/eds-icons'
@@ -52,7 +52,7 @@ const ColorCircle = ({ color, active, onClickHandler }: ColorCircleProps) => {
portal
>
onClickHandler(color)}>
-
+
@@ -65,7 +65,7 @@ type ThemeSelectorProps = ObjectInputProps
export const ThemeSelector = ({ value, onChange, schemaType }: ThemeSelectorProps) => {
const { options } = schemaType
- const colors = (options?.colors as ThemeSelectorValue[]) || defaultColors
+ const colors = (options?.colors as ThemeSelectorValue[]) || themeColors
const handleSelect = useCallback(
(selected: ThemeSelectorValue) => {
@@ -86,7 +86,7 @@ export const ThemeSelector = ({ value, onChange, schemaType }: ThemeSelectorProp
const { background } = getColorForTheme(colorItem.value)
return (
{
- switch (pattern) {
- case 1:
- return { background: 'hsl(184, 30%, 96%)', highlight: 'hsl(348, 100%, 54%)' }
- case 2:
- return { background: 'hsl(25, 100%, 94%)', highlight: 'hsl(348, 100%, 54%)' }
- case 3:
- return { background: 'hsl(199, 58%, 90%)', highlight: 'hsl(348, 100%, 54%)' }
- case 4:
- return { background: '#FFF5B8', highlight: 'hsl(348, 100%, 54%)' }
- case 5:
- return { background: '#F8D1AF', highlight: 'hsl(348, 100%, 54%)' }
- case 6:
- return { background: '#49709C', highlight: '#F8D1AF' }
- case 7:
- return { background: '#49709C', highlight: '#FFF5B8' }
- case 8:
- return { background: '#C3E4CE', highlight: 'hsl(348, 100%, 54%)' }
-
- case 0:
- default:
- return { background: 'hsl(0, 0%, 100%)', highlight: 'hsl(348, 100%, 54%)' }
- }
-}
diff --git a/sanityv3/schemas/components/ThemeSelector/index.ts b/sanityv3/schemas/components/ThemeSelector/index.ts
index 943f0fb99..88981a532 100644
--- a/sanityv3/schemas/components/ThemeSelector/index.ts
+++ b/sanityv3/schemas/components/ThemeSelector/index.ts
@@ -1,2 +1,2 @@
export * from './ThemeSelector'
-export * from './defaultColors'
+export * from './themeColors'
diff --git a/sanityv3/schemas/components/ThemeSelector/themeColors.ts b/sanityv3/schemas/components/ThemeSelector/themeColors.ts
new file mode 100644
index 000000000..77c1f178a
--- /dev/null
+++ b/sanityv3/schemas/components/ThemeSelector/themeColors.ts
@@ -0,0 +1,121 @@
+import { defaultColors } from '../../defaultColors'
+
+//Keep in sync with web/pageComponents/shared/textTeaser/theme
+export const themeColors = [
+ { title: 'White', value: 0 },
+ { title: 'Moss Green Light', value: 1 },
+ { title: 'Spruce Wood', value: 2 },
+ { title: 'Mist Blue', value: 3 },
+ { title: 'Mid Yellow', value: 4 },
+ { title: 'Mid Orange', value: 5 },
+ { title: 'Mid Blue 1', value: 6 },
+ { title: 'Mid Blue 2', value: 7 },
+ { title: 'Mid Green', value: 8 },
+]
+
+//Keep in sync with web/pageComponents/shared/textTeaser/theme
+export const getColorForTheme = (pattern: number) => {
+ switch (pattern) {
+ case 1:
+ return {
+ background: {
+ value: defaultColors[1].value,
+ key: defaultColors[1].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+ case 2:
+ return {
+ background: {
+ value: defaultColors[2].value,
+ key: defaultColors[2].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+ case 3:
+ return {
+ background: {
+ value: defaultColors[3].value,
+ key: defaultColors[3].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+ case 4:
+ return {
+ background: {
+ value: defaultColors[4].value,
+ key: defaultColors[4].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+ case 5:
+ return {
+ background: {
+ value: defaultColors[5].value,
+ key: defaultColors[5].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+ case 6:
+ return {
+ background: {
+ value: defaultColors[6].value,
+ key: defaultColors[6].key,
+ },
+ highlight: {
+ value: defaultColors[5].value,
+ key: defaultColors[5].key,
+ },
+ }
+ case 7:
+ return {
+ background: {
+ value: defaultColors[6].value,
+ key: defaultColors[6].key,
+ },
+ highlight: {
+ value: defaultColors[4].value,
+ key: defaultColors[4].key,
+ },
+ }
+ case 8:
+ return {
+ background: {
+ value: defaultColors[7].value,
+ key: defaultColors[7].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+
+ case 0:
+ default:
+ return {
+ background: {
+ value: defaultColors[0].value,
+ key: defaultColors[0].key,
+ },
+ highlight: {
+ value: defaultColors[8].value,
+ key: defaultColors[8].key,
+ },
+ }
+ }
+}
diff --git a/sanityv3/schemas/defaultColors.js b/sanityv3/schemas/defaultColors.js
new file mode 100644
index 000000000..ca25f7f27
--- /dev/null
+++ b/sanityv3/schemas/defaultColors.js
@@ -0,0 +1,28 @@
+import colors from '../colorConfig'
+
+export const defaultColors = [
+ {
+ title: 'White',
+ value: colors.white[100],
+ key: 'white-100',
+ dark: false,
+ },
+ {
+ title: 'Moss Green Light',
+ value: colors['moss-green'][50],
+ key: 'moss-green-50',
+ dark: false,
+ },
+ {
+ title: 'Spruce Wood',
+ value: colors['spruce-wood'][90],
+ key: 'spruce-wood-90',
+ dark: false,
+ },
+ { title: 'Mist Blue', value: colors['mist-blue'][100], key: 'mist-blue-100', dark: false },
+ { title: 'Mid Yellow', value: colors.yellow[50], key: 'yellow-50', dark: false },
+ { title: 'Mid Orange', value: colors.orange[50], key: 'orange-50', dark: false },
+ { title: 'Mid Blue', value: colors.blue[50], key: 'blue-50', dark: true },
+ { title: 'Mid Green', value: colors.green[50], key: 'green-50', dark: false },
+ { title: 'Energy Red', value: colors['energy-red'][100], key: 'energy-red-50', dark: false, onlyTextColor: true },
+]
diff --git a/sanityv3/schemas/documents/404.ts b/sanityv3/schemas/documents/404.ts
index 1f153ee51..517e54d48 100644
--- a/sanityv3/schemas/documents/404.ts
+++ b/sanityv3/schemas/documents/404.ts
@@ -9,7 +9,6 @@ import { configureBlockContent } from '../editors/blockContentType'
const titleContentType = configureTitleBlockContent()
const textContentType = configureBlockContent({
- h1: false,
h2: true,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/500.ts b/sanityv3/schemas/documents/500.ts
index bdd4a81e4..73cb127a4 100644
--- a/sanityv3/schemas/documents/500.ts
+++ b/sanityv3/schemas/documents/500.ts
@@ -9,7 +9,6 @@ import { configureBlockContent } from '../editors/blockContentType'
const titleContentType = configureTitleBlockContent()
const textContentType = configureBlockContent({
- h1: false,
h2: true,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/event.ts b/sanityv3/schemas/documents/event.ts
index 89ff775f2..539b12d46 100644
--- a/sanityv3/schemas/documents/event.ts
+++ b/sanityv3/schemas/documents/event.ts
@@ -12,7 +12,6 @@ import type { RelatedLinksArray } from '../objects/relatedLinks'
const titleContentType = configureTitleBlockContent()
const blockContentType = configureBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/header/sharedHeaderFields.ts b/sanityv3/schemas/documents/header/sharedHeaderFields.ts
index 6ddd08f05..64792a3e1 100644
--- a/sanityv3/schemas/documents/header/sharedHeaderFields.ts
+++ b/sanityv3/schemas/documents/header/sharedHeaderFields.ts
@@ -15,7 +15,6 @@ type Hero = {
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/landingPage.ts b/sanityv3/schemas/documents/landingPage.ts
index bdef88ce8..1fc9c875e 100644
--- a/sanityv3/schemas/documents/landingPage.ts
+++ b/sanityv3/schemas/documents/landingPage.ts
@@ -10,7 +10,6 @@ import { configureBlockContent } from '../editors/blockContentType'
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/magazine.ts b/sanityv3/schemas/documents/magazine.ts
index ac8106ee8..47f683066 100644
--- a/sanityv3/schemas/documents/magazine.ts
+++ b/sanityv3/schemas/documents/magazine.ts
@@ -2,7 +2,7 @@ import type { Rule, SanityDocument } from 'sanity'
import slugify from 'slugify'
import { magazineSlug } from '../../../satellitesConfig'
import blocksToText from '../../helpers/blocksToText'
-import { defaultColors } from '../components/ColorSelector'
+import { defaultColors } from '../defaultColors'
import { defaultLanguage } from '../../languages'
import { Flags } from '../../src/lib/datasetHelpers'
import SlugInput from '../components/SlugInput'
@@ -15,7 +15,6 @@ import { EdsIcon } from '../../icons'
import { bookmarks } from '@equinor/eds-icons'
const ingressBlockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/magazineIndexPage.ts b/sanityv3/schemas/documents/magazineIndexPage.ts
index 26fb1777d..95c598b31 100644
--- a/sanityv3/schemas/documents/magazineIndexPage.ts
+++ b/sanityv3/schemas/documents/magazineIndexPage.ts
@@ -9,7 +9,6 @@ import { bookmarks } from '@equinor/eds-icons'
import type { PortableTextBlock, Rule } from 'sanity'
const textContentType = configureBlockContent({
- h1: false,
h2: true,
h3: true,
h4: false,
diff --git a/sanityv3/schemas/documents/news/sharedNewsFields.ts b/sanityv3/schemas/documents/news/sharedNewsFields.ts
index 20528943c..f70a16c78 100644
--- a/sanityv3/schemas/documents/news/sharedNewsFields.ts
+++ b/sanityv3/schemas/documents/news/sharedNewsFields.ts
@@ -4,7 +4,6 @@ import type { Rule, ValidationContext } from 'sanity'
const blockContentType = configureBlockContent()
const ingressBlockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/newsroom.ts b/sanityv3/schemas/documents/newsroom.ts
index 4d926a227..45dcf9d95 100644
--- a/sanityv3/schemas/documents/newsroom.ts
+++ b/sanityv3/schemas/documents/newsroom.ts
@@ -9,7 +9,6 @@ import type { PortableTextBlock, Rule } from 'sanity'
const titleContentType = configureTitleBlockContent()
const textContentType = configureBlockContent({
- h1: false,
h2: true,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/documents/page.ts b/sanityv3/schemas/documents/page.ts
index 913d4409e..c6a3629ac 100644
--- a/sanityv3/schemas/documents/page.ts
+++ b/sanityv3/schemas/documents/page.ts
@@ -1,5 +1,5 @@
import blocksToText from '../../helpers/blocksToText'
-import { defaultColors } from '../components/ColorSelector'
+import { defaultColors } from '../defaultColors'
import { Flags } from '../../src/lib/datasetHelpers'
import { i18n } from '../documentTranslation'
import { HeroTypes } from '../HeroTypes'
diff --git a/sanityv3/schemas/documents/subMenu.tsx b/sanityv3/schemas/documents/subMenu.tsx
index 4353d5853..5eb57e6a0 100644
--- a/sanityv3/schemas/documents/subMenu.tsx
+++ b/sanityv3/schemas/documents/subMenu.tsx
@@ -21,7 +21,6 @@ export type SubMenu = {
}
const introBlockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/editors/blockContentType.tsx b/sanityv3/schemas/editors/blockContentType.tsx
index 0c765f339..7f506779b 100644
--- a/sanityv3/schemas/editors/blockContentType.tsx
+++ b/sanityv3/schemas/editors/blockContentType.tsx
@@ -5,11 +5,14 @@ import { EdsBlockEditorIcon, EdsIcon, IconSubScript, IconSuperScript } from '../
import { Flags } from '../../src/lib/datasetHelpers'
import { ExternalLinkRenderer, SubScriptRenderer, SuperScriptRenderer } from '../components'
import routes from '../routes'
+import { component } from 'sanity/desk'
+import { defaultColors } from '../defaultColors'
export type BlockContentProps = {
- h1?: boolean
h2?: boolean
+ useH2BaseStyle?: boolean
h3?: boolean
+ useH3BaseStyle?: boolean
h4?: boolean
internalLink?: boolean
externalLink?: boolean
@@ -29,20 +32,38 @@ export const textColorConfig = {
value: 'highlight',
icon: EdsBlockEditorIcon(format_color_text),
component: ({ children }: { children: React.ReactNode }) => {
- return {children}
+ return {children}
},
}
+const round = (num: number) =>
+ num
+ .toFixed(7)
+ .replace(/(\.[0-9]+?)0+$/, '$1')
+ .replace(/\.0$/, '')
+const em = (px: number, base: number) => `${round(px / base)}em`
+
const SmallTextRender = (props: any) => {
const { children } = props
return {children}
}
+const Level2BaseStyle = (props: any) => {
+ const { children } = props
+ return {children}
+}
+
+const Level3BaseStyle = (props: any) => {
+ const { children } = props
+ return {children}
+}
+// H1 not allowed in block content since it should be a document title.
export const configureBlockContent = (options: BlockContentProps = {}): BlockDefinition => {
const {
- h1 = false,
h2 = true,
+ useH2BaseStyle = true,
h3 = true,
+ useH3BaseStyle = true,
h4 = false,
internalLink = true,
externalLink = true,
@@ -85,10 +106,11 @@ export const configureBlockContent = (options: BlockContentProps = {}): BlockDef
},
}
- const h1Config = { title: 'Title (h1)', value: 'h1' }
- const h2Config = { title: 'Title (h2)', value: 'h2' }
- const h3Config = { title: 'Subtitle (h3)', value: 'h3' }
- const h4Config = { title: 'Subtitle (h4)', value: 'h4' }
+ const h2DefaultConfig = { title: 'Heading 2', value: 'h2' }
+ const h2BaseConfig = { title: 'Heading 2', value: 'h2', component: Level2BaseStyle }
+ const h3DefaultConfig = { title: 'Heading 3', value: 'h3' }
+ const h3BaseConfig = { title: 'Heading 3', value: 'h3', component: Level3BaseStyle }
+ const h4Config = { title: 'Heading 3', value: 'h4' }
const smallTextConfig = {
title: 'Small text',
value: 'smallText',
@@ -219,16 +241,20 @@ export const configureBlockContent = (options: BlockContentProps = {}): BlockDef
],
}
- if (h1) {
- config?.styles?.push(h1Config)
- }
-
if (h2) {
- config?.styles?.push(h2Config)
+ if (useH2BaseStyle) {
+ config?.styles?.push(h2BaseConfig)
+ } else {
+ config?.styles?.push(h2DefaultConfig)
+ }
}
if (h3) {
- config?.styles?.push(h3Config)
+ if (useH3BaseStyle) {
+ config?.styles?.push(h3BaseConfig)
+ } else {
+ config?.styles?.push(h3DefaultConfig)
+ }
}
if (h4) {
diff --git a/sanityv3/schemas/editors/titleEditorContentType.tsx b/sanityv3/schemas/editors/titleEditorContentType.tsx
index f5acf61cb..bd904c3a2 100644
--- a/sanityv3/schemas/editors/titleEditorContentType.tsx
+++ b/sanityv3/schemas/editors/titleEditorContentType.tsx
@@ -3,6 +3,7 @@ import { IconSuperScript, IconSubScript, EdsBlockEditorIcon } from '../../icons'
import { StrikethroughIcon } from '@sanity/icons'
import { BlockDefinition, BlockStyleDefinition } from 'sanity'
import { format_color_text } from '@equinor/eds-icons'
+import { defaultColors } from '../defaultColors'
export type TitleContentProps = {
styles?: BlockStyleDefinition[]
@@ -60,7 +61,7 @@ export const configureTitleBlockContent = (
value: 'highlight',
icon: EdsBlockEditorIcon(format_color_text),
component: ({ children }: { children: React.ReactNode }) => {
- return {children}
+ return {children}
},
}
diff --git a/sanityv3/schemas/index.js b/sanityv3/schemas/index.js
index aef6ed6b1..9795140e9 100644
--- a/sanityv3/schemas/index.js
+++ b/sanityv3/schemas/index.js
@@ -89,6 +89,7 @@ import hlsVideo from './objects/hlsVideo'
import themeList from './objects/themeList'
import keyNumbers from './objects/keyNumbers'
import keyNumberItem from './objects/keyNumberItem'
+import keyValue from './objects/keyValue'
const routeSchemas = languages.map(({ name, title }) => {
return route(name, title)
@@ -172,6 +173,7 @@ const RemainingSchemas = [
themeList,
keyNumbers,
keyNumberItem,
+ keyValue,
]
// Then we give our schema to the builder and provide the result to Sanity
diff --git a/sanityv3/schemas/objects/accordion.tsx b/sanityv3/schemas/objects/accordion.tsx
index 8fae5a788..fa27b7503 100644
--- a/sanityv3/schemas/objects/accordion.tsx
+++ b/sanityv3/schemas/objects/accordion.tsx
@@ -18,7 +18,6 @@ export type Accordion = {
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/accordionItem.tsx b/sanityv3/schemas/objects/accordionItem.tsx
index fdc475f6d..b5c1c2d36 100644
--- a/sanityv3/schemas/objects/accordionItem.tsx
+++ b/sanityv3/schemas/objects/accordionItem.tsx
@@ -10,7 +10,6 @@ export type AccordionItem = {
}
const contentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/colorList.tsx b/sanityv3/schemas/objects/colorList.tsx
index d29bc2750..ba6b0c687 100644
--- a/sanityv3/schemas/objects/colorList.tsx
+++ b/sanityv3/schemas/objects/colorList.tsx
@@ -1,9 +1,12 @@
-import { ColorSelector, defaultColors } from '../components/ColorSelector'
+import { ColorSelector } from '../components/ColorSelector'
+import { defaultColors } from '../defaultColors'
import { defineType, defineField } from 'sanity'
export type ColorType = {
title: string
value: string
+ key: string
+ dark: boolean
}
export default defineType({
@@ -23,6 +26,8 @@ export default defineType({
initialValue: {
title: defaultColors[0].title,
value: defaultColors[0].value,
+ key: defaultColors[0].key,
+ dark: defaultColors[0].dark,
},
components: {
input: (props) => {
diff --git a/sanityv3/schemas/objects/factbox.tsx b/sanityv3/schemas/objects/factbox.tsx
index 9b52ad0e1..23e2191b3 100644
--- a/sanityv3/schemas/objects/factbox.tsx
+++ b/sanityv3/schemas/objects/factbox.tsx
@@ -12,7 +12,6 @@ const imageAlignmentOptions = [
]
const blockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/form.tsx b/sanityv3/schemas/objects/form.tsx
index 7b1849f00..1d7b2f918 100644
--- a/sanityv3/schemas/objects/form.tsx
+++ b/sanityv3/schemas/objects/form.tsx
@@ -23,7 +23,6 @@ type FormType =
| 'careerFairAndVisitsForm'
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/iframe.tsx b/sanityv3/schemas/objects/iframe.tsx
index dfd1d9cf6..56cf66708 100644
--- a/sanityv3/schemas/objects/iframe.tsx
+++ b/sanityv3/schemas/objects/iframe.tsx
@@ -19,7 +19,6 @@ import {
} from './iframe/sharedIframeFields'
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/iframe/sharedIframeFields.tsx b/sanityv3/schemas/objects/iframe/sharedIframeFields.tsx
index 07c08b85e..82693b5a0 100644
--- a/sanityv3/schemas/objects/iframe/sharedIframeFields.tsx
+++ b/sanityv3/schemas/objects/iframe/sharedIframeFields.tsx
@@ -6,7 +6,6 @@ import type { IFrame } from '../iframe'
const titleContentType = configureTitleBlockContent()
const descriptionContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/keyNumbers.tsx b/sanityv3/schemas/objects/keyNumbers.tsx
index 67c72b047..50816ceb2 100644
--- a/sanityv3/schemas/objects/keyNumbers.tsx
+++ b/sanityv3/schemas/objects/keyNumbers.tsx
@@ -6,7 +6,6 @@ import blocksToText from '../../helpers/blocksToText'
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
@@ -14,7 +13,6 @@ const ingressContentType = configureBlockContent({
})
const disclaimerContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/keyValue.tsx b/sanityv3/schemas/objects/keyValue.tsx
new file mode 100644
index 000000000..70ee34336
--- /dev/null
+++ b/sanityv3/schemas/objects/keyValue.tsx
@@ -0,0 +1,17 @@
+import { defineType, defineField } from 'sanity'
+
+export default defineType({
+ name: 'keyValue',
+ title: 'KeyValue',
+ type: 'object',
+ fields: [
+ defineField({
+ name: 'key',
+ type: 'string',
+ }),
+ defineField({
+ name: 'value',
+ type: 'string',
+ }),
+ ],
+})
diff --git a/sanityv3/schemas/objects/magazineFooterComponent.tsx b/sanityv3/schemas/objects/magazineFooterComponent.tsx
index 8066c1a63..23d3e0fc9 100644
--- a/sanityv3/schemas/objects/magazineFooterComponent.tsx
+++ b/sanityv3/schemas/objects/magazineFooterComponent.tsx
@@ -20,7 +20,6 @@ const imageAlignmentOptions = [
]
const blockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/promotion/promoteTopic.tsx b/sanityv3/schemas/objects/promotion/promoteTopic.tsx
index d82da868e..98238c416 100644
--- a/sanityv3/schemas/objects/promotion/promoteTopic.tsx
+++ b/sanityv3/schemas/objects/promotion/promoteTopic.tsx
@@ -8,7 +8,6 @@ import { Flags } from '../../../src/lib/datasetHelpers'
import routes from '../../routes'
const introBlockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/promotion/promotion.tsx b/sanityv3/schemas/objects/promotion/promotion.tsx
index 536144017..c4ca6ea71 100644
--- a/sanityv3/schemas/objects/promotion/promotion.tsx
+++ b/sanityv3/schemas/objects/promotion/promotion.tsx
@@ -47,7 +47,6 @@ type PromotionType = 'promoteTopics' | 'promoteNews' | 'promotePeople' | 'promot
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/table/index.tsx b/sanityv3/schemas/objects/table/index.tsx
index c6de8c8f3..ce0fac456 100644
--- a/sanityv3/schemas/objects/table/index.tsx
+++ b/sanityv3/schemas/objects/table/index.tsx
@@ -1,5 +1,5 @@
import blocksToText from '../../../helpers/blocksToText'
-import { defaultColors } from '../../components/ColorSelector'
+import { defaultColors } from '../../defaultColors'
import CompactBlockEditor from '../../components/CompactBlockEditor'
import { configureBlockContent, configureTitleBlockContent } from '../../editors'
@@ -35,7 +35,6 @@ const themes: ColorType[] = [
]
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
@@ -43,7 +42,6 @@ const ingressContentType = configureBlockContent({
})
const headerCellContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/teaser.tsx b/sanityv3/schemas/objects/teaser.tsx
index db77b5f72..e738943ec 100644
--- a/sanityv3/schemas/objects/teaser.tsx
+++ b/sanityv3/schemas/objects/teaser.tsx
@@ -26,7 +26,6 @@ const imageAlignmentOptions = [
]
const blockConfig = {
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/textBlock.tsx b/sanityv3/schemas/objects/textBlock.tsx
index 7e10bc4f8..7b424c65c 100644
--- a/sanityv3/schemas/objects/textBlock.tsx
+++ b/sanityv3/schemas/objects/textBlock.tsx
@@ -9,7 +9,6 @@ import { configureBlockContent, configureTitleBlockContent } from '../editors'
import { validateComponentAnchor } from '../validations/validateAnchorReference'
const blockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: true,
h4: false,
@@ -17,7 +16,6 @@ const blockContentType = configureBlockContent({
})
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
@@ -25,7 +23,6 @@ const ingressContentType = configureBlockContent({
})
const blockContentTypeForBigText = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/textTeaser.tsx b/sanityv3/schemas/objects/textTeaser.tsx
index 1b1c76cf9..af8f75ab2 100644
--- a/sanityv3/schemas/objects/textTeaser.tsx
+++ b/sanityv3/schemas/objects/textTeaser.tsx
@@ -29,7 +29,6 @@ const titleAlignmentOptions = [
]
const blockConfig = {
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/textWithIcon.tsx b/sanityv3/schemas/objects/textWithIcon.tsx
index a6766223c..a9baa258a 100644
--- a/sanityv3/schemas/objects/textWithIcon.tsx
+++ b/sanityv3/schemas/objects/textWithIcon.tsx
@@ -4,7 +4,6 @@ import { EdsIcon } from '../../icons'
import { configureBlockContent } from '../editors/blockContentType'
const blockContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/themeList.tsx b/sanityv3/schemas/objects/themeList.tsx
index 98dc86af6..35ef5afc6 100644
--- a/sanityv3/schemas/objects/themeList.tsx
+++ b/sanityv3/schemas/objects/themeList.tsx
@@ -1,4 +1,4 @@
-import { ThemeSelector, defaultColors } from '../components/ThemeSelector'
+import { ThemeSelector, themeColors } from '../components/ThemeSelector'
import { defineType, defineField } from 'sanity'
export default defineType({
@@ -16,8 +16,8 @@ export default defineType({
}),
],
initialValue: {
- title: defaultColors[0].title,
- value: defaultColors[0].value,
+ title: themeColors[0].title,
+ value: themeColors[0].value,
},
components: {
input: (props) => {
diff --git a/sanityv3/schemas/objects/twitterEmbed.tsx b/sanityv3/schemas/objects/twitterEmbed.tsx
index abd8db4f6..ade41a20e 100644
--- a/sanityv3/schemas/objects/twitterEmbed.tsx
+++ b/sanityv3/schemas/objects/twitterEmbed.tsx
@@ -12,7 +12,6 @@ export type TwitterEmbed = {
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/videoPlayer.tsx b/sanityv3/schemas/objects/videoPlayer.tsx
index 4cd28f0ba..5f02cf524 100644
--- a/sanityv3/schemas/objects/videoPlayer.tsx
+++ b/sanityv3/schemas/objects/videoPlayer.tsx
@@ -10,7 +10,6 @@ import { ImageWithAlt } from './imageWithAlt'
const titleContentType = configureTitleBlockContent()
const ingressContentType = configureBlockContent({
- h1: false,
h2: false,
h3: false,
h4: false,
diff --git a/sanityv3/schemas/objects/videoPlayerCarousel.tsx b/sanityv3/schemas/objects/videoPlayerCarousel.tsx
index 1e3ff0cab..d84e03cac 100644
--- a/sanityv3/schemas/objects/videoPlayerCarousel.tsx
+++ b/sanityv3/schemas/objects/videoPlayerCarousel.tsx
@@ -5,7 +5,7 @@ import type { Reference, Rule, PortableTextBlock } from 'sanity'
import { title } from './iframe/sharedIframeFields'
import { configureTitleBlockContent } from '../editors'
import CompactBlockEditor from '../components/CompactBlockEditor'
-import { defaultColors } from '../components/ColorSelector'
+import { defaultColors } from '../defaultColors'
const titleContentType = configureTitleBlockContent()
diff --git a/web/colorConfig.js b/web/colorConfig.js
new file mode 100644
index 000000000..64c151c89
--- /dev/null
+++ b/web/colorConfig.js
@@ -0,0 +1,32 @@
+//IMPORTANT
+// Sanityv3/colorConfig in sync with this
+module.exports = {
+ white: {
+ 100: 'hsl(0, 0%, 100%)',
+ },
+ 'moss-green': {
+ //moss-green-light
+ 50: 'hsl(184, 30%, 96%)',
+ },
+ 'spruce-wood': {
+ 90: 'hsl(25, 100%, 94%)',
+ },
+ 'mist-blue': {
+ 100: 'hsl(199, 58%, 90%)',
+ },
+ 'energy-red': {
+ 100: 'hsl(348, 100%, 54%)',
+ },
+ green: {
+ 50: '#c3e4ce',
+ },
+ yellow: {
+ 50: '#fff5b8',
+ },
+ blue: {
+ 50: '#49709c',
+ },
+ orange: {
+ 50: '#f8d1af',
+ },
+}
diff --git a/web/components/src/Heading/Heading.tsx b/web/components/src/Heading/Heading.tsx
index 6ee9c24e6..45dabf6b6 100644
--- a/web/components/src/Heading/Heading.tsx
+++ b/web/components/src/Heading/Heading.tsx
@@ -3,8 +3,8 @@ import { Typography } from '@equinor/eds-core-react'
import styled from 'styled-components'
type StyledHeadingProps = {
- center: boolean
-}
+ $center: boolean
+} & HTMLAttributes
const StyledHeading = styled(Typography)`
font-size: var(--size);
@@ -12,8 +12,8 @@ const StyledHeading = styled(Typography)`
font-weight: var(--font-weight);
text-transform: var(--text-transform);
- ${({ center }) =>
- center && {
+ ${({ $center }) =>
+ $center && {
textAlign: 'center',
}}
color: var(--color-on-background);
@@ -64,7 +64,7 @@ const fontWeights = {
'5xl': 'var(--fontWeight-regular)',
}
-export const Heading = forwardRef(function Heading(
+export const Heading = forwardRef(function Heading(
{ size = 'lg', level = 'h3', regular = false, center = false, uppercase = false, style, children, ...rest },
ref,
) {
@@ -72,7 +72,7 @@ export const Heading = forwardRef(function Heading
+type TextProps = HTMLAttributes
const StyledText = styled.div`
p {
@@ -10,5 +10,6 @@ const StyledText = styled.div`
`
export const Text = ({ children, ...rest }: TextProps) => {
+ console.log('children', children)
return {children}
}
diff --git a/web/core/Heading.tsx b/web/core/Heading.tsx
new file mode 100644
index 000000000..d41c5ae7e
--- /dev/null
+++ b/web/core/Heading.tsx
@@ -0,0 +1,33 @@
+import { forwardRef, HTMLAttributes } from 'react'
+import { OverridableComponent } from '@equinor/eds-utils'
+import { twMerge } from 'tailwind-merge'
+
+export type HeadingProps = {
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl'
+ level?: '1' | '2' | '3' | '4' | '5' | '6'
+} & HTMLAttributes
+
+const variants = {
+ xs: 'text-xs leading-earthy font-normal',
+ sm: 'text-base leading-inherit font-normal',
+ md: 'text-md leading-inherit font-normal',
+ lg: 'text-lg leading-inherit font-normal',
+ xl: 'text-xl leading-inherit font-normal',
+ '2xl': 'text-2xl leading-cloudy font-normal',
+ '3xl': 'text-3xl leading-earthy font-normal',
+ '4xl': 'text-4xl leading-earthy font-normal',
+ '5xl': 'text-5xl leading-earthy font-normal',
+}
+
+export const Heading: OverridableComponent = forwardRef(function Heading(
+ { size = 'xl', level = '2', className = '', as, children, ...rest },
+ ref,
+) {
+ const HeadingTag = as ?? (`h${level}` as React.ElementType)
+
+ return (
+
+ {children}
+
+ )
+})
diff --git a/web/lib/queries/common/newsSubqueries.ts b/web/lib/queries/common/newsSubqueries.ts
index bf029a457..a882c5251 100644
--- a/web/lib/queries/common/newsSubqueries.ts
+++ b/web/lib/queries/common/newsSubqueries.ts
@@ -3,7 +3,7 @@ import downloadableImageFields from './actions/downloadableImageFields'
import linkSelectorFields from './actions/linkSelectorFields'
import markDefs from './blockEditorMarks'
-export const iframeForNewsQuery = /* groq */ `iframe {
+export const iframeForNewsQuery = /* groq */ `defined(iframe) {
title,
frameTitle,
url,
diff --git a/web/lib/queries/common/pageContentFields.ts b/web/lib/queries/common/pageContentFields.ts
index 4d63d844c..ba246f183 100644
--- a/web/lib/queries/common/pageContentFields.ts
+++ b/web/lib/queries/common/pageContentFields.ts
@@ -30,6 +30,8 @@ _type == "keyNumbers" =>{
),
"designOptions": {
"background": coalesce(background.title, 'White'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
"imagePosition": coalesce(imagePosition, 'left'),
imageSize,
},
@@ -82,6 +84,8 @@ _type == "keyNumbers" =>{
anchor,
"designOptions": {
"background": coalesce(background.title, 'White'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
},
},
_type == "fullWidthImage"=>{
@@ -114,6 +118,8 @@ _type == "keyNumbers" =>{
},
"designOptions": {
"background": coalesce(background.title, 'White'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
},
},
_type == "textWithIconArray"=>{
@@ -131,6 +137,8 @@ _type == "keyNumbers" =>{
"designOptions": {
"background": coalesce(background.title, 'none'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
},
},
_type == "pullQuote" => {
@@ -143,6 +151,8 @@ _type == "keyNumbers" =>{
"designOptions": {
"background": coalesce(background.title, 'White'),
"imagePosition": coalesce(imagePosition, 'right'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
}
},
_type == "accordion" => {
@@ -166,6 +176,8 @@ _type == "keyNumbers" =>{
anchor,
"designOptions": {
"background": coalesce(background.title, 'none'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
}
},
_type == "promoTileArray"=>{
@@ -201,6 +213,8 @@ _type == "keyNumbers" =>{
},
"designOptions": {
"background": coalesce(background.title, 'none'),
+ "utility": coalesce(background.key, ""),
+ "dark": coalesce(background.dark, false),
},
},
},
@@ -225,6 +239,8 @@ _type == "keyNumbers" =>{
"designOptions": {
"aspectRatio": coalesce(aspectRatio, '16:9'),
"background": coalesce(background.title, 'none'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
height,
},
},
@@ -393,6 +409,8 @@ _type == "keyNumbers" =>{
},
"designOptions": {
"background": coalesce(background.title, 'none'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
},
},
_type == "cookieDeclaration" => {
@@ -462,6 +480,8 @@ _type == "keyNumbers" =>{
"id": _key,
"designOptions": {
"background": coalesce(background.title, 'White'),
+ "dark": coalesce(background.dark, false),
+ "utility": coalesce(background.key, ""),
},
},
@@ -477,6 +497,8 @@ _type == "keyNumbers" =>{
},
"designOptions": {
"background": coalesce(background.title, 'White'),
+ "utility": coalesce(background.key, ""),
+ "dark": coalesce(background.dark, false),
},
},
diff --git a/web/package.json b/web/package.json
index d6eca11ac..2f7258678 100644
--- a/web/package.json
+++ b/web/package.json
@@ -80,6 +80,7 @@
"styled-normalize": "^8.0.7",
"swiper": "^9.2.3",
"swr": "^1.3.0",
+ "tailwind-merge": "^2.2.1",
"uuid": "^9.0.0",
"xml2js": "^0.6.0"
},
@@ -96,6 +97,7 @@
"@storybook/nextjs": "^7.0.6",
"@storybook/react": "^7.0.6",
"@storybook/react-vite": "^7.0.6",
+ "@tailwindcss/typography": "^0.5.10",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/react": "^14.0.0",
"@types/http-proxy": "^1.17.10",
@@ -107,6 +109,7 @@
"@types/styled-components": "^5.1.26",
"@types/testing-library__jest-dom": "^5.14.5",
"babel-plugin-styled-components": "^2.1.1",
+ "color": "^4.2.3",
"jest": "^28.1.0",
"jest-environment-jsdom": "^28.1.0",
"jest-styled-components": "^7.0.8",
@@ -116,6 +119,10 @@
"storybook-css-modules-preset": "^1.1.1",
"styled-jsx": "^5.1.2",
"typescript": "4.8.4",
+ "tailwindcss": "^3.4.1",
+ "postcss": "^8.4.35",
+ "postcss-import": "^16.0.1",
+ "autoprefixer": "^10.4.17",
"vite": "^4.2.2",
"webpack": "^5.88.2"
}
diff --git a/web/pageComponents/pageTemplates/News.tsx b/web/pageComponents/pageTemplates/News.tsx
index a38d3a96e..777af24ff 100644
--- a/web/pageComponents/pageTemplates/News.tsx
+++ b/web/pageComponents/pageTemplates/News.tsx
@@ -4,7 +4,6 @@ import { Heading, FormattedDateTime, BackgroundContainer } from '@components'
import styled from 'styled-components'
import { Icon } from '@equinor/eds-core-react'
import { calendar } from '@equinor/eds-icons'
-import NewsText from '../shared/portableText/NewsText'
import DefaulHeroImage from '../shared/Hero/DefaultHeroImage'
import IngressText from '../shared/portableText/IngressText'
import RelatedContent from '../shared/RelatedContent'
@@ -15,6 +14,8 @@ import { getFullUrl } from '../../common/helpers/getFullUrl'
import { metaTitleSuffix } from '../../languages'
import type { NewsSchema } from '../../types/types'
import { toPlainText } from '@portabletext/react'
+import Blocks from '../shared/portableText/Blocks'
+import { twMerge } from 'tailwind-merge'
const NewsLayout = styled.div`
--banner-paddingHorizontal: clamp(16px, calc(-69.1942px + 22.7184vw), 367px);
@@ -95,49 +96,6 @@ const LeadParagraph = styled.div`
}
`
-const Content = styled.div`
- & h2,
- & h3 {
- margin: var(--space-small) 0;
- }
-
- /* The max-width makes things easier with 50% floating images */
- max-width: var(--maxViewportWidth);
- margin-left: auto;
- margin-right: auto;
-
- /* Clear floats if two left or right aligned images are adjacent siblings*/
- .float-left + .float-left,
- .float-right + .float-right {
- clear: both;
- }
-
- /* "Remove" margin top from FactBox if the following element is also a FactBox */
-
- .fact-box:not(.fact-box--none) + .fact-box--colored,
- .fact-box.fact-box--image + .fact-box.fact-box--colored {
- margin-top: calc(-1 * var(--space-3xLarge));
- }
-
- .fact-box:not(.fact-box--image).fact-box--bg-moss-green + .fact-box.fact-box--bg-moss-green,
- .fact-box:not(.fact-box--image).fact-box--bg-slate-blue + .fact-box.fact-box--bg-slate-blue,
- .fact-box:not(.fact-box--image).fact-box--bg-mist-blue + .fact-box.fact-box--bg-mist-blue,
- .fact-box:not(.fact-box--image).fact-box--bg-moss-green-light + .fact-box.fact-box--bg-moss-green-light,
- .fact-box:not(.fact-box--image).fact-box--bg-spruce-wood + .fact-box.fact-box--bg-spruce-wood,
- .fact-box:not(.fact-box--image).fact-box--bg-mid-blue + .fact-box.fact-box--bg-mid-blue,
- .fact-box:not(.fact-box--image).fact-box--bg-mid-green + .fact-box.fact-box--bg-mid-green,
- .fact-box:not(.fact-box--image).fact-box--bg-mid-orange + .fact-box.fact-box--bg-mid-orange,
- .fact-box:not(.fact-box--image).fact-box--bg-mid-yellow + .fact-box.fact-box--bg-mid-yellow {
- margin-top: calc(-2 * var(--space-3xLarge));
- }
-`
-
-const Related = styled.div<{ reduceMargin: boolean }>`
- padding: 0 var(--layout-paddingHorizontal-large);
- max-width: 1700px;
- margin: ${(reduceMargin) => (reduceMargin ? '0 auto var(--space-3xLarge) auto' : 'var(--space-3xLarge) auto')};
-`
-
const Latest = styled.div`
padding: 0 var(--space-medium);
margin: var(--space-4xLarge) auto 0;
@@ -257,18 +215,21 @@ const NewsPage = ({ data: news }: ArticleProps) => {
)}
- {content && content.length > 0 && (
-
-
-
- )}
+ {content && content.length > 0 && }
{iframe && }
{relatedLinks?.links && relatedLinks.links.length > 0 && (
-
-
-
+
)}
{latestNews && latestNews.length > 0 && (
diff --git a/web/pageComponents/shared/RelatedContent.tsx b/web/pageComponents/shared/RelatedContent.tsx
index 9c69c84ab..5d57c0597 100644
--- a/web/pageComponents/shared/RelatedContent.tsx
+++ b/web/pageComponents/shared/RelatedContent.tsx
@@ -1,4 +1,4 @@
-import { Fragment } from 'react'
+import { Fragment, HTMLAttributes } from 'react'
import { Heading, List } from '@components'
import type { RelatedLinksData, LinkData } from '../../types/types'
import styled from 'styled-components'
@@ -13,7 +13,7 @@ const { Item } = List
type RelatedContentProps = {
data: RelatedLinksData
-}
+} & HTMLAttributes
const RelatedContent = ({ data, ...rest }: RelatedContentProps) => {
return (
diff --git a/web/pageComponents/shared/portableText/Blocks.tsx b/web/pageComponents/shared/portableText/Blocks.tsx
new file mode 100644
index 000000000..dad3760e6
--- /dev/null
+++ b/web/pageComponents/shared/portableText/Blocks.tsx
@@ -0,0 +1,123 @@
+/* eslint-disable @typescript-eslint/ban-ts-comment */
+import { PortableText } from '@portabletext/react'
+import { PortableTextBlock } from '@portabletext/types'
+import { FigureWithLayout, Quote, Fact, Sub, Sup, ExternalLink, InternalLink } from './components'
+/* import { Heading } from '@components/Heading' */
+import isEmpty from './helpers/isEmpty'
+
+const blockSerializer = {
+ block: {
+ normal: ({ children }: PortableTextBlock) => {
+ if (isEmpty(children)) return null
+ return (
+
+ <>{children}>
+
+ )
+ },
+ smallText: ({ children }: PortableTextBlock) => {
+ if (isEmpty(children)) return null
+ return (
+
+ <>{children}>
+
+ )
+ },
+ },
+ marks: {
+ sub: Sub,
+ sup: Sup,
+ link: ExternalLink,
+ internalLink: InternalLink,
+ },
+ types: {
+ //@ts-ignore
+ positionedInlineImage: (props) => ,
+ //@ts-ignore
+ pullQuote: Quote,
+ },
+}
+
+type Props = {
+ value: PortableTextBlock[]
+}
+
+const inlineBlockTypes = ['block', 'positionedInlineImage', 'pullQuote']
+
+//@ts-ignore
+export default function Blocks({ value }: Props) {
+ let div: PortableTextBlock[] = []
+ return (
+ <>
+ {value.map((block, i, blocks) => {
+ // Normal text blocks (p, h1, h2, etc.) — these are grouped so we can wrap them in a prose div
+ if (inlineBlockTypes.includes(block._type)) {
+ div.push(block)
+
+ // If the next block is also text/pullQuote, group it with this one
+ if (inlineBlockTypes.includes(blocks[i + 1]?._type)) return null
+
+ // Otherwise, render the group of text blocks we have
+ const value = div
+ div = []
+
+ return (
+
+ )
+ } else if (block._type === 'factbox') {
+ let marginOverride = ''
+ // If the next block is a factbox, remove margin bottom
+ if (blocks[i + 1]?._type === 'factbox') {
+ marginOverride = 'mb-0'
+ }
+ // If the previous block was a factbox, remove margin top
+ if (blocks[i - 1]?._type === 'factbox') {
+ marginOverride = 'mt-0'
+ }
+
+ return (
+ ,
+ },
+ }}
+ />
+ )
+ } else {
+ // Non-text blocks (modules, sections, etc.) — note that these can recursively render text
+ // blocks again
+ return (
+
+ )
+ }
+ })}
+ >
+ )
+}
diff --git a/web/pageComponents/shared/portableText/NewsText.tsx b/web/pageComponents/shared/portableText/NewsText.tsx
deleted file mode 100644
index f633c212a..000000000
--- a/web/pageComponents/shared/portableText/NewsText.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-import { PortableText, PortableTextProps } from '@portabletext/react'
-import { Text, List } from '@components'
-import styled from 'styled-components'
-
-import { Sub, Sup, ExternalLink, InternalLink, FigureWithLayout, Quote, Fact, h2Heading, h3Heading } from './components'
-import isEmpty from './helpers/isEmpty'
-import type { PortableTextBlock } from '@portabletext/types'
-
-const { Item } = List
-
-const Container = styled.div`
- padding: 0 var(--layout-paddingHorizontal-large);
- max-width: var(--maxViewportWidth);
- margin-left: auto;
- margin-right: auto;
-`
-const ContainerWithBottomSpace = styled(Container)`
- margin-bottom: var(--space-medium);
-
- :only-child {
- padding: 0;
- }
-`
-
-const defaultSerializers = {
- block: {
- h2: (props: { children: React.ReactNode }) => {h2Heading(props)} ,
- h3: (props: { children: React.ReactNode }) => {h3Heading(props)} ,
- normal: ({ children }: PortableTextBlock) => {
- if (isEmpty(children)) return null
- return (
-
-
- <>{children}>
-
-
- )
- },
- smallText: ({ children }: PortableTextBlock) => {
- if (isEmpty(children)) return null
- return (
-
-
- <>{children}>
-
-
- )
- },
- },
-
- marks: { sub: Sub, sup: Sup, link: ExternalLink, internalLink: InternalLink },
- types: {
- positionedInlineImage: FigureWithLayout,
- factbox: Fact,
- pullQuote: Quote,
- },
- list: {
- bullet: ({ children }: PortableTextBlock) => (
-
-
- <>{children}>
-
-
- ),
- number: ({ children }: PortableTextBlock) => (
-
-
- <>{children}>
-
-
- ),
- },
- listItem: ({ children }: PortableTextBlock) => (
- -
- <>{children}>
-
- ),
-}
-
-const NewsText = ({ value, components = {}, ...props }: PortableTextProps) => (
-
-)
-
-export default NewsText
diff --git a/web/pageComponents/shared/portableText/TitleText.tsx b/web/pageComponents/shared/portableText/TitleText.tsx
index b72d5bbe3..035606c1b 100644
--- a/web/pageComponents/shared/portableText/TitleText.tsx
+++ b/web/pageComponents/shared/portableText/TitleText.tsx
@@ -22,11 +22,13 @@ const defaultComponents = ({ size, level, className }: DefaultComponents) => {
)
},
- extraLarge: ({ children }: PortableTextBlock) => (
-
- <>{children}>
-
- ),
+ extraLarge: ({ children }: PortableTextBlock) => {
+ return (
+
+ <>{children}>
+
+ )
+ },
},
marks: { sub: Sub, sup: Sup, s: Strikethrough, highlight: Highlight },
}
diff --git a/web/pageComponents/shared/portableText/components/news/Fact.tsx b/web/pageComponents/shared/portableText/components/news/Fact.tsx
index 16496e6b7..17e8f1d7f 100644
--- a/web/pageComponents/shared/portableText/components/news/Fact.tsx
+++ b/web/pageComponents/shared/portableText/components/news/Fact.tsx
@@ -8,6 +8,7 @@ import type { PortableTextBlock } from '@portabletext/types'
import type { BackgroundColours, ImageWithAlt } from '../../../../../types/types'
import { urlFor } from '../../../../../common/helpers'
+import { twMerge } from 'tailwind-merge'
type FactboxProps = {
title: string
@@ -18,9 +19,7 @@ type FactboxProps = {
dynamicHeight: boolean
}
-const FactBoxWithPadding = styled(FactBox)`
- margin: var(--space-3xLarge) 0;
-`
+const FactBoxWithPadding = styled(FactBox)``
const FactBoxContentWithPadding = styled(FactBox.Content)<{
hasColumns: boolean
@@ -41,10 +40,11 @@ const FactBoxContentWithPadding = styled(FactBox.Content)<{
type BlockProps = {
isInline: boolean
value: FactboxProps
+ className?: string
} & PortableTextBlock
export const Fact = (block: BlockProps) => {
- const { value } = block
+ const { value, className } = block
const { title, content, background, image, imagePosition, dynamicHeight } = value
const bgTitle = (background ? background?.title : 'White') as BackgroundColours
if (!content || content.length === 0) {
@@ -61,11 +61,14 @@ export const Fact = (block: BlockProps) => {
const hasImage = imageSrc ? true : false
const hasBgColor = bgTitle !== 'White'
+ const classNames = twMerge('my-3xl', className)
+
return (
diff --git a/web/pageComponents/shared/portableText/components/news/FigureWithLayout.tsx b/web/pageComponents/shared/portableText/components/news/FigureWithLayout.tsx
index 11df42fb8..192669184 100644
--- a/web/pageComponents/shared/portableText/components/news/FigureWithLayout.tsx
+++ b/web/pageComponents/shared/portableText/components/news/FigureWithLayout.tsx
@@ -1,45 +1,11 @@
import type { PortableTextBlock } from '@portabletext/types'
-
+import { twMerge } from 'tailwind-merge'
import { FigureCaption } from '@components'
-import styled from 'styled-components'
import Image from '../../../SanityImage'
import type { ImageWithAlt } from '../../../../../types/types'
type Layout = 'full' | 'left' | 'right'
-type FigureStyles = {
- layout: Layout
-}
-
-const FigureTest = styled.figure.attrs(({ layout }) => ({
- className: `float-${layout}`,
-}))`
- padding: 0 var(--layout-paddingHorizontal-medium);
- max-width: var(--maxViewportWidth);
- margin: var(--space-3xLarge) auto;
- /* img {
- object-fit: contain;
- } */
- @media (min-width: 800px) {
- ${({ layout }) =>
- layout === 'right' && {
- width: '50%',
- paddingLeft: 'var(--space-small)',
- marginTop: '0',
- marginBottom: 'var(--space-small)',
- float: 'right',
- }}
- ${({ layout }) =>
- layout === 'left' && {
- width: '50%',
- paddingRight: 'var(--space-small)',
- marginBottom: 'var(--space-small)',
- marginTop: '0',
- float: 'left',
- }}
- }
-`
-
type FigureNode = {
_key: string
_type: 'imageWithAltAndCaption'
@@ -60,7 +26,20 @@ export const FigureWithLayout = (block: BlockProps) => {
if (!image) return null
return (
-
+
{layout === 'full' ? (
{
{attribution && {attribution} }
)}
-
+
)
}
diff --git a/web/pageComponents/shared/portableText/components/news/Quote.tsx b/web/pageComponents/shared/portableText/components/news/Quote.tsx
index 5e7669cfb..59e6612b5 100644
--- a/web/pageComponents/shared/portableText/components/news/Quote.tsx
+++ b/web/pageComponents/shared/portableText/components/news/Quote.tsx
@@ -5,7 +5,6 @@ import type { PortableTextBlock } from '@portabletext/types'
import type { QuoteData } from '../../../../../types/types'
const Container = styled.div`
- padding: 0 var(--layout-paddingHorizontal-medium);
margin: var(--space-3xLarge) auto;
clear: both;
`
@@ -29,7 +28,7 @@ export const Quote = (quote: BlockProps) => {
}
return (
-
+
)
diff --git a/web/pageComponents/shared/textTeaser/TextTeaser.tsx b/web/pageComponents/shared/textTeaser/TextTeaser.tsx
index 6582f1d7a..00bce5a70 100644
--- a/web/pageComponents/shared/textTeaser/TextTeaser.tsx
+++ b/web/pageComponents/shared/textTeaser/TextTeaser.tsx
@@ -42,9 +42,7 @@ const StyledContent = styled(Content)`
export const StyledTeaser = styled.article`
overflow-y: hidden;
`
-const StyledLink = styled(Link)`
- font-size: var(--typeScale-1);
-`
+
const StyledTitleText = styled(TitleText)`
padding: 0 0 var(--space-large) 0;
@media (min-width: 750px) {
@@ -78,7 +76,6 @@ const TextTeaser = ({ data, anchor }: TextTeaserProps) => {
const { background, highlight } = getColorForTheme(theme)
const style = highlight ? ({ '--title-highlight-color': `${highlight} ` } as CSSProperties) : undefined
-
return (
diff --git a/web/pageComponents/shared/textTeaser/theme.ts b/web/pageComponents/shared/textTeaser/theme.ts
index 408a66b7e..c4e677dd7 100644
--- a/web/pageComponents/shared/textTeaser/theme.ts
+++ b/web/pageComponents/shared/textTeaser/theme.ts
@@ -4,6 +4,63 @@ export type ThemeColors = {
background: BackgroundColours
highlight?: string
}
+//Keep in sync with sanityv3/schemas/components/ThemeSelector/themeColors
+// When converting to tailwind
+/* export const getColorForTheme = (pattern: number) => {
+ switch (pattern) {
+ case 1:
+ return {
+ background: 'bg-moss-green-50',
+ highlight: 'text-energy-red-100',
+ }
+ case 2:
+ return {
+ background: 'bg-spruce-wood-90',
+ highlight: 'text-energy-red-100',
+ }
+ case 3:
+ return {
+ background: 'bg-mist-blue-100',
+ highlight: 'text-energy-red-100',
+ }
+ case 4:
+ return {
+ background: 'bg-yellow-50',
+ highlight: 'text-energy-red-100',
+ }
+ case 5:
+ return {
+ background: 'bg-orange-50',
+ highlight: 'text-energy-red-100',
+ }
+ case 6:
+ return {
+ background: 'bg-blue-50',
+ dark: true,
+ highlight: 'text-orange-50',
+ }
+ case 7:
+ return {
+ background: 'bg-blue-50',
+ dark: true,
+ highlight: 'text-yellow-50',
+ }
+ case 8:
+ return {
+ background: 'bg-green-50',
+ highlight: 'text-energy-red-100',
+ }
+
+ case 0:
+ default:
+ return {
+ background: 'bg-white-100',
+ highlight: 'text-energy-red-100 ',
+ }
+ }
+}
+ */
+
export const getColorForTheme = (pattern: number): ThemeColors => {
switch (pattern) {
case 1:
diff --git a/web/pages/_app.tsx b/web/pages/_app.tsx
index ca9ec80f5..471da8942 100644
--- a/web/pages/_app.tsx
+++ b/web/pages/_app.tsx
@@ -4,6 +4,7 @@ import type { ReactNode } from 'react'
import Head from 'next/head'
import { useRouter } from 'next/router'
import { GlobalStyle } from '../styles/globalStyles'
+import '../styles/tailwind.css'
import 'focus-visible'
import { useEffect } from 'react'
import { GTM_ID, pageview } from '../lib/gtm'
diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml
index b8907f2c8..b14cfd255 100644
--- a/web/pnpm-lock.yaml
+++ b/web/pnpm-lock.yaml
@@ -178,6 +178,9 @@ dependencies:
swr:
specifier: ^1.3.0
version: 1.3.0(react@18.2.0)
+ tailwind-merge:
+ specifier: ^2.2.1
+ version: 2.2.1
uuid:
specifier: ^9.0.0
version: 9.0.0
@@ -222,6 +225,9 @@ devDependencies:
'@storybook/react-vite':
specifier: ^7.0.6
version: 7.0.6(react-dom@18.2.0)(react@18.2.0)(typescript@4.8.4)(vite@4.2.2)
+ '@tailwindcss/typography':
+ specifier: ^0.5.10
+ version: 0.5.10(tailwindcss@3.4.1)
'@testing-library/jest-dom':
specifier: ^6.1.4
version: 6.4.2(@types/jest@29.5.12)(jest@28.1.0)
@@ -252,9 +258,15 @@ devDependencies:
'@types/testing-library__jest-dom':
specifier: ^5.14.5
version: 5.14.5
+ autoprefixer:
+ specifier: ^10.4.17
+ version: 10.4.17(postcss@8.4.35)
babel-plugin-styled-components:
specifier: ^2.1.1
version: 2.1.1(styled-components@5.3.9)
+ color:
+ specifier: ^4.2.3
+ version: 4.2.3
jest:
specifier: ^28.1.0
version: 28.1.0(@types/node@17.0.35)
@@ -264,6 +276,12 @@ devDependencies:
jest-styled-components:
specifier: ^7.0.8
version: 7.0.8(styled-components@5.3.9)
+ postcss:
+ specifier: ^8.4.35
+ version: 8.4.35
+ postcss-import:
+ specifier: ^16.0.1
+ version: 16.0.1(postcss@8.4.35)
prettier:
specifier: 2.6.2
version: 2.6.2
@@ -279,6 +297,9 @@ devDependencies:
styled-jsx:
specifier: ^5.1.2
version: 5.1.2(@babel/core@7.21.4)(react@18.2.0)
+ tailwindcss:
+ specifier: ^3.4.1
+ version: 3.4.1
typescript:
specifier: 4.8.4
version: 4.8.4
@@ -401,6 +422,11 @@ packages:
resolution: {integrity: sha512-a7mYHf/GVQfhAx/HRiMveKkFvHspQv/REdG+C/FIOosiSmNZxX7QebDwJkrGSmDWdXO12D0Qv1xn3AytFcEDlQ==}
dev: false
+ /@alloc/quick-lru@5.2.0:
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+ dev: true
+
/@ampproject/remapping@2.2.1:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
@@ -3753,6 +3779,18 @@ packages:
typescript: 4.8.4
dev: false
+ /@isaacs/cliui@8.0.2:
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: /string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: /strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: /wrap-ansi@7.0.0
+ dev: true
+
/@istanbuljs/load-nyc-config@1.1.0:
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
engines: {node: '>=8'}
@@ -4229,6 +4267,13 @@ packages:
fastq: 1.15.0
dev: true
+ /@pkgjs/parseargs@0.11.0:
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(webpack@5.88.2):
resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==}
engines: {node: '>= 10.13'}
@@ -5320,8 +5365,8 @@ packages:
loader-utils: 3.2.1
next: 13.5.6(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0)
pnp-webpack-plugin: 1.7.0(typescript@4.8.4)
- postcss: 8.4.24
- postcss-loader: 7.3.3(postcss@8.4.24)(webpack@5.88.2)
+ postcss: 8.4.35
+ postcss-loader: 7.3.3(postcss@8.4.35)(webpack@5.88.2)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
resolve-url-loader: 5.0.0
@@ -5563,7 +5608,7 @@ packages:
fetch-retry: 5.0.6
fs-extra: 11.1.1
isomorphic-unfetch: 3.1.0
- nanoid: 3.3.6
+ nanoid: 3.3.7
read-pkg-up: 7.0.1
transitivePeerDependencies:
- encoding
@@ -5596,7 +5641,19 @@ packages:
/@swc/helpers@0.5.2:
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
dependencies:
- tslib: 2.6.1
+ tslib: 2.6.2
+
+ /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders'
+ dependencies:
+ lodash.castarray: 4.4.0
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 3.4.1
+ dev: true
/@tanstack/react-virtual@3.0.0-beta.54(react@18.2.0):
resolution: {integrity: sha512-D1mDMf4UPbrtHRZZriCly5bXTBMhylslm4dhcHqTtDJ6brQcgGmk8YD9JdWBGWfGSWPKoh2x1H3e7eh+hgPXtQ==}
@@ -6454,6 +6511,11 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
+ /ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+ dev: true
+
/ansi-styles@3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
@@ -6471,6 +6533,15 @@ packages:
engines: {node: '>=10'}
dev: true
+ /ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ dev: true
+
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
@@ -6495,6 +6566,10 @@ packages:
readable-stream: 3.6.2
dev: true
+ /arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ dev: true
+
/argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
dependencies:
@@ -6553,7 +6628,7 @@ packages:
resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==}
engines: {node: '>=4'}
dependencies:
- tslib: 2.5.3
+ tslib: 2.6.2
dev: true
/ast-types@0.15.2:
@@ -6587,6 +6662,22 @@ packages:
hasBin: true
dev: true
+ /autoprefixer@10.4.17(postcss@8.4.35):
+ resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.23.0
+ caniuse-lite: 1.0.30001589
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.35
+ postcss-value-parser: 4.2.0
+ dev: true
+
/available-typed-arrays@1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
@@ -6963,7 +7054,7 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001518
+ caniuse-lite: 1.0.30001589
electron-to-chromium: 1.4.480
node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.10)
@@ -6974,10 +7065,21 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001518
- electron-to-chromium: 1.4.480
- node-releases: 2.0.13
- update-browserslist-db: 1.0.11(browserslist@4.21.9)
+ caniuse-lite: 1.0.30001589
+ electron-to-chromium: 1.4.680
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.21.9)
+
+ /browserslist@4.23.0:
+ resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001589
+ electron-to-chromium: 1.4.680
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.23.0)
+ dev: true
/bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
@@ -7050,6 +7152,11 @@ packages:
tslib: 2.6.2
dev: true
+ /camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+ dev: true
+
/camelcase@5.3.1:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
@@ -7065,6 +7172,9 @@ packages:
/caniuse-lite@1.0.30001518:
resolution: {integrity: sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==}
+ /caniuse-lite@1.0.30001589:
+ resolution: {integrity: sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==}
+
/case-sensitive-paths-webpack-plugin@2.4.0:
resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
engines: {node: '>=4'}
@@ -7227,7 +7337,6 @@ packages:
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
- dev: false
/color-support@1.1.3:
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
@@ -7244,7 +7353,6 @@ packages:
dependencies:
color-convert: 2.0.1
color-string: 1.9.1
- dev: false
/colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -7260,6 +7368,11 @@ packages:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: true
+ /commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: true
+
/commander@6.2.1:
resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
engines: {node: '>= 6'}
@@ -7362,7 +7475,7 @@ packages:
/core-js-compat@3.31.0:
resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==}
dependencies:
- browserslist: 4.21.10
+ browserslist: 4.23.0
dev: true
/core-js-pure@3.31.0:
@@ -7427,12 +7540,12 @@ packages:
peerDependencies:
webpack: ^5.0.0
dependencies:
- icss-utils: 5.1.0(postcss@8.4.24)
- postcss: 8.4.24
- postcss-modules-extract-imports: 3.0.0(postcss@8.4.24)
- postcss-modules-local-by-default: 4.0.3(postcss@8.4.24)
- postcss-modules-scope: 3.0.0(postcss@8.4.24)
- postcss-modules-values: 4.0.0(postcss@8.4.24)
+ icss-utils: 5.1.0(postcss@8.4.35)
+ postcss: 8.4.35
+ postcss-modules-extract-imports: 3.0.0(postcss@8.4.35)
+ postcss-modules-local-by-default: 4.0.3(postcss@8.4.35)
+ postcss-modules-scope: 3.0.0(postcss@8.4.35)
+ postcss-modules-values: 4.0.0(postcss@8.4.35)
postcss-value-parser: 4.2.0
semver: 7.5.4
webpack: 5.88.2
@@ -7718,6 +7831,10 @@ packages:
- supports-color
dev: true
+ /didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ dev: true
+
/diff-sequences@28.1.1:
resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
@@ -7740,6 +7857,10 @@ packages:
path-type: 4.0.0
dev: true
+ /dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+ dev: true
+
/doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@@ -7838,6 +7959,10 @@ packages:
stream-shift: 1.0.1
dev: true
+ /eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ dev: true
+
/easy-soap-request@5.6.1:
resolution: {integrity: sha512-Sbq59ZHUYcND8w0Y2XZ13X7hbF6gUZQlWC8pBwCaqULLE44FY7Ph6UdG0c+ndBUJt9r77M4VCteieHg1JooeJA==}
dependencies:
@@ -7860,6 +7985,10 @@ packages:
/electron-to-chromium@1.4.480:
resolution: {integrity: sha512-IXTgg+bITkQv/FLP9FjX6f9KFCs5hQWeh5uNSKxB9mqYj/JXhHDbu+ekS43LVvbkL3eW6/oZy4+r9Om6lan1Uw==}
+ dev: true
+
+ /electron-to-chromium@1.4.680:
+ resolution: {integrity: sha512-4nToZ5jlPO14W82NkF32wyjhYqQByVaDmLy4J2/tYcAbJfgO2TKJC780Az1V13gzq4l73CJ0yuyalpXvxXXD9A==}
/emittery@0.10.2:
resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==}
@@ -7869,6 +7998,10 @@ packages:
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ /emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ dev: true
+
/emojis-list@3.0.0:
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
engines: {node: '>= 4'}
@@ -8214,8 +8347,8 @@ packages:
resolution: {integrity: sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==}
dev: false
- /fast-glob@3.2.12:
- resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+ /fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -8418,6 +8551,14 @@ packages:
signal-exit: 3.0.7
dev: true
+ /foreground-child@3.1.1:
+ resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ engines: {node: '>=14'}
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
+ dev: true
+
/fork-ts-checker-webpack-plugin@7.3.0(typescript@4.8.4)(webpack@5.88.2):
resolution: {integrity: sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==}
engines: {node: '>=12.13.0', yarn: '>=1.0.0'}
@@ -8467,6 +8608,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+ dev: true
+
/framer-motion@6.0.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-wVI+hVRkvQeWSvkxk8z5bTg+jBs9vfEZOist2s0e9tQzZvt+OBuAoAcvCvl+ADmFd4ncC2934vkwiJPZ8nSvMg==}
peerDependencies:
@@ -8680,6 +8825,13 @@ packages:
is-glob: 4.0.3
dev: true
+ /glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
/glob-promise@4.2.2(glob@7.2.3):
resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==}
engines: {node: '>=12'}
@@ -8703,6 +8855,18 @@ packages:
/glob-to-regexp@0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+ /glob@10.3.10:
+ resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.3.6
+ minimatch: 9.0.3
+ minipass: 5.0.0
+ path-scurry: 1.10.1
+ dev: true
+
/glob@7.1.7:
resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
dependencies:
@@ -8746,7 +8910,7 @@ packages:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.2.12
+ fast-glob: 3.3.2
ignore: 5.2.4
merge2: 1.4.1
slash: 3.0.0
@@ -9013,13 +9177,13 @@ packages:
yup: 0.32.11
dev: false
- /icss-utils@5.1.0(postcss@8.4.24):
+ /icss-utils@5.1.0(postcss@8.4.35):
resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.24
+ postcss: 8.4.35
dev: true
/ieee754@1.2.1:
@@ -9195,7 +9359,6 @@ packages:
/is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
- dev: false
/is-bigint@1.0.4:
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
@@ -9478,6 +9641,15 @@ packages:
istanbul-lib-report: 3.0.0
dev: true
+ /jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+ dev: true
+
/jake@10.8.7:
resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==}
engines: {node: '>=10'}
@@ -10030,8 +10202,8 @@ packages:
- ts-node
dev: true
- /jiti@1.18.2:
- resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
+ /jiti@1.21.0:
+ resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
hasBin: true
dev: true
@@ -10238,6 +10410,16 @@ packages:
type-check: 0.3.2
dev: true
+ /lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /lilconfig@3.1.1:
+ resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==}
+ engines: {node: '>=14'}
+ dev: true
+
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -10286,10 +10468,22 @@ packages:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
dev: false
+ /lodash.castarray@4.4.0:
+ resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+ dev: true
+
/lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
dev: true
+ /lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+ dev: true
+
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
+
/lodash.mergewith@4.6.2:
resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
dev: false
@@ -10313,6 +10507,11 @@ packages:
tslib: 2.6.2
dev: true
+ /lru-cache@10.2.0:
+ resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
+ engines: {node: 14 || >=16.14}
+ dev: true
+
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
@@ -10840,6 +11039,13 @@ packages:
brace-expansion: 2.0.1
dev: true
+ /minimatch@9.0.3:
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@@ -10909,6 +11115,14 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: true
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+ dev: true
+
/nanoclone@0.2.1:
resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==}
dev: false
@@ -10917,6 +11131,12 @@ packages:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ dev: false
+
+ /nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
/napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
@@ -11078,6 +11298,10 @@ packages:
/node-releases@2.0.13:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
+ dev: true
+
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
/nopt@1.0.10:
resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
@@ -11100,6 +11324,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -11134,6 +11363,11 @@ packages:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
+ /object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+ dev: true
+
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
@@ -11355,6 +11589,14 @@ packages:
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ /path-scurry@1.10.1:
+ resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ lru-cache: 10.2.0
+ minipass: 5.0.0
+ dev: true
+
/path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
dev: true
@@ -11386,6 +11628,11 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
+ /pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@@ -11442,7 +11689,58 @@ packages:
tslib: 2.6.2
dev: false
- /postcss-loader@7.3.3(postcss@8.4.24)(webpack@5.88.2):
+ /postcss-import@15.1.0(postcss@8.4.35):
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.35
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.2
+ dev: true
+
+ /postcss-import@16.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-i2Pci0310NaLHr/5JUFSw1j/8hf1CzwMY13g6ZDxgOavmRHQi2ba3PmUHoihO+sjaum+KmCNzskNsw7JDrg03g==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.35
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.2
+ dev: true
+
+ /postcss-js@4.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.35
+ dev: true
+
+ /postcss-load-config@4.0.2(postcss@8.4.35):
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 3.1.1
+ postcss: 8.4.35
+ yaml: 2.3.4
+ dev: true
+
+ /postcss-loader@7.3.3(postcss@8.4.35)(webpack@5.88.2):
resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -11450,51 +11748,69 @@ packages:
webpack: ^5.0.0
dependencies:
cosmiconfig: 8.2.0
- jiti: 1.18.2
- postcss: 8.4.24
+ jiti: 1.21.0
+ postcss: 8.4.35
semver: 7.5.4
webpack: 5.88.2
dev: true
- /postcss-modules-extract-imports@3.0.0(postcss@8.4.24):
+ /postcss-modules-extract-imports@3.0.0(postcss@8.4.35):
resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.24
+ postcss: 8.4.35
dev: true
- /postcss-modules-local-by-default@4.0.3(postcss@8.4.24):
+ /postcss-modules-local-by-default@4.0.3(postcss@8.4.35):
resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- icss-utils: 5.1.0(postcss@8.4.24)
- postcss: 8.4.24
+ icss-utils: 5.1.0(postcss@8.4.35)
+ postcss: 8.4.35
postcss-selector-parser: 6.0.13
postcss-value-parser: 4.2.0
dev: true
- /postcss-modules-scope@3.0.0(postcss@8.4.24):
+ /postcss-modules-scope@3.0.0(postcss@8.4.35):
resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.24
+ postcss: 8.4.35
postcss-selector-parser: 6.0.13
dev: true
- /postcss-modules-values@4.0.0(postcss@8.4.24):
+ /postcss-modules-values@4.0.0(postcss@8.4.35):
resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- icss-utils: 5.1.0(postcss@8.4.24)
- postcss: 8.4.24
+ icss-utils: 5.1.0(postcss@8.4.35)
+ postcss: 8.4.35
+ dev: true
+
+ /postcss-nested@6.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+ dependencies:
+ postcss: 8.4.35
+ postcss-selector-parser: 6.0.13
+ dev: true
+
+ /postcss-selector-parser@6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
dev: true
/postcss-selector-parser@6.0.13:
@@ -11508,22 +11824,22 @@ packages:
/postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- /postcss@8.4.24:
- resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
+ /postcss@8.4.31:
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
- nanoid: 3.3.6
+ nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
- dev: true
- /postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
+ /postcss@8.4.35:
+ resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
- nanoid: 3.3.6
+ nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
+ dev: true
/preact@10.15.1:
resolution: {integrity: sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==}
@@ -12089,6 +12405,12 @@ packages:
dependencies:
loose-envify: 1.4.0
+ /read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ dependencies:
+ pify: 2.3.0
+ dev: true
+
/read-pkg-up@7.0.1:
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
engines: {node: '>=8'}
@@ -12305,7 +12627,7 @@ packages:
adjust-sourcemap-loader: 4.0.0
convert-source-map: 1.9.0
loader-utils: 2.0.4
- postcss: 8.4.24
+ postcss: 8.4.35
source-map: 0.6.1
dev: true
@@ -12609,6 +12931,11 @@ packages:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
+ /signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+ dev: true
+
/simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
dev: false
@@ -12625,7 +12952,6 @@ packages:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
dependencies:
is-arrayish: 0.3.2
- dev: false
/simple-update-notifier@1.1.0:
resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==}
@@ -12819,6 +13145,15 @@ packages:
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
+ /string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+ dev: true
+
/string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
dependencies:
@@ -12835,6 +13170,13 @@ packages:
dependencies:
ansi-regex: 5.0.1
+ /strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+ dev: true
+
/strip-bom@3.0.0:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
engines: {node: '>=4'}
@@ -12952,6 +13294,20 @@ packages:
resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
dev: false
+ /sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ commander: 4.1.1
+ glob: 10.3.10
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+ dev: true
+
/supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -13018,6 +13374,43 @@ packages:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
dev: false
+ /tailwind-merge@2.2.1:
+ resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==}
+ dependencies:
+ '@babel/runtime': 7.23.9
+ dev: false
+
+ /tailwindcss@3.4.1:
+ resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.5.3
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.2
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.0
+ lilconfig: 2.1.0
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.0.0
+ postcss: 8.4.35
+ postcss-import: 15.1.0(postcss@8.4.35)
+ postcss-js: 4.0.1(postcss@8.4.35)
+ postcss-load-config: 4.0.2(postcss@8.4.35)
+ postcss-nested: 6.0.1(postcss@8.4.35)
+ postcss-selector-parser: 6.0.13
+ resolve: 1.22.2
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - ts-node
+ dev: true
+
/tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
@@ -13154,6 +13547,19 @@ packages:
minimatch: 3.1.2
dev: true
+ /thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: true
+
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: true
+
/throttle-debounce@5.0.0:
resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==}
engines: {node: '>=12.22'}
@@ -13231,6 +13637,10 @@ packages:
engines: {node: '>=6.10'}
dev: true
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: true
+
/ts-pnp@1.2.0(typescript@4.8.4):
resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==}
engines: {node: '>=6'}
@@ -13275,9 +13685,7 @@ packages:
/tslib@2.5.3:
resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==}
-
- /tslib@2.6.1:
- resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==}
+ dev: false
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
@@ -13485,8 +13893,8 @@ packages:
picocolors: 1.0.0
dev: true
- /update-browserslist-db@1.0.11(browserslist@4.21.9):
- resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
+ /update-browserslist-db@1.0.13(browserslist@4.21.9):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
@@ -13495,6 +13903,17 @@ packages:
escalade: 3.1.1
picocolors: 1.0.0
+ /update-browserslist-db@1.0.13(browserslist@4.23.0):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.23.0
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: true
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -13669,7 +14088,7 @@ packages:
dependencies:
'@types/node': 17.0.35
esbuild: 0.17.19
- postcss: 8.4.24
+ postcss: 8.4.35
resolve: 1.22.2
rollup: 3.25.1
optionalDependencies:
@@ -13915,6 +14334,15 @@ packages:
strip-ansi: 6.0.1
dev: true
+ /wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+ dev: true
+
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
@@ -14015,6 +14443,11 @@ packages:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
+ /yaml@2.3.4:
+ resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
+ engines: {node: '>= 14'}
+ dev: true
+
/yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'}
diff --git a/web/postcss.config.cjs b/web/postcss.config.cjs
new file mode 100644
index 000000000..d0ffab7e4
--- /dev/null
+++ b/web/postcss.config.cjs
@@ -0,0 +1,7 @@
+module.exports = {
+ plugins: {
+ 'postcss-import': {},
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/web/styles/settings.ts b/web/styles/settings.ts
index 6ce3c2b2a..90427eadb 100644
--- a/web/styles/settings.ts
+++ b/web/styles/settings.ts
@@ -1,6 +1,7 @@
import { Flags } from '../common/helpers/datasetHelpers'
import { css } from 'styled-components'
+// If migrate to tailwind put these variables in base layer
export const colors = css`
:root {
/* Primary colours */
@@ -136,6 +137,7 @@ export const typography = css`
}
`
+// tw -> Use break-keep to prevent line breaks from being applied to Chinese/Japanese/Korean (CJK) text.
export const strictLineBreak = Flags.HAS_LINE_BREAK_TYPO
? css`
:root {
diff --git a/web/styles/tailwind.css b/web/styles/tailwind.css
new file mode 100644
index 000000000..84a2e69e0
--- /dev/null
+++ b/web/styles/tailwind.css
@@ -0,0 +1,47 @@
+@import 'tailwindcss/base';
+@import 'tailwindcss/components';
+@import 'tailwindcss/utilities';
+
+@layer base {
+}
+
+@layer utilities {
+ .block-wrapper {
+ @apply grid;
+ grid-template-areas: 'col-1 col-2 col-3';
+ grid-template-columns: 4.2vw min(65ch, 100%) 4.2vw;
+ }
+ .block-wrapper > * {
+ grid-area: col-2;
+ }
+
+ @media (min-width: 750px) {
+ .block-wrapper {
+ @apply grid w-screen;
+ grid-template-areas: 'col-1 col-2 col-3 col-4 col-5';
+ grid-template-columns:
+ 1fr
+ 6.87vw
+ minmax(65ch, 920px)
+ 6.87vw
+ 1fr;
+ }
+ .pre-indent {
+ @apply w-full;
+ grid-column: 2 / 3;
+ }
+ .post-indent {
+ @apply w-full;
+ grid-column: 3 / 4;
+ }
+ .block-wrapper > * {
+ @apply w-full;
+ grid-area: col-3;
+ }
+ }
+
+ .full-bleed {
+ @apply w-full;
+ grid-column: 1 / -1;
+ }
+}
diff --git a/web/tailwind.config.cjs b/web/tailwind.config.cjs
new file mode 100644
index 000000000..93a042ad9
--- /dev/null
+++ b/web/tailwind.config.cjs
@@ -0,0 +1,264 @@
+/** @type {import('tailwindcss').Config} */
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const plugin = require('tailwindcss/plugin')
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const colors = require('./colorConfig')
+
+const round = (num) =>
+ num
+ .toFixed(7)
+ .replace(/(\.[0-9]+?)0+$/, '$1')
+ .replace(/\.0$/, '')
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const rem = (px) => `${round(px / 16)}rem`
+const em = (px, base) => `${round(px / base)}em`
+
+module.exports = {
+ content: ['./components/**/*.{js,ts,tsx}', './pageComponents/**/*.{js,ts,tsx}'],
+ /*
+ Now instead of dark:{class} classes being applied based on prefers-color-scheme,
+ they will be applied whenever the dark class is present earlier in the HTML tree.
+ inverted -> dark
+ */
+ darkMode: 'selector',
+ theme: {
+ extend: {
+ colors: ({ theme }) => ({
+ 'moss-green': {
+ 100: 'hsl(184, 100%, 17%)',
+ 95: 'hsl(184, 100%, 24%)',
+ 90: 'hsl(184, 31%, 58%)',
+ 80: 'hsl(184, 31%, 74%)',
+ 70: 'hsl(184, 30%, 84%)',
+ 60: 'hsl(184, 31%, 89%)',
+ 50: colors['moss-green'][50],
+ },
+ 'energy-red': {
+ 100: colors['energy-red'][100],
+ 90: 'hsl(348, 100%, 67%)',
+ 80: 'hsl(347, 100%, 77%)',
+ 70: 'hsl(347, 100%, 86%)',
+ 60: 'hsl(349, 100%, 91%)',
+ 50: 'hsl(347, 100%, 96%)',
+ },
+ black: {
+ 100: 'hsl(0, 0%, 0%)',
+ 80: 'hsl(0, 0%, 20%)',
+ },
+ white: {
+ 100: colors.white[100],
+ },
+ 'slate-blue': {
+ //--bg-slate-blue
+ 100: 'hsl(206, 34%, 14%)',
+ //--bg-slate-blue-95
+ 95: 'hsl(206, 32%, 21%)',
+ 90: 'hsl(207, 14%, 37%)',
+ 80: 'hsl(207, 8%, 53%)',
+ 70: 'hsl(206, 9%, 68%)',
+ 60: 'hsl(206, 9%, 84%)',
+ 50: 'hsl(210, 8%, 90%)',
+ },
+ 'mist-blue': {
+ 100: colors['mist-blue'][100],
+ 60: 'hsl(200, 56%, 94%)',
+ },
+ 'lichen-green': {
+ 100: 'hsl(138, 67%, 94%)',
+ },
+ 'spruce-wood': {
+ 100: 'hsl(25, 100%, 92%)',
+ 90: colors['spruce-wood'][90],
+ },
+ 'heritage-red': {
+ 100: 'hsl(343, 100%, 25%)',
+ 90: 'hsl(343, 42%, 43%)',
+ 80: 'hsl(344, 32%, 62%)',
+ 70: 'hsl(344, 32%, 77%)',
+ 60: 'hsl(340, 32%, 91%)',
+ },
+ 'clear-red': {
+ 100: 'hsl(0, 100%, 46%)',
+ 90: 'hsl(0, 85%, 68%)',
+ 80: 'hsl(0, 85%, 78%)',
+ 70: 'hsl(0, 86%, 86%)',
+ 60: 'hsl(0, 88%, 94%)',
+ },
+ slate: {
+ //--default-text
+ 80: 'rgba(61, 61, 61, 1)',
+ },
+ green: {
+ 100: 'hsl(118, 44%, 35%)',
+ 90: 'hsl(118, 44%, 50%)',
+ //--mid-green
+ //--bg-moss-green
+ //--bg-mid-green
+ 50: colors.green[50],
+ },
+ yellow: {
+ //--mid-yellow
+ //--bg-mid-yellow
+ 50: colors.yellow[50],
+ },
+ blue: {
+ //--mid-blue
+ //--bg-mid-blue
+ 50: colors.blue[50],
+ },
+ orange: {
+ 100: 'hsl(34, 100%, 34%)',
+ 90: 'hsl(34, 100%, 50%)',
+ //--mid-orange
+ //--bg-mid-orange
+ 50: colors.orange[50],
+ },
+ grey: {
+ 100: 'hsl(0, 0%, 9%)',
+ 90: 'hsl(0, 0%, 24%)',
+ 80: 'hsl(0, 0%, 34%)',
+ 70: 'hsl(0, 0%, 40%)',
+ 60: 'hsl(0, 0%, 44%)',
+ 50: 'hsl(0, 0%, 55%)',
+ 40: 'hsl(0, 0%, 75%)',
+ 30: 'hsl(0, 0%, 86%)',
+ 20: 'hsl(0, 0%, 92%)',
+ 10: 'hsl(0, 0%, 97%)',
+ },
+ 'transparent-black': 'theme(colors.black.100)/20',
+ 'transparent-white': 'theme(colors.white.100)/20',
+ }),
+ spacing: ({ theme }) => ({
+ xs: 'calc((4 / 16) * theme(fontSize.base))',
+ sm: 'calc((8 / 16) * theme(fontSize.base))',
+ md: 'calc((16 / 16) * theme(fontSize.base))',
+ lg: 'calc((24 / 16) * theme(fontSize.base))',
+ xl: 'calc((32 / 16) * theme(fontSize.base))',
+ '2xl': 'calc((40 / 16) * theme(fontSize.base))',
+ '3xl': 'calc((56 / 16) * theme(fontSize.base))',
+ '4xl': 'calc((96 / 16) * theme(fontSize.base))',
+ }),
+ fontSize: {
+ //--typeScale-00
+ xs: ['clamp(calc(11.11 / 16 * 1rem), 0.19vw + 0.65rem, calc(14.08 / 16 * 1rem))'],
+ //--typeScale-05
+ sm: ['clamp(calc(14.61 / 16 * 1rem), 0.33vw + 0.84rem, calc(19.68 / 16 * 1rem))'],
+ //--typeScale-1
+ base: ['clamp(calc(16.00 / 16 * 1rem), 0.39vw + 0.91rem, calc(22.00 / 16 * 1rem))'],
+ //--typeScale-2
+ md: ['clamp(calc(19.20 / 16 * 1rem), 0.54vw + 1.07rem, calc(27.50 / 16 * 1rem))'],
+ //--typeScale-3
+ lg: ['clamp(calc(23.04 / 16 * 1rem), 0.73vw + 1.27rem, calc(34.38 / 16 * 1rem))'],
+ //--typeScale-4
+ xl: ['clamp(calc(27.65 / 16 * 1rem), 0.99vw + 1.5rem, calc(42.97 / 16 * 1rem))'],
+ //--typeScale-4_5
+ '2xl': ['clamp(calc(33.73 / 16 * 1rem), 1.38vw + 1.785rem, calc(55.055 / 16 * 1rem))'],
+ //--typeScale-5
+ '3xl': ['clamp(calc(39.81 / 16 * 1rem), 1.77vw + 2.07rem, calc(67.14 / 16 * 1rem))'],
+ //--typeScale-6
+ '4xl': ['clamp(calc(45.89 / 16 * 1rem), 2.16vw + 2.355rem, calc(79.225 / 16 * 1rem))'],
+ //--typeScale-7
+ '5xl': ['clamp(calc(51.97 / 16 * 1rem), 2.55vw + 2.64rem, calc(91.31 / 16 * 1rem))'],
+ },
+ fontWeight: {
+ semibolder: 650,
+ //--fontWeight-bold: tw -> semibold
+ //--fontWeight-medium: tw -> medium
+ //--fontWeight-regular: tw -> normal
+ },
+ lineHeight: {
+ //--lineHeight-1
+ inherit: 'inherit',
+ //--lineHeight-2
+ earthy: 1.2,
+ //--lineHeight-2_5
+ cloudy: 1.35,
+ //-lineHeight-3
+ planetary: 1.5,
+ },
+ maxWidth: {
+ viewport: '1920px',
+ },
+ minWidth: {
+ viewport: '375',
+ },
+ padding: {
+ 'layout-sm': 'clamp(16px, calc(-38.3689px + 14.4984vw), 250px)',
+ 'layout-md': 'clamp(16px, calc(-69.4369px + 22.7832vw), 368px)',
+ 'layout-lg': 'clamp(16px, calc(-101.4757px + 31.3269vw), 500px)',
+ },
+ typography: (theme) => ({
+ DEFAULT: {
+ css: {
+ fontSize: theme('fontSize.base'),
+ lineHeight: theme('lineHeight.planetary'),
+ h2: {
+ fontSize: em(18, 16), //theme('fontSize.base'),
+ lineHeight: theme('lineHeight.inherit'),
+ fontWeight: theme('fontWeight.medium'),
+ marginTop: theme('spacing.sm'),
+ marginBottom: theme('spacing.sm'),
+ paddingLeft: theme('padding.layout-lg'),
+ paddingRight: theme('padding.layout-lg'),
+ },
+ h3: {
+ fontSize: em(16, 16), //theme('fontSize.base'),
+ lineHeight: theme('lineHeight.inherit'),
+ fontWeight: theme('fontWeight.medium'),
+ marginTop: theme('spacing.sm'),
+ marginBottom: theme('spacing.sm'),
+ paddingLeft: theme('padding.layout-lg'),
+ paddingRight: theme('padding.layout-lg'),
+ },
+ ol: {
+ marginLeft: theme('padding.layout-lg'),
+ marginRight: theme('padding.layout-lg'),
+ },
+ ul: {
+ marginLeft: theme('padding.layout-lg'),
+ marginRight: theme('padding.layout-lg'),
+ },
+ 'ul ul, ul ol, ol ul, ol ol': {
+ paddingLeft: em(38, 24),
+ marginLeft: '0px',
+ marginRight: '0px',
+ },
+ 'ol > li': {
+ marginLeft: em(8, 14),
+ },
+ 'ul > li': {
+ marginLeft: em(8, 14),
+ },
+ },
+ },
+ envis: {
+ css: {
+ '--tw-prose-body': theme('colors.slate.80'),
+ '--tw-prose-bullets': theme('colors.slate.80'),
+ '--tw-prose-counters': theme('colors.slate.80'),
+ //inverted
+ '--tw-prose-invert-headings': theme('colors.white.100'),
+ },
+ },
+ }),
+ },
+ },
+ plugins: [
+ require('@tailwindcss/typography'),
+ plugin(function ({ matchVariant }) {
+ matchVariant(
+ 'nth',
+ (value) => {
+ return `&:nth-child(${value})`
+ },
+ {
+ values: {
+ 1: '1',
+ 2: '2',
+ 3: '3',
+ },
+ },
+ )
+ }),
+ ],
+}
diff --git a/web/types/types.ts b/web/types/types.ts
index 3f3b238da..d6b71568d 100644
--- a/web/types/types.ts
+++ b/web/types/types.ts
@@ -267,6 +267,8 @@ export type BackgroundColours =
export type DesignOptions = {
background?: BackgroundColours
+ utility: string
+ dark: boolean
imagePosition?: TeaserImagePosition
imageSize?: TeaserImageSize
}